001package org.hl7.fhir.r5.formats;
002
003// generated
004
005/*
006  Copyright (c) 2011+, HL7, Inc.
007  All rights reserved.
008  
009  Redistribution and use in source and binary forms, with or without modification, \
010  are permitted provided that the following conditions are met:
011  
012   * Redistributions of source code must retain the above copyright notice, this \
013     list of conditions and the following disclaimer.
014   * Redistributions in binary form must reproduce the above copyright notice, \
015     this list of conditions and the following disclaimer in the documentation \
016     and/or other materials provided with the distribution.
017   * Neither the name of HL7 nor the names of its contributors may be used to 
018     endorse or promote products derived from this software without specific 
019     prior written permission.
020  
021  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND \
022  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED \
023  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \
024  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, \
025  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT \
026  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR \
027  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, \
028  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) \
029  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE \
030  POSSIBILITY OF SUCH DAMAGE.
031  */
032
033// Generated on Thu, Mar 23, 2023 19:59+1100 for FHIR v5.0.0
034
035
036
037import org.hl7.fhir.r5.model.*;
038import org.hl7.fhir.r5.model.Enumerations.FHIRVersion;
039import org.xmlpull.v1.*;
040import org.hl7.fhir.utilities.Utilities;
041import org.hl7.fhir.exceptions.FHIRFormatError;
042import org.hl7.fhir.exceptions.FHIRException;
043import java.io.IOException;
044
045public class XmlParser extends XmlParserBase {
046
047  public XmlParser() {
048    super();
049  }
050
051  public XmlParser(boolean allowUnknownContent) {
052    super();
053    setAllowUnknownContent(allowUnknownContent);
054  }
055
056  protected boolean parseBaseContent(int eventType, XmlPullParser xpp, Base res) throws XmlPullParserException, IOException, FHIRFormatError {
057    return false;
058  }
059
060  @SuppressWarnings("unchecked")
061  protected <E extends Enum<E>> Enumeration<E> parseEnumeration(XmlPullParser xpp, E item, EnumFactory e) throws XmlPullParserException, IOException, FHIRFormatError {
062    Enumeration<E> res = new Enumeration<E>(e);
063    parseElementAttributes(xpp, res);
064    res.setValue((E) e.fromCode(xpp.getAttributeValue(null, "value")));
065    next(xpp);
066    int eventType = nextNoWhitespace(xpp);
067    while (eventType != XmlPullParser.END_TAG) {
068      if (!parseElementContent(eventType, xpp, res))
069        unknownContent(xpp);
070      eventType = nextNoWhitespace(xpp);
071    }
072    next(xpp);
073    parseElementClose(res);
074    return res;
075  }
076
077  protected DateType parseDate(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
078    DateType res = new DateType(xpp.getAttributeValue(null, "value"));
079    parseElementAttributes(xpp, res);
080    next(xpp);
081    int eventType = nextNoWhitespace(xpp);
082    while (eventType != XmlPullParser.END_TAG) {
083      if (!parseElementContent(eventType, xpp, res))
084        unknownContent(xpp);
085      eventType = nextNoWhitespace(xpp);
086    }
087    next(xpp);
088    parseElementClose(res);
089    return res;
090  }
091
092  protected DateTimeType parseDateTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
093    DateTimeType res = new DateTimeType(xpp.getAttributeValue(null, "value"));
094    parseElementAttributes(xpp, res);
095    next(xpp);
096    int eventType = nextNoWhitespace(xpp);
097    while (eventType != XmlPullParser.END_TAG) {
098      if (!parseElementContent(eventType, xpp, res))
099        unknownContent(xpp);
100      eventType = nextNoWhitespace(xpp);
101    }
102    next(xpp);
103    parseElementClose(res);
104    return res;
105  }
106
107  protected CodeType parseCode(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
108    CodeType res = new CodeType(xpp.getAttributeValue(null, "value"));
109    parseElementAttributes(xpp, res);
110    next(xpp);
111    int eventType = nextNoWhitespace(xpp);
112    while (eventType != XmlPullParser.END_TAG) {
113      if (!parseElementContent(eventType, xpp, res))
114        unknownContent(xpp);
115      eventType = nextNoWhitespace(xpp);
116    }
117    next(xpp);
118    parseElementClose(res);
119    return res;
120  }
121
122  protected StringType parseString(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
123    StringType res = new StringType(xpp.getAttributeValue(null, "value"));
124    parseElementAttributes(xpp, res);
125    next(xpp);
126    int eventType = nextNoWhitespace(xpp);
127    while (eventType != XmlPullParser.END_TAG) {
128      if (!parseElementContent(eventType, xpp, res))
129        unknownContent(xpp);
130      eventType = nextNoWhitespace(xpp);
131    }
132    next(xpp);
133    parseElementClose(res);
134    return res;
135  }
136
137  protected IntegerType parseInteger(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
138    IntegerType res = new IntegerType(xpp.getAttributeValue(null, "value"));
139    parseElementAttributes(xpp, res);
140    next(xpp);
141    int eventType = nextNoWhitespace(xpp);
142    while (eventType != XmlPullParser.END_TAG) {
143      if (!parseElementContent(eventType, xpp, res))
144        unknownContent(xpp);
145      eventType = nextNoWhitespace(xpp);
146    }
147    next(xpp);
148    parseElementClose(res);
149    return res;
150  }
151
152  protected Integer64Type parseInteger64(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
153    Integer64Type res = new Integer64Type(xpp.getAttributeValue(null, "value"));
154    parseElementAttributes(xpp, res);
155    next(xpp);
156    int eventType = nextNoWhitespace(xpp);
157    while (eventType != XmlPullParser.END_TAG) {
158      if (!parseElementContent(eventType, xpp, res))
159        unknownContent(xpp);
160      eventType = nextNoWhitespace(xpp);
161    }
162    next(xpp);
163    parseElementClose(res);
164    return res;
165  }
166
167  protected OidType parseOid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
168    OidType res = new OidType(xpp.getAttributeValue(null, "value"));
169    parseElementAttributes(xpp, res);
170    next(xpp);
171    int eventType = nextNoWhitespace(xpp);
172    while (eventType != XmlPullParser.END_TAG) {
173      if (!parseElementContent(eventType, xpp, res))
174        unknownContent(xpp);
175      eventType = nextNoWhitespace(xpp);
176    }
177    next(xpp);
178    parseElementClose(res);
179    return res;
180  }
181
182  protected CanonicalType parseCanonical(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
183    CanonicalType res = new CanonicalType(xpp.getAttributeValue(null, "value"));
184    parseElementAttributes(xpp, res);
185    next(xpp);
186    int eventType = nextNoWhitespace(xpp);
187    while (eventType != XmlPullParser.END_TAG) {
188      if (!parseElementContent(eventType, xpp, res))
189        unknownContent(xpp);
190      eventType = nextNoWhitespace(xpp);
191    }
192    next(xpp);
193    parseElementClose(res);
194    return res;
195  }
196
197  protected UriType parseUri(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
198    UriType res = new UriType(xpp.getAttributeValue(null, "value"));
199    parseElementAttributes(xpp, res);
200    next(xpp);
201    int eventType = nextNoWhitespace(xpp);
202    while (eventType != XmlPullParser.END_TAG) {
203      if (!parseElementContent(eventType, xpp, res))
204        unknownContent(xpp);
205      eventType = nextNoWhitespace(xpp);
206    }
207    next(xpp);
208    parseElementClose(res);
209    return res;
210  }
211
212  protected UuidType parseUuid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
213    UuidType res = new UuidType(xpp.getAttributeValue(null, "value"));
214    parseElementAttributes(xpp, res);
215    next(xpp);
216    int eventType = nextNoWhitespace(xpp);
217    while (eventType != XmlPullParser.END_TAG) {
218      if (!parseElementContent(eventType, xpp, res))
219        unknownContent(xpp);
220      eventType = nextNoWhitespace(xpp);
221    }
222    next(xpp);
223    parseElementClose(res);
224    return res;
225  }
226
227  protected UrlType parseUrl(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
228    UrlType res = new UrlType(xpp.getAttributeValue(null, "value"));
229    parseElementAttributes(xpp, res);
230    next(xpp);
231    int eventType = nextNoWhitespace(xpp);
232    while (eventType != XmlPullParser.END_TAG) {
233      if (!parseElementContent(eventType, xpp, res))
234        unknownContent(xpp);
235      eventType = nextNoWhitespace(xpp);
236    }
237    next(xpp);
238    parseElementClose(res);
239    return res;
240  }
241
242  protected InstantType parseInstant(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
243    InstantType res = new InstantType(xpp.getAttributeValue(null, "value"));
244    parseElementAttributes(xpp, res);
245    next(xpp);
246    int eventType = nextNoWhitespace(xpp);
247    while (eventType != XmlPullParser.END_TAG) {
248      if (!parseElementContent(eventType, xpp, res))
249        unknownContent(xpp);
250      eventType = nextNoWhitespace(xpp);
251    }
252    next(xpp);
253    parseElementClose(res);
254    return res;
255  }
256
257  protected BooleanType parseBoolean(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
258    BooleanType res = new BooleanType(xpp.getAttributeValue(null, "value"));
259    parseElementAttributes(xpp, res);
260    next(xpp);
261    int eventType = nextNoWhitespace(xpp);
262    while (eventType != XmlPullParser.END_TAG) {
263      if (!parseElementContent(eventType, xpp, res))
264        unknownContent(xpp);
265      eventType = nextNoWhitespace(xpp);
266    }
267    next(xpp);
268    parseElementClose(res);
269    return res;
270  }
271
272  protected Base64BinaryType parseBase64Binary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
273    Base64BinaryType res = new Base64BinaryType(xpp.getAttributeValue(null, "value"));
274    parseElementAttributes(xpp, res);
275    next(xpp);
276    int eventType = nextNoWhitespace(xpp);
277    while (eventType != XmlPullParser.END_TAG) {
278      if (!parseElementContent(eventType, xpp, res))
279        unknownContent(xpp);
280      eventType = nextNoWhitespace(xpp);
281    }
282    next(xpp);
283    parseElementClose(res);
284    return res;
285  }
286
287  protected UnsignedIntType parseUnsignedInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
288    UnsignedIntType res = new UnsignedIntType(xpp.getAttributeValue(null, "value"));
289    parseElementAttributes(xpp, res);
290    next(xpp);
291    int eventType = nextNoWhitespace(xpp);
292    while (eventType != XmlPullParser.END_TAG) {
293      if (!parseElementContent(eventType, xpp, res))
294        unknownContent(xpp);
295      eventType = nextNoWhitespace(xpp);
296    }
297    next(xpp);
298    parseElementClose(res);
299    return res;
300  }
301
302  protected MarkdownType parseMarkdown(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
303    MarkdownType res = new MarkdownType(xpp.getAttributeValue(null, "value"));
304    parseElementAttributes(xpp, res);
305    next(xpp);
306    int eventType = nextNoWhitespace(xpp);
307    while (eventType != XmlPullParser.END_TAG) {
308      if (!parseElementContent(eventType, xpp, res))
309        unknownContent(xpp);
310      eventType = nextNoWhitespace(xpp);
311    }
312    next(xpp);
313    parseElementClose(res);
314    return res;
315  }
316
317  protected TimeType parseTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
318    TimeType res = new TimeType(xpp.getAttributeValue(null, "value"));
319    parseElementAttributes(xpp, res);
320    next(xpp);
321    int eventType = nextNoWhitespace(xpp);
322    while (eventType != XmlPullParser.END_TAG) {
323      if (!parseElementContent(eventType, xpp, res))
324        unknownContent(xpp);
325      eventType = nextNoWhitespace(xpp);
326    }
327    next(xpp);
328    parseElementClose(res);
329    return res;
330  }
331
332  protected IdType parseId(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
333    IdType res = new IdType(xpp.getAttributeValue(null, "value"));
334    parseElementAttributes(xpp, res);
335    next(xpp);
336    int eventType = nextNoWhitespace(xpp);
337    while (eventType != XmlPullParser.END_TAG) {
338      if (!parseElementContent(eventType, xpp, res))
339        unknownContent(xpp);
340      eventType = nextNoWhitespace(xpp);
341    }
342    next(xpp);
343    parseElementClose(res);
344    return res;
345  }
346
347  protected PositiveIntType parsePositiveInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
348    PositiveIntType res = new PositiveIntType(xpp.getAttributeValue(null, "value"));
349    parseElementAttributes(xpp, res);
350    next(xpp);
351    int eventType = nextNoWhitespace(xpp);
352    while (eventType != XmlPullParser.END_TAG) {
353      if (!parseElementContent(eventType, xpp, res))
354        unknownContent(xpp);
355      eventType = nextNoWhitespace(xpp);
356    }
357    next(xpp);
358    parseElementClose(res);
359    return res;
360  }
361
362  protected DecimalType parseDecimal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
363    DecimalType res = new DecimalType(xpp.getAttributeValue(null, "value"));
364    parseElementAttributes(xpp, res);
365    next(xpp);
366    int eventType = nextNoWhitespace(xpp);
367    while (eventType != XmlPullParser.END_TAG) {
368      if (!parseElementContent(eventType, xpp, res))
369        unknownContent(xpp);
370      eventType = nextNoWhitespace(xpp);
371    }
372    next(xpp);
373    parseElementClose(res);
374    return res;
375  }
376
377  protected boolean parseBackboneElementContent(int eventType, XmlPullParser xpp, BackboneElement res) throws XmlPullParserException, IOException, FHIRFormatError {
378    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) {
379      res.getModifierExtension().add(parseExtension(xpp));
380    } else if (!parseElementContent(eventType, xpp, res)){ 
381        return false;
382    }
383    return true;
384  }
385
386  protected boolean parseBackboneTypeContent(int eventType, XmlPullParser xpp, BackboneType res) throws XmlPullParserException, IOException, FHIRFormatError {
387    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) {
388      res.getModifierExtension().add(parseExtension(xpp));
389    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
390        return false;
391    }
392    return true;
393  }
394
395  protected boolean parseDataTypeContent(int eventType, XmlPullParser xpp, DataType res) throws XmlPullParserException, IOException, FHIRFormatError {
396    if (!parseElementContent(eventType, xpp, res)){ 
397        return false;
398    }
399    return true;
400  }
401
402  protected boolean parseElementContent(int eventType, XmlPullParser xpp, Element res) throws XmlPullParserException, IOException, FHIRFormatError {
403    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) {
404      res.getExtension().add(parseExtension(xpp));
405    } else if (!parseBaseContent(eventType, xpp, res)){ 
406        return false;
407    }
408    return true;
409  }
410
411  protected Address parseAddress(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
412    Address res = new Address();
413    parseElementAttributes(xpp, res);
414    next(xpp);
415    int eventType = nextNoWhitespace(xpp);
416    while (eventType != XmlPullParser.END_TAG) {
417    if (!parseAddressContent(eventType, xpp, res))
418        unknownContent(xpp);
419      eventType = nextNoWhitespace(xpp);
420    }
421    next(xpp);
422    parseElementClose(res);
423    return res;
424  }
425
426  protected boolean parseAddressContent(int eventType, XmlPullParser xpp, Address res) throws XmlPullParserException, IOException, FHIRFormatError {
427    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
428      res.setUseElement(parseEnumeration(xpp, Address.AddressUse.NULL, new Address.AddressUseEnumFactory()));
429    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
430      res.setTypeElement(parseEnumeration(xpp, Address.AddressType.NULL, new Address.AddressTypeEnumFactory()));
431    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
432      res.setTextElement(parseString(xpp));
433    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("line")) {
434      res.getLine().add(parseString(xpp));
435    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("city")) {
436      res.setCityElement(parseString(xpp));
437    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("district")) {
438      res.setDistrictElement(parseString(xpp));
439    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
440      res.setStateElement(parseString(xpp));
441    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("postalCode")) {
442      res.setPostalCodeElement(parseString(xpp));
443    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
444      res.setCountryElement(parseString(xpp));
445    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
446      res.setPeriod(parsePeriod(xpp));
447    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
448      return false;
449    }
450    return true;
451  }
452
453  protected Age parseAge(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
454    Age res = new Age();
455    parseElementAttributes(xpp, res);
456    next(xpp);
457    int eventType = nextNoWhitespace(xpp);
458    while (eventType != XmlPullParser.END_TAG) {
459    if (!parseAgeContent(eventType, xpp, res))
460        unknownContent(xpp);
461      eventType = nextNoWhitespace(xpp);
462    }
463    next(xpp);
464    parseElementClose(res);
465    return res;
466  }
467
468  protected boolean parseAgeContent(int eventType, XmlPullParser xpp, Age res) throws XmlPullParserException, IOException, FHIRFormatError {
469    if (!parseQuantityContent(eventType, xpp, res)){ 
470      return false;
471    }
472    return true;
473  }
474
475  protected Annotation parseAnnotation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
476    Annotation res = new Annotation();
477    parseElementAttributes(xpp, res);
478    next(xpp);
479    int eventType = nextNoWhitespace(xpp);
480    while (eventType != XmlPullParser.END_TAG) {
481    if (!parseAnnotationContent(eventType, xpp, res))
482        unknownContent(xpp);
483      eventType = nextNoWhitespace(xpp);
484    }
485    next(xpp);
486    parseElementClose(res);
487    return res;
488  }
489
490  protected boolean parseAnnotationContent(int eventType, XmlPullParser xpp, Annotation res) throws XmlPullParserException, IOException, FHIRFormatError {
491    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "author")) {
492      res.setAuthor(parseType("author", xpp));
493    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
494      res.setTimeElement(parseDateTime(xpp));
495    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
496      res.setTextElement(parseMarkdown(xpp));
497    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
498      return false;
499    }
500    return true;
501  }
502
503  protected Attachment parseAttachment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
504    Attachment res = new Attachment();
505    parseElementAttributes(xpp, res);
506    next(xpp);
507    int eventType = nextNoWhitespace(xpp);
508    while (eventType != XmlPullParser.END_TAG) {
509    if (!parseAttachmentContent(eventType, xpp, res))
510        unknownContent(xpp);
511      eventType = nextNoWhitespace(xpp);
512    }
513    next(xpp);
514    parseElementClose(res);
515    return res;
516  }
517
518  protected boolean parseAttachmentContent(int eventType, XmlPullParser xpp, Attachment res) throws XmlPullParserException, IOException, FHIRFormatError {
519    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
520      res.setContentTypeElement(parseCode(xpp));
521    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
522      res.setLanguageElement(parseCode(xpp));
523    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
524      res.setDataElement(parseBase64Binary(xpp));
525    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
526      res.setUrlElement(parseUrl(xpp));
527    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("size")) {
528      res.setSizeElement(parseInteger64(xpp));
529    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hash")) {
530      res.setHashElement(parseBase64Binary(xpp));
531    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
532      res.setTitleElement(parseString(xpp));
533    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("creation")) {
534      res.setCreationElement(parseDateTime(xpp));
535    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("height")) {
536      res.setHeightElement(parsePositiveInt(xpp));
537    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("width")) {
538      res.setWidthElement(parsePositiveInt(xpp));
539    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frames")) {
540      res.setFramesElement(parsePositiveInt(xpp));
541    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
542      res.setDurationElement(parseDecimal(xpp));
543    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pages")) {
544      res.setPagesElement(parsePositiveInt(xpp));
545    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
546      return false;
547    }
548    return true;
549  }
550
551  protected Availability parseAvailability(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
552    Availability res = new Availability();
553    parseElementAttributes(xpp, res);
554    next(xpp);
555    int eventType = nextNoWhitespace(xpp);
556    while (eventType != XmlPullParser.END_TAG) {
557    if (!parseAvailabilityContent(eventType, xpp, res))
558        unknownContent(xpp);
559      eventType = nextNoWhitespace(xpp);
560    }
561    next(xpp);
562    parseElementClose(res);
563    return res;
564  }
565
566  protected boolean parseAvailabilityContent(int eventType, XmlPullParser xpp, Availability res) throws XmlPullParserException, IOException, FHIRFormatError {
567    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
568      res.getAvailableTime().add(parseAvailabilityAvailableTimeComponent(xpp));
569    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailableTime")) {
570      res.getNotAvailableTime().add(parseAvailabilityNotAvailableTimeComponent(xpp));
571    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
572      return false;
573    }
574    return true;
575  }
576
577  protected Availability.AvailabilityAvailableTimeComponent parseAvailabilityAvailableTimeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
578    Availability.AvailabilityAvailableTimeComponent res = new Availability.AvailabilityAvailableTimeComponent();
579    parseElementAttributes(xpp, res);
580    next(xpp);
581    int eventType = nextNoWhitespace(xpp);
582    while (eventType != XmlPullParser.END_TAG) {
583    if (!parseAvailabilityAvailableTimeComponentContent(eventType, xpp, res))
584        unknownContent(xpp);
585      eventType = nextNoWhitespace(xpp);
586    }
587    next(xpp);
588    parseElementClose(res);
589    return res;
590  }
591
592  protected boolean parseAvailabilityAvailableTimeComponentContent(int eventType, XmlPullParser xpp, Availability.AvailabilityAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
593    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
594      res.getDaysOfWeek().add(parseEnumeration(xpp, Enumerations.DaysOfWeek.NULL, new Enumerations.DaysOfWeekEnumFactory()));
595    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
596      res.setAllDayElement(parseBoolean(xpp));
597    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
598      res.setAvailableStartTimeElement(parseTime(xpp));
599    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
600      res.setAvailableEndTimeElement(parseTime(xpp));
601    } else if (!parseElementContent(eventType, xpp, res)){ 
602      return false;
603    }
604    return true;
605  }
606
607  protected Availability.AvailabilityNotAvailableTimeComponent parseAvailabilityNotAvailableTimeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
608    Availability.AvailabilityNotAvailableTimeComponent res = new Availability.AvailabilityNotAvailableTimeComponent();
609    parseElementAttributes(xpp, res);
610    next(xpp);
611    int eventType = nextNoWhitespace(xpp);
612    while (eventType != XmlPullParser.END_TAG) {
613    if (!parseAvailabilityNotAvailableTimeComponentContent(eventType, xpp, res))
614        unknownContent(xpp);
615      eventType = nextNoWhitespace(xpp);
616    }
617    next(xpp);
618    parseElementClose(res);
619    return res;
620  }
621
622  protected boolean parseAvailabilityNotAvailableTimeComponentContent(int eventType, XmlPullParser xpp, Availability.AvailabilityNotAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
623    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
624      res.setDescriptionElement(parseString(xpp));
625    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
626      res.setDuring(parsePeriod(xpp));
627    } else if (!parseElementContent(eventType, xpp, res)){ 
628      return false;
629    }
630    return true;
631  }
632
633  protected CodeableConcept parseCodeableConcept(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
634    CodeableConcept res = new CodeableConcept();
635    parseElementAttributes(xpp, res);
636    next(xpp);
637    int eventType = nextNoWhitespace(xpp);
638    while (eventType != XmlPullParser.END_TAG) {
639    if (!parseCodeableConceptContent(eventType, xpp, res))
640        unknownContent(xpp);
641      eventType = nextNoWhitespace(xpp);
642    }
643    next(xpp);
644    parseElementClose(res);
645    return res;
646  }
647
648  protected boolean parseCodeableConceptContent(int eventType, XmlPullParser xpp, CodeableConcept res) throws XmlPullParserException, IOException, FHIRFormatError {
649    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coding")) {
650      res.getCoding().add(parseCoding(xpp));
651    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
652      res.setTextElement(parseString(xpp));
653    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
654      return false;
655    }
656    return true;
657  }
658
659  protected CodeableReference parseCodeableReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
660    CodeableReference res = new CodeableReference();
661    parseElementAttributes(xpp, res);
662    next(xpp);
663    int eventType = nextNoWhitespace(xpp);
664    while (eventType != XmlPullParser.END_TAG) {
665    if (!parseCodeableReferenceContent(eventType, xpp, res))
666        unknownContent(xpp);
667      eventType = nextNoWhitespace(xpp);
668    }
669    next(xpp);
670    parseElementClose(res);
671    return res;
672  }
673
674  protected boolean parseCodeableReferenceContent(int eventType, XmlPullParser xpp, CodeableReference res) throws XmlPullParserException, IOException, FHIRFormatError {
675    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
676      res.setConcept(parseCodeableConcept(xpp));
677    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
678      res.setReference(parseReference(xpp));
679    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
680      return false;
681    }
682    return true;
683  }
684
685  protected Coding parseCoding(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
686    Coding res = new Coding();
687    parseElementAttributes(xpp, res);
688    next(xpp);
689    int eventType = nextNoWhitespace(xpp);
690    while (eventType != XmlPullParser.END_TAG) {
691    if (!parseCodingContent(eventType, xpp, res))
692        unknownContent(xpp);
693      eventType = nextNoWhitespace(xpp);
694    }
695    next(xpp);
696    parseElementClose(res);
697    return res;
698  }
699
700  protected boolean parseCodingContent(int eventType, XmlPullParser xpp, Coding res) throws XmlPullParserException, IOException, FHIRFormatError {
701    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
702      res.setSystemElement(parseUri(xpp));
703    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
704      res.setVersionElement(parseString(xpp));
705    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
706      res.setCodeElement(parseCode(xpp));
707    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
708      res.setDisplayElement(parseString(xpp));
709    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userSelected")) {
710      res.setUserSelectedElement(parseBoolean(xpp));
711    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
712      return false;
713    }
714    return true;
715  }
716
717  protected ContactDetail parseContactDetail(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
718    ContactDetail res = new ContactDetail();
719    parseElementAttributes(xpp, res);
720    next(xpp);
721    int eventType = nextNoWhitespace(xpp);
722    while (eventType != XmlPullParser.END_TAG) {
723    if (!parseContactDetailContent(eventType, xpp, res))
724        unknownContent(xpp);
725      eventType = nextNoWhitespace(xpp);
726    }
727    next(xpp);
728    parseElementClose(res);
729    return res;
730  }
731
732  protected boolean parseContactDetailContent(int eventType, XmlPullParser xpp, ContactDetail res) throws XmlPullParserException, IOException, FHIRFormatError {
733    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
734      res.setNameElement(parseString(xpp));
735    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
736      res.getTelecom().add(parseContactPoint(xpp));
737    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
738      return false;
739    }
740    return true;
741  }
742
743  protected ContactPoint parseContactPoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
744    ContactPoint res = new ContactPoint();
745    parseElementAttributes(xpp, res);
746    next(xpp);
747    int eventType = nextNoWhitespace(xpp);
748    while (eventType != XmlPullParser.END_TAG) {
749    if (!parseContactPointContent(eventType, xpp, res))
750        unknownContent(xpp);
751      eventType = nextNoWhitespace(xpp);
752    }
753    next(xpp);
754    parseElementClose(res);
755    return res;
756  }
757
758  protected boolean parseContactPointContent(int eventType, XmlPullParser xpp, ContactPoint res) throws XmlPullParserException, IOException, FHIRFormatError {
759    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
760      res.setSystemElement(parseEnumeration(xpp, ContactPoint.ContactPointSystem.NULL, new ContactPoint.ContactPointSystemEnumFactory()));
761    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
762      res.setValueElement(parseString(xpp));
763    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
764      res.setUseElement(parseEnumeration(xpp, ContactPoint.ContactPointUse.NULL, new ContactPoint.ContactPointUseEnumFactory()));
765    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
766      res.setRankElement(parsePositiveInt(xpp));
767    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
768      res.setPeriod(parsePeriod(xpp));
769    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
770      return false;
771    }
772    return true;
773  }
774
775  protected Contributor parseContributor(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
776    Contributor res = new Contributor();
777    parseElementAttributes(xpp, res);
778    next(xpp);
779    int eventType = nextNoWhitespace(xpp);
780    while (eventType != XmlPullParser.END_TAG) {
781    if (!parseContributorContent(eventType, xpp, res))
782        unknownContent(xpp);
783      eventType = nextNoWhitespace(xpp);
784    }
785    next(xpp);
786    parseElementClose(res);
787    return res;
788  }
789
790  protected boolean parseContributorContent(int eventType, XmlPullParser xpp, Contributor res) throws XmlPullParserException, IOException, FHIRFormatError {
791    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
792      res.setTypeElement(parseEnumeration(xpp, Contributor.ContributorType.NULL, new Contributor.ContributorTypeEnumFactory()));
793    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
794      res.setNameElement(parseString(xpp));
795    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
796      res.getContact().add(parseContactDetail(xpp));
797    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
798      return false;
799    }
800    return true;
801  }
802
803  protected Count parseCount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
804    Count res = new Count();
805    parseElementAttributes(xpp, res);
806    next(xpp);
807    int eventType = nextNoWhitespace(xpp);
808    while (eventType != XmlPullParser.END_TAG) {
809    if (!parseCountContent(eventType, xpp, res))
810        unknownContent(xpp);
811      eventType = nextNoWhitespace(xpp);
812    }
813    next(xpp);
814    parseElementClose(res);
815    return res;
816  }
817
818  protected boolean parseCountContent(int eventType, XmlPullParser xpp, Count res) throws XmlPullParserException, IOException, FHIRFormatError {
819    if (!parseQuantityContent(eventType, xpp, res)){ 
820      return false;
821    }
822    return true;
823  }
824
825  protected DataRequirement parseDataRequirement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
826    DataRequirement res = new DataRequirement();
827    parseElementAttributes(xpp, res);
828    next(xpp);
829    int eventType = nextNoWhitespace(xpp);
830    while (eventType != XmlPullParser.END_TAG) {
831    if (!parseDataRequirementContent(eventType, xpp, res))
832        unknownContent(xpp);
833      eventType = nextNoWhitespace(xpp);
834    }
835    next(xpp);
836    parseElementClose(res);
837    return res;
838  }
839
840  protected boolean parseDataRequirementContent(int eventType, XmlPullParser xpp, DataRequirement res) throws XmlPullParserException, IOException, FHIRFormatError {
841    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
842      res.setTypeElement(parseEnumeration(xpp, Enumerations.FHIRTypes.NULL, new Enumerations.FHIRTypesEnumFactory()));
843    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
844      res.getProfile().add(parseCanonical(xpp));
845    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
846      res.setSubject(parseType("subject", xpp));
847    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
848      res.getMustSupport().add(parseString(xpp));
849    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeFilter")) {
850      res.getCodeFilter().add(parseDataRequirementCodeFilterComponent(xpp));
851    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateFilter")) {
852      res.getDateFilter().add(parseDataRequirementDateFilterComponent(xpp));
853    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueFilter")) {
854      res.getValueFilter().add(parseDataRequirementValueFilterComponent(xpp));
855    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("limit")) {
856      res.setLimitElement(parsePositiveInt(xpp));
857    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sort")) {
858      res.getSort().add(parseDataRequirementSortComponent(xpp));
859    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
860      return false;
861    }
862    return true;
863  }
864
865  protected DataRequirement.DataRequirementCodeFilterComponent parseDataRequirementCodeFilterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
866    DataRequirement.DataRequirementCodeFilterComponent res = new DataRequirement.DataRequirementCodeFilterComponent();
867    parseElementAttributes(xpp, res);
868    next(xpp);
869    int eventType = nextNoWhitespace(xpp);
870    while (eventType != XmlPullParser.END_TAG) {
871    if (!parseDataRequirementCodeFilterComponentContent(eventType, xpp, res))
872        unknownContent(xpp);
873      eventType = nextNoWhitespace(xpp);
874    }
875    next(xpp);
876    parseElementClose(res);
877    return res;
878  }
879
880  protected boolean parseDataRequirementCodeFilterComponentContent(int eventType, XmlPullParser xpp, DataRequirement.DataRequirementCodeFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
881    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
882      res.setPathElement(parseString(xpp));
883    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
884      res.setSearchParamElement(parseString(xpp));
885    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
886      res.setValueSetElement(parseCanonical(xpp));
887    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
888      res.getCode().add(parseCoding(xpp));
889    } else if (!parseElementContent(eventType, xpp, res)){ 
890      return false;
891    }
892    return true;
893  }
894
895  protected DataRequirement.DataRequirementDateFilterComponent parseDataRequirementDateFilterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
896    DataRequirement.DataRequirementDateFilterComponent res = new DataRequirement.DataRequirementDateFilterComponent();
897    parseElementAttributes(xpp, res);
898    next(xpp);
899    int eventType = nextNoWhitespace(xpp);
900    while (eventType != XmlPullParser.END_TAG) {
901    if (!parseDataRequirementDateFilterComponentContent(eventType, xpp, res))
902        unknownContent(xpp);
903      eventType = nextNoWhitespace(xpp);
904    }
905    next(xpp);
906    parseElementClose(res);
907    return res;
908  }
909
910  protected boolean parseDataRequirementDateFilterComponentContent(int eventType, XmlPullParser xpp, DataRequirement.DataRequirementDateFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
911    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
912      res.setPathElement(parseString(xpp));
913    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
914      res.setSearchParamElement(parseString(xpp));
915    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
916      res.setValue(parseType("value", xpp));
917    } else if (!parseElementContent(eventType, xpp, res)){ 
918      return false;
919    }
920    return true;
921  }
922
923  protected DataRequirement.DataRequirementValueFilterComponent parseDataRequirementValueFilterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
924    DataRequirement.DataRequirementValueFilterComponent res = new DataRequirement.DataRequirementValueFilterComponent();
925    parseElementAttributes(xpp, res);
926    next(xpp);
927    int eventType = nextNoWhitespace(xpp);
928    while (eventType != XmlPullParser.END_TAG) {
929    if (!parseDataRequirementValueFilterComponentContent(eventType, xpp, res))
930        unknownContent(xpp);
931      eventType = nextNoWhitespace(xpp);
932    }
933    next(xpp);
934    parseElementClose(res);
935    return res;
936  }
937
938  protected boolean parseDataRequirementValueFilterComponentContent(int eventType, XmlPullParser xpp, DataRequirement.DataRequirementValueFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
939    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
940      res.setPathElement(parseString(xpp));
941    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
942      res.setSearchParamElement(parseString(xpp));
943    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
944      res.setComparatorElement(parseEnumeration(xpp, DataRequirement.ValueFilterComparator.NULL, new DataRequirement.ValueFilterComparatorEnumFactory()));
945    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
946      res.setValue(parseType("value", xpp));
947    } else if (!parseElementContent(eventType, xpp, res)){ 
948      return false;
949    }
950    return true;
951  }
952
953  protected DataRequirement.DataRequirementSortComponent parseDataRequirementSortComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
954    DataRequirement.DataRequirementSortComponent res = new DataRequirement.DataRequirementSortComponent();
955    parseElementAttributes(xpp, res);
956    next(xpp);
957    int eventType = nextNoWhitespace(xpp);
958    while (eventType != XmlPullParser.END_TAG) {
959    if (!parseDataRequirementSortComponentContent(eventType, xpp, res))
960        unknownContent(xpp);
961      eventType = nextNoWhitespace(xpp);
962    }
963    next(xpp);
964    parseElementClose(res);
965    return res;
966  }
967
968  protected boolean parseDataRequirementSortComponentContent(int eventType, XmlPullParser xpp, DataRequirement.DataRequirementSortComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
969    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
970      res.setPathElement(parseString(xpp));
971    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("direction")) {
972      res.setDirectionElement(parseEnumeration(xpp, DataRequirement.SortDirection.NULL, new DataRequirement.SortDirectionEnumFactory()));
973    } else if (!parseElementContent(eventType, xpp, res)){ 
974      return false;
975    }
976    return true;
977  }
978
979  protected Distance parseDistance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
980    Distance res = new Distance();
981    parseElementAttributes(xpp, res);
982    next(xpp);
983    int eventType = nextNoWhitespace(xpp);
984    while (eventType != XmlPullParser.END_TAG) {
985    if (!parseDistanceContent(eventType, xpp, res))
986        unknownContent(xpp);
987      eventType = nextNoWhitespace(xpp);
988    }
989    next(xpp);
990    parseElementClose(res);
991    return res;
992  }
993
994  protected boolean parseDistanceContent(int eventType, XmlPullParser xpp, Distance res) throws XmlPullParserException, IOException, FHIRFormatError {
995    if (!parseQuantityContent(eventType, xpp, res)){ 
996      return false;
997    }
998    return true;
999  }
1000
1001  protected Dosage parseDosage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1002    Dosage res = new Dosage();
1003    parseElementAttributes(xpp, res);
1004    next(xpp);
1005    int eventType = nextNoWhitespace(xpp);
1006    while (eventType != XmlPullParser.END_TAG) {
1007    if (!parseDosageContent(eventType, xpp, res))
1008        unknownContent(xpp);
1009      eventType = nextNoWhitespace(xpp);
1010    }
1011    next(xpp);
1012    parseElementClose(res);
1013    return res;
1014  }
1015
1016  protected boolean parseDosageContent(int eventType, XmlPullParser xpp, Dosage res) throws XmlPullParserException, IOException, FHIRFormatError {
1017    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
1018      res.setSequenceElement(parseInteger(xpp));
1019    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1020      res.setTextElement(parseString(xpp));
1021    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalInstruction")) {
1022      res.getAdditionalInstruction().add(parseCodeableConcept(xpp));
1023    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
1024      res.setPatientInstructionElement(parseString(xpp));
1025    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
1026      res.setTiming(parseTiming(xpp));
1027    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asNeeded")) {
1028      res.setAsNeededElement(parseBoolean(xpp));
1029    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asNeededFor")) {
1030      res.getAsNeededFor().add(parseCodeableConcept(xpp));
1031    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
1032      res.setSite(parseCodeableConcept(xpp));
1033    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
1034      res.setRoute(parseCodeableConcept(xpp));
1035    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
1036      res.setMethod(parseCodeableConcept(xpp));
1037    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseAndRate")) {
1038      res.getDoseAndRate().add(parseDosageDoseAndRateComponent(xpp));
1039    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerPeriod")) {
1040      res.getMaxDosePerPeriod().add(parseRatio(xpp));
1041    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerAdministration")) {
1042      res.setMaxDosePerAdministration(parseQuantity(xpp));
1043    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerLifetime")) {
1044      res.setMaxDosePerLifetime(parseQuantity(xpp));
1045    } else if (!parseBackboneTypeContent(eventType, xpp, res)){ 
1046      return false;
1047    }
1048    return true;
1049  }
1050
1051  protected Dosage.DosageDoseAndRateComponent parseDosageDoseAndRateComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1052    Dosage.DosageDoseAndRateComponent res = new Dosage.DosageDoseAndRateComponent();
1053    parseElementAttributes(xpp, res);
1054    next(xpp);
1055    int eventType = nextNoWhitespace(xpp);
1056    while (eventType != XmlPullParser.END_TAG) {
1057    if (!parseDosageDoseAndRateComponentContent(eventType, xpp, res))
1058        unknownContent(xpp);
1059      eventType = nextNoWhitespace(xpp);
1060    }
1061    next(xpp);
1062    parseElementClose(res);
1063    return res;
1064  }
1065
1066  protected boolean parseDosageDoseAndRateComponentContent(int eventType, XmlPullParser xpp, Dosage.DosageDoseAndRateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1067    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1068      res.setType(parseCodeableConcept(xpp));
1069    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "dose")) {
1070      res.setDose(parseType("dose", xpp));
1071    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
1072      res.setRate(parseType("rate", xpp));
1073    } else if (!parseElementContent(eventType, xpp, res)){ 
1074      return false;
1075    }
1076    return true;
1077  }
1078
1079  protected Duration parseDuration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1080    Duration res = new Duration();
1081    parseElementAttributes(xpp, res);
1082    next(xpp);
1083    int eventType = nextNoWhitespace(xpp);
1084    while (eventType != XmlPullParser.END_TAG) {
1085    if (!parseDurationContent(eventType, xpp, res))
1086        unknownContent(xpp);
1087      eventType = nextNoWhitespace(xpp);
1088    }
1089    next(xpp);
1090    parseElementClose(res);
1091    return res;
1092  }
1093
1094  protected boolean parseDurationContent(int eventType, XmlPullParser xpp, Duration res) throws XmlPullParserException, IOException, FHIRFormatError {
1095    if (!parseQuantityContent(eventType, xpp, res)){ 
1096      return false;
1097    }
1098    return true;
1099  }
1100
1101  protected ElementDefinition parseElementDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1102    ElementDefinition res = new ElementDefinition();
1103    parseElementAttributes(xpp, res);
1104    next(xpp);
1105    int eventType = nextNoWhitespace(xpp);
1106    while (eventType != XmlPullParser.END_TAG) {
1107    if (!parseElementDefinitionContent(eventType, xpp, res))
1108        unknownContent(xpp);
1109      eventType = nextNoWhitespace(xpp);
1110    }
1111    next(xpp);
1112    parseElementClose(res);
1113    return res;
1114  }
1115
1116  protected boolean parseElementDefinitionContent(int eventType, XmlPullParser xpp, ElementDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1117    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1118      res.setPathElement(parseString(xpp));
1119    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
1120      res.getRepresentation().add(parseEnumeration(xpp, ElementDefinition.PropertyRepresentation.NULL, new ElementDefinition.PropertyRepresentationEnumFactory()));
1121    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceName")) {
1122      res.setSliceNameElement(parseString(xpp));
1123    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceIsConstraining")) {
1124      res.setSliceIsConstrainingElement(parseBoolean(xpp));
1125    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1126      res.setLabelElement(parseString(xpp));
1127    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1128      res.getCode().add(parseCoding(xpp));
1129    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slicing")) {
1130      res.setSlicing(parseElementDefinitionSlicingComponent(xpp));
1131    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("short")) {
1132      res.setShortElement(parseString(xpp));
1133    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
1134      res.setDefinitionElement(parseMarkdown(xpp));
1135    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1136      res.setCommentElement(parseMarkdown(xpp));
1137    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1138      res.setRequirementsElement(parseMarkdown(xpp));
1139    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
1140      res.getAlias().add(parseString(xpp));
1141    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1142      res.setMinElement(parseUnsignedInt(xpp));
1143    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1144      res.setMaxElement(parseString(xpp));
1145    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
1146      res.setBase(parseElementDefinitionBaseComponent(xpp));
1147    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentReference")) {
1148      res.setContentReferenceElement(parseUri(xpp));
1149    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1150      res.getType().add(parseElementDefinitionTypeRefComponent(xpp));
1151    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
1152      res.setDefaultValue(parseType("defaultValue", xpp));
1153    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaningWhenMissing")) {
1154      res.setMeaningWhenMissingElement(parseMarkdown(xpp));
1155    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderMeaning")) {
1156      res.setOrderMeaningElement(parseString(xpp));
1157    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "fixed")) {
1158      res.setFixed(parseType("fixed", xpp));
1159    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "pattern")) {
1160      res.setPattern(parseType("pattern", xpp));
1161    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("example")) {
1162      res.getExample().add(parseElementDefinitionExampleComponent(xpp));
1163    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "minValue")) {
1164      res.setMinValue(parseType("minValue", xpp));
1165    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "maxValue")) {
1166      res.setMaxValue(parseType("maxValue", xpp));
1167    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
1168      res.setMaxLengthElement(parseInteger(xpp));
1169    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
1170      res.getCondition().add(parseId(xpp));
1171    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("constraint")) {
1172      res.getConstraint().add(parseElementDefinitionConstraintComponent(xpp));
1173    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustHaveValue")) {
1174      res.setMustHaveValueElement(parseBoolean(xpp));
1175    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueAlternatives")) {
1176      res.getValueAlternatives().add(parseCanonical(xpp));
1177    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
1178      res.setMustSupportElement(parseBoolean(xpp));
1179    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isModifier")) {
1180      res.setIsModifierElement(parseBoolean(xpp));
1181    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isModifierReason")) {
1182      res.setIsModifierReasonElement(parseString(xpp));
1183    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isSummary")) {
1184      res.setIsSummaryElement(parseBoolean(xpp));
1185    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
1186      res.setBinding(parseElementDefinitionBindingComponent(xpp));
1187    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
1188      res.getMapping().add(parseElementDefinitionMappingComponent(xpp));
1189    } else if (!parseBackboneTypeContent(eventType, xpp, res)){ 
1190      return false;
1191    }
1192    return true;
1193  }
1194
1195  protected ElementDefinition.ElementDefinitionSlicingComponent parseElementDefinitionSlicingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1196    ElementDefinition.ElementDefinitionSlicingComponent res = new ElementDefinition.ElementDefinitionSlicingComponent();
1197    parseElementAttributes(xpp, res);
1198    next(xpp);
1199    int eventType = nextNoWhitespace(xpp);
1200    while (eventType != XmlPullParser.END_TAG) {
1201    if (!parseElementDefinitionSlicingComponentContent(eventType, xpp, res))
1202        unknownContent(xpp);
1203      eventType = nextNoWhitespace(xpp);
1204    }
1205    next(xpp);
1206    parseElementClose(res);
1207    return res;
1208  }
1209
1210  protected boolean parseElementDefinitionSlicingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition.ElementDefinitionSlicingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1211    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("discriminator")) {
1212      res.getDiscriminator().add(parseElementDefinitionSlicingDiscriminatorComponent(xpp));
1213    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1214      res.setDescriptionElement(parseString(xpp));
1215    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ordered")) {
1216      res.setOrderedElement(parseBoolean(xpp));
1217    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rules")) {
1218      res.setRulesElement(parseEnumeration(xpp, ElementDefinition.SlicingRules.NULL, new ElementDefinition.SlicingRulesEnumFactory()));
1219    } else if (!parseElementContent(eventType, xpp, res)){ 
1220      return false;
1221    }
1222    return true;
1223  }
1224
1225  protected ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent parseElementDefinitionSlicingDiscriminatorComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1226    ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent res = new ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent();
1227    parseElementAttributes(xpp, res);
1228    next(xpp);
1229    int eventType = nextNoWhitespace(xpp);
1230    while (eventType != XmlPullParser.END_TAG) {
1231    if (!parseElementDefinitionSlicingDiscriminatorComponentContent(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 parseElementDefinitionSlicingDiscriminatorComponentContent(int eventType, XmlPullParser xpp, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1241    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1242      res.setTypeElement(parseEnumeration(xpp, ElementDefinition.DiscriminatorType.NULL, new ElementDefinition.DiscriminatorTypeEnumFactory()));
1243    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1244      res.setPathElement(parseString(xpp));
1245    } else if (!parseElementContent(eventType, xpp, res)){ 
1246      return false;
1247    }
1248    return true;
1249  }
1250
1251  protected ElementDefinition.ElementDefinitionBaseComponent parseElementDefinitionBaseComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1252    ElementDefinition.ElementDefinitionBaseComponent res = new ElementDefinition.ElementDefinitionBaseComponent();
1253    parseElementAttributes(xpp, res);
1254    next(xpp);
1255    int eventType = nextNoWhitespace(xpp);
1256    while (eventType != XmlPullParser.END_TAG) {
1257    if (!parseElementDefinitionBaseComponentContent(eventType, xpp, res))
1258        unknownContent(xpp);
1259      eventType = nextNoWhitespace(xpp);
1260    }
1261    next(xpp);
1262    parseElementClose(res);
1263    return res;
1264  }
1265
1266  protected boolean parseElementDefinitionBaseComponentContent(int eventType, XmlPullParser xpp, ElementDefinition.ElementDefinitionBaseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1267    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1268      res.setPathElement(parseString(xpp));
1269    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1270      res.setMinElement(parseUnsignedInt(xpp));
1271    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1272      res.setMaxElement(parseString(xpp));
1273    } else if (!parseElementContent(eventType, xpp, res)){ 
1274      return false;
1275    }
1276    return true;
1277  }
1278
1279  protected ElementDefinition.TypeRefComponent parseElementDefinitionTypeRefComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1280    ElementDefinition.TypeRefComponent res = new ElementDefinition.TypeRefComponent();
1281    parseElementAttributes(xpp, res);
1282    next(xpp);
1283    int eventType = nextNoWhitespace(xpp);
1284    while (eventType != XmlPullParser.END_TAG) {
1285    if (!parseElementDefinitionTypeRefComponentContent(eventType, xpp, res))
1286        unknownContent(xpp);
1287      eventType = nextNoWhitespace(xpp);
1288    }
1289    next(xpp);
1290    parseElementClose(res);
1291    return res;
1292  }
1293
1294  protected boolean parseElementDefinitionTypeRefComponentContent(int eventType, XmlPullParser xpp, ElementDefinition.TypeRefComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1295    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1296      res.setCodeElement(parseUri(xpp));
1297    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1298      res.getProfile().add(parseCanonical(xpp));
1299    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetProfile")) {
1300      res.getTargetProfile().add(parseCanonical(xpp));
1301    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("aggregation")) {
1302      res.getAggregation().add(parseEnumeration(xpp, ElementDefinition.AggregationMode.NULL, new ElementDefinition.AggregationModeEnumFactory()));
1303    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
1304      res.setVersioningElement(parseEnumeration(xpp, ElementDefinition.ReferenceVersionRules.NULL, new ElementDefinition.ReferenceVersionRulesEnumFactory()));
1305    } else if (!parseElementContent(eventType, xpp, res)){ 
1306      return false;
1307    }
1308    return true;
1309  }
1310
1311  protected ElementDefinition.ElementDefinitionExampleComponent parseElementDefinitionExampleComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1312    ElementDefinition.ElementDefinitionExampleComponent res = new ElementDefinition.ElementDefinitionExampleComponent();
1313    parseElementAttributes(xpp, res);
1314    next(xpp);
1315    int eventType = nextNoWhitespace(xpp);
1316    while (eventType != XmlPullParser.END_TAG) {
1317    if (!parseElementDefinitionExampleComponentContent(eventType, xpp, res))
1318        unknownContent(xpp);
1319      eventType = nextNoWhitespace(xpp);
1320    }
1321    next(xpp);
1322    parseElementClose(res);
1323    return res;
1324  }
1325
1326  protected boolean parseElementDefinitionExampleComponentContent(int eventType, XmlPullParser xpp, ElementDefinition.ElementDefinitionExampleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1327    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1328      res.setLabelElement(parseString(xpp));
1329    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1330      res.setValue(parseType("value", xpp));
1331    } else if (!parseElementContent(eventType, xpp, res)){ 
1332      return false;
1333    }
1334    return true;
1335  }
1336
1337  protected ElementDefinition.ElementDefinitionConstraintComponent parseElementDefinitionConstraintComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1338    ElementDefinition.ElementDefinitionConstraintComponent res = new ElementDefinition.ElementDefinitionConstraintComponent();
1339    parseElementAttributes(xpp, res);
1340    next(xpp);
1341    int eventType = nextNoWhitespace(xpp);
1342    while (eventType != XmlPullParser.END_TAG) {
1343    if (!parseElementDefinitionConstraintComponentContent(eventType, xpp, res))
1344        unknownContent(xpp);
1345      eventType = nextNoWhitespace(xpp);
1346    }
1347    next(xpp);
1348    parseElementClose(res);
1349    return res;
1350  }
1351
1352  protected boolean parseElementDefinitionConstraintComponentContent(int eventType, XmlPullParser xpp, ElementDefinition.ElementDefinitionConstraintComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1353    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("key")) {
1354      res.setKeyElement(parseId(xpp));
1355    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1356      res.setRequirementsElement(parseMarkdown(xpp));
1357    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
1358      res.setSeverityElement(parseEnumeration(xpp, ElementDefinition.ConstraintSeverity.NULL, new ElementDefinition.ConstraintSeverityEnumFactory()));
1359    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suppress")) {
1360      res.setSuppressElement(parseBoolean(xpp));
1361    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("human")) {
1362      res.setHumanElement(parseString(xpp));
1363    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
1364      res.setExpressionElement(parseString(xpp));
1365    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
1366      res.setSourceElement(parseCanonical(xpp));
1367    } else if (!parseElementContent(eventType, xpp, res)){ 
1368      return false;
1369    }
1370    return true;
1371  }
1372
1373  protected ElementDefinition.ElementDefinitionBindingComponent parseElementDefinitionBindingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1374    ElementDefinition.ElementDefinitionBindingComponent res = new ElementDefinition.ElementDefinitionBindingComponent();
1375    parseElementAttributes(xpp, res);
1376    next(xpp);
1377    int eventType = nextNoWhitespace(xpp);
1378    while (eventType != XmlPullParser.END_TAG) {
1379    if (!parseElementDefinitionBindingComponentContent(eventType, xpp, res))
1380        unknownContent(xpp);
1381      eventType = nextNoWhitespace(xpp);
1382    }
1383    next(xpp);
1384    parseElementClose(res);
1385    return res;
1386  }
1387
1388  protected boolean parseElementDefinitionBindingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition.ElementDefinitionBindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1389    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
1390      res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
1391    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1392      res.setDescriptionElement(parseMarkdown(xpp));
1393    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
1394      res.setValueSetElement(parseCanonical(xpp));
1395    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additional")) {
1396      res.getAdditional().add(parseElementDefinitionBindingAdditionalComponent(xpp));
1397    } else if (!parseElementContent(eventType, xpp, res)){ 
1398      return false;
1399    }
1400    return true;
1401  }
1402
1403  protected ElementDefinition.ElementDefinitionBindingAdditionalComponent parseElementDefinitionBindingAdditionalComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1404    ElementDefinition.ElementDefinitionBindingAdditionalComponent res = new ElementDefinition.ElementDefinitionBindingAdditionalComponent();
1405    parseElementAttributes(xpp, res);
1406    next(xpp);
1407    int eventType = nextNoWhitespace(xpp);
1408    while (eventType != XmlPullParser.END_TAG) {
1409    if (!parseElementDefinitionBindingAdditionalComponentContent(eventType, xpp, res))
1410        unknownContent(xpp);
1411      eventType = nextNoWhitespace(xpp);
1412    }
1413    next(xpp);
1414    parseElementClose(res);
1415    return res;
1416  }
1417
1418  protected boolean parseElementDefinitionBindingAdditionalComponentContent(int eventType, XmlPullParser xpp, ElementDefinition.ElementDefinitionBindingAdditionalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1419    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
1420      res.setPurposeElement(parseEnumeration(xpp, ElementDefinition.AdditionalBindingPurposeVS.NULL, new ElementDefinition.AdditionalBindingPurposeVSEnumFactory()));
1421    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
1422      res.setValueSetElement(parseCanonical(xpp));
1423    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
1424      res.setDocumentationElement(parseMarkdown(xpp));
1425    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shortDoco")) {
1426      res.setShortDocoElement(parseString(xpp));
1427    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
1428      res.getUsage().add(parseUsageContext(xpp));
1429    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("any")) {
1430      res.setAnyElement(parseBoolean(xpp));
1431    } else if (!parseElementContent(eventType, xpp, res)){ 
1432      return false;
1433    }
1434    return true;
1435  }
1436
1437  protected ElementDefinition.ElementDefinitionMappingComponent parseElementDefinitionMappingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1438    ElementDefinition.ElementDefinitionMappingComponent res = new ElementDefinition.ElementDefinitionMappingComponent();
1439    parseElementAttributes(xpp, res);
1440    next(xpp);
1441    int eventType = nextNoWhitespace(xpp);
1442    while (eventType != XmlPullParser.END_TAG) {
1443    if (!parseElementDefinitionMappingComponentContent(eventType, xpp, res))
1444        unknownContent(xpp);
1445      eventType = nextNoWhitespace(xpp);
1446    }
1447    next(xpp);
1448    parseElementClose(res);
1449    return res;
1450  }
1451
1452  protected boolean parseElementDefinitionMappingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition.ElementDefinitionMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1453    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
1454      res.setIdentityElement(parseId(xpp));
1455    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1456      res.setLanguageElement(parseCode(xpp));
1457    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("map")) {
1458      res.setMapElement(parseString(xpp));
1459    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1460      res.setCommentElement(parseMarkdown(xpp));
1461    } else if (!parseElementContent(eventType, xpp, res)){ 
1462      return false;
1463    }
1464    return true;
1465  }
1466
1467  protected Expression parseExpression(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1468    Expression res = new Expression();
1469    parseElementAttributes(xpp, res);
1470    next(xpp);
1471    int eventType = nextNoWhitespace(xpp);
1472    while (eventType != XmlPullParser.END_TAG) {
1473    if (!parseExpressionContent(eventType, xpp, res))
1474        unknownContent(xpp);
1475      eventType = nextNoWhitespace(xpp);
1476    }
1477    next(xpp);
1478    parseElementClose(res);
1479    return res;
1480  }
1481
1482  protected boolean parseExpressionContent(int eventType, XmlPullParser xpp, Expression res) throws XmlPullParserException, IOException, FHIRFormatError {
1483    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1484      res.setDescriptionElement(parseString(xpp));
1485    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1486      res.setNameElement(parseCode(xpp));
1487    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1488      res.setLanguageElement(parseCode(xpp));
1489    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
1490      res.setExpressionElement(parseString(xpp));
1491    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
1492      res.setReferenceElement(parseUri(xpp));
1493    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1494      return false;
1495    }
1496    return true;
1497  }
1498
1499  protected ExtendedContactDetail parseExtendedContactDetail(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1500    ExtendedContactDetail res = new ExtendedContactDetail();
1501    parseElementAttributes(xpp, res);
1502    next(xpp);
1503    int eventType = nextNoWhitespace(xpp);
1504    while (eventType != XmlPullParser.END_TAG) {
1505    if (!parseExtendedContactDetailContent(eventType, xpp, res))
1506        unknownContent(xpp);
1507      eventType = nextNoWhitespace(xpp);
1508    }
1509    next(xpp);
1510    parseElementClose(res);
1511    return res;
1512  }
1513
1514  protected boolean parseExtendedContactDetailContent(int eventType, XmlPullParser xpp, ExtendedContactDetail res) throws XmlPullParserException, IOException, FHIRFormatError {
1515    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
1516      res.setPurpose(parseCodeableConcept(xpp));
1517    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1518      res.getName().add(parseHumanName(xpp));
1519    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
1520      res.getTelecom().add(parseContactPoint(xpp));
1521    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
1522      res.setAddress(parseAddress(xpp));
1523    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
1524      res.setOrganization(parseReference(xpp));
1525    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1526      res.setPeriod(parsePeriod(xpp));
1527    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1528      return false;
1529    }
1530    return true;
1531  }
1532
1533  protected Extension parseExtension(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1534    Extension res = new Extension();
1535    parseElementAttributes(xpp, res);
1536    if (xpp.getAttributeValue(null, "url") != null)
1537        res.setUrl(xpp.getAttributeValue(null, "url"));
1538    next(xpp);
1539    int eventType = nextNoWhitespace(xpp);
1540    while (eventType != XmlPullParser.END_TAG) {
1541    if (!parseExtensionContent(eventType, xpp, res))
1542        unknownContent(xpp);
1543      eventType = nextNoWhitespace(xpp);
1544    }
1545    next(xpp);
1546    parseElementClose(res);
1547    return res;
1548  }
1549
1550  protected boolean parseExtensionContent(int eventType, XmlPullParser xpp, Extension res) throws XmlPullParserException, IOException, FHIRFormatError {
1551    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1552      res.setValue(parseType("value", xpp));
1553    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1554      return false;
1555    }
1556    return true;
1557  }
1558
1559  protected HumanName parseHumanName(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1560    HumanName res = new HumanName();
1561    parseElementAttributes(xpp, res);
1562    next(xpp);
1563    int eventType = nextNoWhitespace(xpp);
1564    while (eventType != XmlPullParser.END_TAG) {
1565    if (!parseHumanNameContent(eventType, xpp, res))
1566        unknownContent(xpp);
1567      eventType = nextNoWhitespace(xpp);
1568    }
1569    next(xpp);
1570    parseElementClose(res);
1571    return res;
1572  }
1573
1574  protected boolean parseHumanNameContent(int eventType, XmlPullParser xpp, HumanName res) throws XmlPullParserException, IOException, FHIRFormatError {
1575    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1576      res.setUseElement(parseEnumeration(xpp, HumanName.NameUse.NULL, new HumanName.NameUseEnumFactory()));
1577    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1578      res.setTextElement(parseString(xpp));
1579    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("family")) {
1580      res.setFamilyElement(parseString(xpp));
1581    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("given")) {
1582      res.getGiven().add(parseString(xpp));
1583    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
1584      res.getPrefix().add(parseString(xpp));
1585    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suffix")) {
1586      res.getSuffix().add(parseString(xpp));
1587    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1588      res.setPeriod(parsePeriod(xpp));
1589    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1590      return false;
1591    }
1592    return true;
1593  }
1594
1595  protected Identifier parseIdentifier(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1596    Identifier res = new Identifier();
1597    parseElementAttributes(xpp, res);
1598    next(xpp);
1599    int eventType = nextNoWhitespace(xpp);
1600    while (eventType != XmlPullParser.END_TAG) {
1601    if (!parseIdentifierContent(eventType, xpp, res))
1602        unknownContent(xpp);
1603      eventType = nextNoWhitespace(xpp);
1604    }
1605    next(xpp);
1606    parseElementClose(res);
1607    return res;
1608  }
1609
1610  protected boolean parseIdentifierContent(int eventType, XmlPullParser xpp, Identifier res) throws XmlPullParserException, IOException, FHIRFormatError {
1611    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1612      res.setUseElement(parseEnumeration(xpp, Identifier.IdentifierUse.NULL, new Identifier.IdentifierUseEnumFactory()));
1613    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1614      res.setType(parseCodeableConcept(xpp));
1615    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
1616      res.setSystemElement(parseUri(xpp));
1617    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
1618      res.setValueElement(parseString(xpp));
1619    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1620      res.setPeriod(parsePeriod(xpp));
1621    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assigner")) {
1622      res.setAssigner(parseReference(xpp));
1623    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1624      return false;
1625    }
1626    return true;
1627  }
1628
1629  protected MarketingStatus parseMarketingStatus(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1630    MarketingStatus res = new MarketingStatus();
1631    parseElementAttributes(xpp, res);
1632    next(xpp);
1633    int eventType = nextNoWhitespace(xpp);
1634    while (eventType != XmlPullParser.END_TAG) {
1635    if (!parseMarketingStatusContent(eventType, xpp, res))
1636        unknownContent(xpp);
1637      eventType = nextNoWhitespace(xpp);
1638    }
1639    next(xpp);
1640    parseElementClose(res);
1641    return res;
1642  }
1643
1644  protected boolean parseMarketingStatusContent(int eventType, XmlPullParser xpp, MarketingStatus res) throws XmlPullParserException, IOException, FHIRFormatError {
1645    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
1646      res.setCountry(parseCodeableConcept(xpp));
1647    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
1648      res.setJurisdiction(parseCodeableConcept(xpp));
1649    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1650      res.setStatus(parseCodeableConcept(xpp));
1651    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateRange")) {
1652      res.setDateRange(parsePeriod(xpp));
1653    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restoreDate")) {
1654      res.setRestoreDateElement(parseDateTime(xpp));
1655    } else if (!parseBackboneTypeContent(eventType, xpp, res)){ 
1656      return false;
1657    }
1658    return true;
1659  }
1660
1661  protected Meta parseMeta(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1662    Meta res = new Meta();
1663    parseElementAttributes(xpp, res);
1664    next(xpp);
1665    int eventType = nextNoWhitespace(xpp);
1666    while (eventType != XmlPullParser.END_TAG) {
1667    if (!parseMetaContent(eventType, xpp, res))
1668        unknownContent(xpp);
1669      eventType = nextNoWhitespace(xpp);
1670    }
1671    next(xpp);
1672    parseElementClose(res);
1673    return res;
1674  }
1675
1676  protected boolean parseMetaContent(int eventType, XmlPullParser xpp, Meta res) throws XmlPullParserException, IOException, FHIRFormatError {
1677    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
1678      res.setVersionIdElement(parseId(xpp));
1679    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastUpdated")) {
1680      res.setLastUpdatedElement(parseInstant(xpp));
1681    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
1682      res.setSourceElement(parseUri(xpp));
1683    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1684      res.getProfile().add(parseCanonical(xpp));
1685    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
1686      res.getSecurity().add(parseCoding(xpp));
1687    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tag")) {
1688      res.getTag().add(parseCoding(xpp));
1689    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1690      return false;
1691    }
1692    return true;
1693  }
1694
1695  protected MonetaryComponent parseMonetaryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1696    MonetaryComponent res = new MonetaryComponent();
1697    parseElementAttributes(xpp, res);
1698    next(xpp);
1699    int eventType = nextNoWhitespace(xpp);
1700    while (eventType != XmlPullParser.END_TAG) {
1701    if (!parseMonetaryComponentContent(eventType, xpp, res))
1702        unknownContent(xpp);
1703      eventType = nextNoWhitespace(xpp);
1704    }
1705    next(xpp);
1706    parseElementClose(res);
1707    return res;
1708  }
1709
1710  protected boolean parseMonetaryComponentContent(int eventType, XmlPullParser xpp, MonetaryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1711    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1712      res.setTypeElement(parseEnumeration(xpp, MonetaryComponent.PriceComponentType.NULL, new MonetaryComponent.PriceComponentTypeEnumFactory()));
1713    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1714      res.setCode(parseCodeableConcept(xpp));
1715    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
1716      res.setFactorElement(parseDecimal(xpp));
1717    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
1718      res.setAmount(parseMoney(xpp));
1719    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1720      return false;
1721    }
1722    return true;
1723  }
1724
1725  protected Money parseMoney(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1726    Money res = new Money();
1727    parseElementAttributes(xpp, res);
1728    next(xpp);
1729    int eventType = nextNoWhitespace(xpp);
1730    while (eventType != XmlPullParser.END_TAG) {
1731    if (!parseMoneyContent(eventType, xpp, res))
1732        unknownContent(xpp);
1733      eventType = nextNoWhitespace(xpp);
1734    }
1735    next(xpp);
1736    parseElementClose(res);
1737    return res;
1738  }
1739
1740  protected boolean parseMoneyContent(int eventType, XmlPullParser xpp, Money res) throws XmlPullParserException, IOException, FHIRFormatError {
1741    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
1742      res.setValueElement(parseDecimal(xpp));
1743    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("currency")) {
1744      res.setCurrencyElement(parseCode(xpp));
1745    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1746      return false;
1747    }
1748    return true;
1749  }
1750
1751  protected Narrative parseNarrative(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1752    Narrative res = new Narrative();
1753    parseElementAttributes(xpp, res);
1754    next(xpp);
1755    int eventType = nextNoWhitespace(xpp);
1756    while (eventType != XmlPullParser.END_TAG) {
1757    if (!parseNarrativeContent(eventType, xpp, res))
1758        unknownContent(xpp);
1759      eventType = nextNoWhitespace(xpp);
1760    }
1761    next(xpp);
1762    parseElementClose(res);
1763    return res;
1764  }
1765
1766  protected boolean parseNarrativeContent(int eventType, XmlPullParser xpp, Narrative res) throws XmlPullParserException, IOException, FHIRFormatError {
1767    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
1768      res.setStatusElement(parseEnumeration(xpp, Narrative.NarrativeStatus.NULL, new Narrative.NarrativeStatusEnumFactory()));
1769    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("div")) {
1770      res.setDiv(parseXhtml(xpp));
1771    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1772      return false;
1773    }
1774    return true;
1775  }
1776
1777  protected ParameterDefinition parseParameterDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1778    ParameterDefinition res = new ParameterDefinition();
1779    parseElementAttributes(xpp, res);
1780    next(xpp);
1781    int eventType = nextNoWhitespace(xpp);
1782    while (eventType != XmlPullParser.END_TAG) {
1783    if (!parseParameterDefinitionContent(eventType, xpp, res))
1784        unknownContent(xpp);
1785      eventType = nextNoWhitespace(xpp);
1786    }
1787    next(xpp);
1788    parseElementClose(res);
1789    return res;
1790  }
1791
1792  protected boolean parseParameterDefinitionContent(int eventType, XmlPullParser xpp, ParameterDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1793    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1794      res.setNameElement(parseCode(xpp));
1795    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1796      res.setUseElement(parseEnumeration(xpp, Enumerations.OperationParameterUse.NULL, new Enumerations.OperationParameterUseEnumFactory()));
1797    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1798      res.setMinElement(parseInteger(xpp));
1799    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1800      res.setMaxElement(parseString(xpp));
1801    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
1802      res.setDocumentationElement(parseString(xpp));
1803    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1804      res.setTypeElement(parseEnumeration(xpp, Enumerations.FHIRTypes.NULL, new Enumerations.FHIRTypesEnumFactory()));
1805    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1806      res.setProfileElement(parseCanonical(xpp));
1807    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1808      return false;
1809    }
1810    return true;
1811  }
1812
1813  protected Period parsePeriod(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1814    Period res = new Period();
1815    parseElementAttributes(xpp, res);
1816    next(xpp);
1817    int eventType = nextNoWhitespace(xpp);
1818    while (eventType != XmlPullParser.END_TAG) {
1819    if (!parsePeriodContent(eventType, xpp, res))
1820        unknownContent(xpp);
1821      eventType = nextNoWhitespace(xpp);
1822    }
1823    next(xpp);
1824    parseElementClose(res);
1825    return res;
1826  }
1827
1828  protected boolean parsePeriodContent(int eventType, XmlPullParser xpp, Period res) throws XmlPullParserException, IOException, FHIRFormatError {
1829    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
1830      res.setStartElement(parseDateTime(xpp));
1831    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
1832      res.setEndElement(parseDateTime(xpp));
1833    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1834      return false;
1835    }
1836    return true;
1837  }
1838
1839  protected ProductShelfLife parseProductShelfLife(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1840    ProductShelfLife res = new ProductShelfLife();
1841    parseElementAttributes(xpp, res);
1842    next(xpp);
1843    int eventType = nextNoWhitespace(xpp);
1844    while (eventType != XmlPullParser.END_TAG) {
1845    if (!parseProductShelfLifeContent(eventType, xpp, res))
1846        unknownContent(xpp);
1847      eventType = nextNoWhitespace(xpp);
1848    }
1849    next(xpp);
1850    parseElementClose(res);
1851    return res;
1852  }
1853
1854  protected boolean parseProductShelfLifeContent(int eventType, XmlPullParser xpp, ProductShelfLife res) throws XmlPullParserException, IOException, FHIRFormatError {
1855    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1856      res.setType(parseCodeableConcept(xpp));
1857    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "period")) {
1858      res.setPeriod(parseType("period", xpp));
1859    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialPrecautionsForStorage")) {
1860      res.getSpecialPrecautionsForStorage().add(parseCodeableConcept(xpp));
1861    } else if (!parseBackboneTypeContent(eventType, xpp, res)){ 
1862      return false;
1863    }
1864    return true;
1865  }
1866
1867  protected Quantity parseQuantity(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1868    Quantity res = new Quantity();
1869    parseElementAttributes(xpp, res);
1870    next(xpp);
1871    int eventType = nextNoWhitespace(xpp);
1872    while (eventType != XmlPullParser.END_TAG) {
1873    if (!parseQuantityContent(eventType, xpp, res))
1874        unknownContent(xpp);
1875      eventType = nextNoWhitespace(xpp);
1876    }
1877    next(xpp);
1878    parseElementClose(res);
1879    return res;
1880  }
1881
1882  protected boolean parseQuantityContent(int eventType, XmlPullParser xpp, Quantity res) throws XmlPullParserException, IOException, FHIRFormatError {
1883    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
1884      res.setValueElement(parseDecimal(xpp));
1885    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
1886      res.setComparatorElement(parseEnumeration(xpp, Enumerations.QuantityComparator.NULL, new Enumerations.QuantityComparatorEnumFactory()));
1887    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
1888      res.setUnitElement(parseString(xpp));
1889    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
1890      res.setSystemElement(parseUri(xpp));
1891    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1892      res.setCodeElement(parseCode(xpp));
1893    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1894      return false;
1895    }
1896    return true;
1897  }
1898
1899  protected Range parseRange(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1900    Range res = new Range();
1901    parseElementAttributes(xpp, res);
1902    next(xpp);
1903    int eventType = nextNoWhitespace(xpp);
1904    while (eventType != XmlPullParser.END_TAG) {
1905    if (!parseRangeContent(eventType, xpp, res))
1906        unknownContent(xpp);
1907      eventType = nextNoWhitespace(xpp);
1908    }
1909    next(xpp);
1910    parseElementClose(res);
1911    return res;
1912  }
1913
1914  protected boolean parseRangeContent(int eventType, XmlPullParser xpp, Range res) throws XmlPullParserException, IOException, FHIRFormatError {
1915    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
1916      res.setLow(parseQuantity(xpp));
1917    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
1918      res.setHigh(parseQuantity(xpp));
1919    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1920      return false;
1921    }
1922    return true;
1923  }
1924
1925  protected Ratio parseRatio(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1926    Ratio res = new Ratio();
1927    parseElementAttributes(xpp, res);
1928    next(xpp);
1929    int eventType = nextNoWhitespace(xpp);
1930    while (eventType != XmlPullParser.END_TAG) {
1931    if (!parseRatioContent(eventType, xpp, res))
1932        unknownContent(xpp);
1933      eventType = nextNoWhitespace(xpp);
1934    }
1935    next(xpp);
1936    parseElementClose(res);
1937    return res;
1938  }
1939
1940  protected boolean parseRatioContent(int eventType, XmlPullParser xpp, Ratio res) throws XmlPullParserException, IOException, FHIRFormatError {
1941    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numerator")) {
1942      res.setNumerator(parseQuantity(xpp));
1943    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("denominator")) {
1944      res.setDenominator(parseQuantity(xpp));
1945    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1946      return false;
1947    }
1948    return true;
1949  }
1950
1951  protected RatioRange parseRatioRange(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1952    RatioRange res = new RatioRange();
1953    parseElementAttributes(xpp, res);
1954    next(xpp);
1955    int eventType = nextNoWhitespace(xpp);
1956    while (eventType != XmlPullParser.END_TAG) {
1957    if (!parseRatioRangeContent(eventType, xpp, res))
1958        unknownContent(xpp);
1959      eventType = nextNoWhitespace(xpp);
1960    }
1961    next(xpp);
1962    parseElementClose(res);
1963    return res;
1964  }
1965
1966  protected boolean parseRatioRangeContent(int eventType, XmlPullParser xpp, RatioRange res) throws XmlPullParserException, IOException, FHIRFormatError {
1967    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lowNumerator")) {
1968      res.setLowNumerator(parseQuantity(xpp));
1969    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("highNumerator")) {
1970      res.setHighNumerator(parseQuantity(xpp));
1971    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("denominator")) {
1972      res.setDenominator(parseQuantity(xpp));
1973    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
1974      return false;
1975    }
1976    return true;
1977  }
1978
1979  protected Reference parseReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1980    Reference res = new Reference();
1981    parseElementAttributes(xpp, res);
1982    next(xpp);
1983    int eventType = nextNoWhitespace(xpp);
1984    while (eventType != XmlPullParser.END_TAG) {
1985    if (!parseReferenceContent(eventType, xpp, res))
1986        unknownContent(xpp);
1987      eventType = nextNoWhitespace(xpp);
1988    }
1989    next(xpp);
1990    parseElementClose(res);
1991    return res;
1992  }
1993
1994  protected boolean parseReferenceContent(int eventType, XmlPullParser xpp, Reference res) throws XmlPullParserException, IOException, FHIRFormatError {
1995    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
1996      res.setReferenceElement(parseString(xpp));
1997    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1998      res.setTypeElement(parseUri(xpp));
1999    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2000      res.setIdentifier(parseIdentifier(xpp));
2001    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
2002      res.setDisplayElement(parseString(xpp));
2003    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
2004      return false;
2005    }
2006    return true;
2007  }
2008
2009  protected RelatedArtifact parseRelatedArtifact(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2010    RelatedArtifact res = new RelatedArtifact();
2011    parseElementAttributes(xpp, res);
2012    next(xpp);
2013    int eventType = nextNoWhitespace(xpp);
2014    while (eventType != XmlPullParser.END_TAG) {
2015    if (!parseRelatedArtifactContent(eventType, xpp, res))
2016        unknownContent(xpp);
2017      eventType = nextNoWhitespace(xpp);
2018    }
2019    next(xpp);
2020    parseElementClose(res);
2021    return res;
2022  }
2023
2024  protected boolean parseRelatedArtifactContent(int eventType, XmlPullParser xpp, RelatedArtifact res) throws XmlPullParserException, IOException, FHIRFormatError {
2025    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2026      res.setTypeElement(parseEnumeration(xpp, RelatedArtifact.RelatedArtifactType.NULL, new RelatedArtifact.RelatedArtifactTypeEnumFactory()));
2027    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classifier")) {
2028      res.getClassifier().add(parseCodeableConcept(xpp));
2029    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
2030      res.setLabelElement(parseString(xpp));
2031    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
2032      res.setDisplayElement(parseString(xpp));
2033    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("citation")) {
2034      res.setCitationElement(parseMarkdown(xpp));
2035    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
2036      res.setDocument(parseAttachment(xpp));
2037    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
2038      res.setResourceElement(parseCanonical(xpp));
2039    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceReference")) {
2040      res.setResourceReference(parseReference(xpp));
2041    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationStatus")) {
2042      res.setPublicationStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
2043    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationDate")) {
2044      res.setPublicationDateElement(parseDate(xpp));
2045    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
2046      return false;
2047    }
2048    return true;
2049  }
2050
2051  protected SampledData parseSampledData(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2052    SampledData res = new SampledData();
2053    parseElementAttributes(xpp, res);
2054    next(xpp);
2055    int eventType = nextNoWhitespace(xpp);
2056    while (eventType != XmlPullParser.END_TAG) {
2057    if (!parseSampledDataContent(eventType, xpp, res))
2058        unknownContent(xpp);
2059      eventType = nextNoWhitespace(xpp);
2060    }
2061    next(xpp);
2062    parseElementClose(res);
2063    return res;
2064  }
2065
2066  protected boolean parseSampledDataContent(int eventType, XmlPullParser xpp, SampledData res) throws XmlPullParserException, IOException, FHIRFormatError {
2067    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
2068      res.setOrigin(parseQuantity(xpp));
2069    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interval")) {
2070      res.setIntervalElement(parseDecimal(xpp));
2071    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intervalUnit")) {
2072      res.setIntervalUnitElement(parseCode(xpp));
2073    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
2074      res.setFactorElement(parseDecimal(xpp));
2075    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lowerLimit")) {
2076      res.setLowerLimitElement(parseDecimal(xpp));
2077    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("upperLimit")) {
2078      res.setUpperLimitElement(parseDecimal(xpp));
2079    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dimensions")) {
2080      res.setDimensionsElement(parsePositiveInt(xpp));
2081    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeMap")) {
2082      res.setCodeMapElement(parseCanonical(xpp));
2083    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offsets")) {
2084      res.setOffsetsElement(parseString(xpp));
2085    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
2086      res.setDataElement(parseString(xpp));
2087    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
2088      return false;
2089    }
2090    return true;
2091  }
2092
2093  protected Signature parseSignature(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2094    Signature res = new Signature();
2095    parseElementAttributes(xpp, res);
2096    next(xpp);
2097    int eventType = nextNoWhitespace(xpp);
2098    while (eventType != XmlPullParser.END_TAG) {
2099    if (!parseSignatureContent(eventType, xpp, res))
2100        unknownContent(xpp);
2101      eventType = nextNoWhitespace(xpp);
2102    }
2103    next(xpp);
2104    parseElementClose(res);
2105    return res;
2106  }
2107
2108  protected boolean parseSignatureContent(int eventType, XmlPullParser xpp, Signature res) throws XmlPullParserException, IOException, FHIRFormatError {
2109    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2110      res.getType().add(parseCoding(xpp));
2111    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
2112      res.setWhenElement(parseInstant(xpp));
2113    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
2114      res.setWho(parseReference(xpp));
2115    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
2116      res.setOnBehalfOf(parseReference(xpp));
2117    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetFormat")) {
2118      res.setTargetFormatElement(parseCode(xpp));
2119    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sigFormat")) {
2120      res.setSigFormatElement(parseCode(xpp));
2121    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
2122      res.setDataElement(parseBase64Binary(xpp));
2123    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
2124      return false;
2125    }
2126    return true;
2127  }
2128
2129  protected Timing parseTiming(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2130    Timing res = new Timing();
2131    parseElementAttributes(xpp, res);
2132    next(xpp);
2133    int eventType = nextNoWhitespace(xpp);
2134    while (eventType != XmlPullParser.END_TAG) {
2135    if (!parseTimingContent(eventType, xpp, res))
2136        unknownContent(xpp);
2137      eventType = nextNoWhitespace(xpp);
2138    }
2139    next(xpp);
2140    parseElementClose(res);
2141    return res;
2142  }
2143
2144  protected boolean parseTimingContent(int eventType, XmlPullParser xpp, Timing res) throws XmlPullParserException, IOException, FHIRFormatError {
2145    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
2146      res.getEvent().add(parseDateTime(xpp));
2147    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeat")) {
2148      res.setRepeat(parseTimingRepeatComponent(xpp));
2149    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2150      res.setCode(parseCodeableConcept(xpp));
2151    } else if (!parseBackboneTypeContent(eventType, xpp, res)){ 
2152      return false;
2153    }
2154    return true;
2155  }
2156
2157  protected Timing.TimingRepeatComponent parseTimingRepeatComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2158    Timing.TimingRepeatComponent res = new Timing.TimingRepeatComponent();
2159    parseElementAttributes(xpp, res);
2160    next(xpp);
2161    int eventType = nextNoWhitespace(xpp);
2162    while (eventType != XmlPullParser.END_TAG) {
2163    if (!parseTimingRepeatComponentContent(eventType, xpp, res))
2164        unknownContent(xpp);
2165      eventType = nextNoWhitespace(xpp);
2166    }
2167    next(xpp);
2168    parseElementClose(res);
2169    return res;
2170  }
2171
2172  protected boolean parseTimingRepeatComponentContent(int eventType, XmlPullParser xpp, Timing.TimingRepeatComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2173    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "bounds")) {
2174      res.setBounds(parseType("bounds", xpp));
2175    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
2176      res.setCountElement(parsePositiveInt(xpp));
2177    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countMax")) {
2178      res.setCountMaxElement(parsePositiveInt(xpp));
2179    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
2180      res.setDurationElement(parseDecimal(xpp));
2181    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationMax")) {
2182      res.setDurationMaxElement(parseDecimal(xpp));
2183    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationUnit")) {
2184      res.setDurationUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
2185    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequency")) {
2186      res.setFrequencyElement(parsePositiveInt(xpp));
2187    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyMax")) {
2188      res.setFrequencyMaxElement(parsePositiveInt(xpp));
2189    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2190      res.setPeriodElement(parseDecimal(xpp));
2191    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodMax")) {
2192      res.setPeriodMaxElement(parseDecimal(xpp));
2193    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodUnit")) {
2194      res.setPeriodUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
2195    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dayOfWeek")) {
2196      res.getDayOfWeek().add(parseEnumeration(xpp, Enumerations.DaysOfWeek.NULL, new Enumerations.DaysOfWeekEnumFactory()));
2197    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeOfDay")) {
2198      res.getTimeOfDay().add(parseTime(xpp));
2199    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
2200      res.getWhen().add(parseEnumeration(xpp, Timing.EventTiming.NULL, new Timing.EventTimingEnumFactory()));
2201    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
2202      res.setOffsetElement(parseUnsignedInt(xpp));
2203    } else if (!parseElementContent(eventType, xpp, res)){ 
2204      return false;
2205    }
2206    return true;
2207  }
2208
2209  protected TriggerDefinition parseTriggerDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2210    TriggerDefinition res = new TriggerDefinition();
2211    parseElementAttributes(xpp, res);
2212    next(xpp);
2213    int eventType = nextNoWhitespace(xpp);
2214    while (eventType != XmlPullParser.END_TAG) {
2215    if (!parseTriggerDefinitionContent(eventType, xpp, res))
2216        unknownContent(xpp);
2217      eventType = nextNoWhitespace(xpp);
2218    }
2219    next(xpp);
2220    parseElementClose(res);
2221    return res;
2222  }
2223
2224  protected boolean parseTriggerDefinitionContent(int eventType, XmlPullParser xpp, TriggerDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
2225    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2226      res.setTypeElement(parseEnumeration(xpp, TriggerDefinition.TriggerType.NULL, new TriggerDefinition.TriggerTypeEnumFactory()));
2227    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2228      res.setNameElement(parseString(xpp));
2229    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2230      res.setCode(parseCodeableConcept(xpp));
2231    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriptionTopic")) {
2232      res.setSubscriptionTopicElement(parseCanonical(xpp));
2233    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
2234      res.setTiming(parseType("timing", xpp));
2235    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
2236      res.getData().add(parseDataRequirement(xpp));
2237    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
2238      res.setCondition(parseExpression(xpp));
2239    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
2240      return false;
2241    }
2242    return true;
2243  }
2244
2245  protected UsageContext parseUsageContext(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2246    UsageContext res = new UsageContext();
2247    parseElementAttributes(xpp, res);
2248    next(xpp);
2249    int eventType = nextNoWhitespace(xpp);
2250    while (eventType != XmlPullParser.END_TAG) {
2251    if (!parseUsageContextContent(eventType, xpp, res))
2252        unknownContent(xpp);
2253      eventType = nextNoWhitespace(xpp);
2254    }
2255    next(xpp);
2256    parseElementClose(res);
2257    return res;
2258  }
2259
2260  protected boolean parseUsageContextContent(int eventType, XmlPullParser xpp, UsageContext res) throws XmlPullParserException, IOException, FHIRFormatError {
2261    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2262      res.setCode(parseCoding(xpp));
2263    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
2264      res.setValue(parseType("value", xpp));
2265    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
2266      return false;
2267    }
2268    return true;
2269  }
2270
2271  protected VirtualServiceDetail parseVirtualServiceDetail(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2272    VirtualServiceDetail res = new VirtualServiceDetail();
2273    parseElementAttributes(xpp, res);
2274    next(xpp);
2275    int eventType = nextNoWhitespace(xpp);
2276    while (eventType != XmlPullParser.END_TAG) {
2277    if (!parseVirtualServiceDetailContent(eventType, xpp, res))
2278        unknownContent(xpp);
2279      eventType = nextNoWhitespace(xpp);
2280    }
2281    next(xpp);
2282    parseElementClose(res);
2283    return res;
2284  }
2285
2286  protected boolean parseVirtualServiceDetailContent(int eventType, XmlPullParser xpp, VirtualServiceDetail res) throws XmlPullParserException, IOException, FHIRFormatError {
2287    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("channelType")) {
2288      res.setChannelType(parseCoding(xpp));
2289    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "address")) {
2290      res.setAddress(parseType("address", xpp));
2291    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalInfo")) {
2292      res.getAdditionalInfo().add(parseUrl(xpp));
2293    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxParticipants")) {
2294      res.setMaxParticipantsElement(parsePositiveInt(xpp));
2295    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sessionKey")) {
2296      res.setSessionKeyElement(parseString(xpp));
2297    } else if (!parseDataTypeContent(eventType, xpp, res)){ 
2298      return false;
2299    }
2300    return true;
2301  }
2302
2303  protected boolean parseCanonicalResourceContent(int eventType, XmlPullParser xpp, CanonicalResource res) throws XmlPullParserException, IOException, FHIRFormatError {
2304    if (!parseDomainResourceContent(eventType, xpp, res)){ 
2305        return false;
2306    }
2307    return true;
2308  }
2309
2310  protected boolean parseDomainResourceContent(int eventType, XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
2311    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
2312      res.setText(parseNarrative(xpp));
2313    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contained")) {
2314      res.getContained().add(parseResourceContained(xpp));
2315    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) {
2316      res.getExtension().add(parseExtension(xpp));
2317    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) {
2318      res.getModifierExtension().add(parseExtension(xpp));
2319    } else if (!parseResourceContent(eventType, xpp, res)){ 
2320        return false;
2321    }
2322    return true;
2323  }
2324
2325  protected boolean parseMetadataResourceContent(int eventType, XmlPullParser xpp, MetadataResource res) throws XmlPullParserException, IOException, FHIRFormatError {
2326    if (!parseCanonicalResourceContent(eventType, xpp, res)){ 
2327        return false;
2328    }
2329    return true;
2330  }
2331
2332  protected boolean parseResourceContent(int eventType, XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
2333    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("id")) {
2334      res.setIdElement(parseId(xpp));
2335    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meta")) {
2336      res.setMeta(parseMeta(xpp));
2337    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicitRules")) {
2338      res.setImplicitRulesElement(parseUri(xpp));
2339    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
2340      res.setLanguageElement(parseCode(xpp));
2341    } else if (!parseBaseContent(eventType, xpp, res)){ 
2342        return false;
2343    }
2344    return true;
2345  }
2346
2347  protected Account parseAccount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2348    Account res = new Account();
2349    parseResourceAttributes(xpp, res);
2350    next(xpp);
2351    int eventType = nextNoWhitespace(xpp);
2352    while (eventType != XmlPullParser.END_TAG) {
2353    if (!parseAccountContent(eventType, xpp, res))
2354        unknownContent(xpp);
2355      eventType = nextNoWhitespace(xpp);
2356    }
2357    next(xpp);
2358    parseElementClose(res);
2359    return res;
2360  }
2361
2362  protected boolean parseAccountContent(int eventType, XmlPullParser xpp, Account res) throws XmlPullParserException, IOException, FHIRFormatError {
2363    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2364      res.getIdentifier().add(parseIdentifier(xpp));
2365    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2366      res.setStatusElement(parseEnumeration(xpp, Account.AccountStatus.NULL, new Account.AccountStatusEnumFactory()));
2367    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billingStatus")) {
2368      res.setBillingStatus(parseCodeableConcept(xpp));
2369    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2370      res.setType(parseCodeableConcept(xpp));
2371    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2372      res.setNameElement(parseString(xpp));
2373    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2374      res.getSubject().add(parseReference(xpp));
2375    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("servicePeriod")) {
2376      res.setServicePeriod(parsePeriod(xpp));
2377    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2378      res.getCoverage().add(parseAccountCoverageComponent(xpp));
2379    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
2380      res.setOwner(parseReference(xpp));
2381    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2382      res.setDescriptionElement(parseMarkdown(xpp));
2383    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guarantor")) {
2384      res.getGuarantor().add(parseAccountGuarantorComponent(xpp));
2385    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
2386      res.getDiagnosis().add(parseAccountDiagnosisComponent(xpp));
2387    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
2388      res.getProcedure().add(parseAccountProcedureComponent(xpp));
2389    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAccount")) {
2390      res.getRelatedAccount().add(parseAccountRelatedAccountComponent(xpp));
2391    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("currency")) {
2392      res.setCurrency(parseCodeableConcept(xpp));
2393    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("balance")) {
2394      res.getBalance().add(parseAccountBalanceComponent(xpp));
2395    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("calculatedAt")) {
2396      res.setCalculatedAtElement(parseInstant(xpp));
2397    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
2398      return false;
2399    }
2400    return true;
2401  }
2402
2403  protected Account.CoverageComponent parseAccountCoverageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2404    Account.CoverageComponent res = new Account.CoverageComponent();
2405    parseElementAttributes(xpp, res);
2406    next(xpp);
2407    int eventType = nextNoWhitespace(xpp);
2408    while (eventType != XmlPullParser.END_TAG) {
2409    if (!parseAccountCoverageComponentContent(eventType, xpp, res))
2410        unknownContent(xpp);
2411      eventType = nextNoWhitespace(xpp);
2412    }
2413    next(xpp);
2414    parseElementClose(res);
2415    return res;
2416  }
2417
2418  protected boolean parseAccountCoverageComponentContent(int eventType, XmlPullParser xpp, Account.CoverageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2419    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2420      res.setCoverage(parseReference(xpp));
2421    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2422      res.setPriorityElement(parsePositiveInt(xpp));
2423    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2424      return false;
2425    }
2426    return true;
2427  }
2428
2429  protected Account.GuarantorComponent parseAccountGuarantorComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2430    Account.GuarantorComponent res = new Account.GuarantorComponent();
2431    parseElementAttributes(xpp, res);
2432    next(xpp);
2433    int eventType = nextNoWhitespace(xpp);
2434    while (eventType != XmlPullParser.END_TAG) {
2435    if (!parseAccountGuarantorComponentContent(eventType, xpp, res))
2436        unknownContent(xpp);
2437      eventType = nextNoWhitespace(xpp);
2438    }
2439    next(xpp);
2440    parseElementClose(res);
2441    return res;
2442  }
2443
2444  protected boolean parseAccountGuarantorComponentContent(int eventType, XmlPullParser xpp, Account.GuarantorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2445    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
2446      res.setParty(parseReference(xpp));
2447    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onHold")) {
2448      res.setOnHoldElement(parseBoolean(xpp));
2449    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2450      res.setPeriod(parsePeriod(xpp));
2451    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2452      return false;
2453    }
2454    return true;
2455  }
2456
2457  protected Account.AccountDiagnosisComponent parseAccountDiagnosisComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2458    Account.AccountDiagnosisComponent res = new Account.AccountDiagnosisComponent();
2459    parseElementAttributes(xpp, res);
2460    next(xpp);
2461    int eventType = nextNoWhitespace(xpp);
2462    while (eventType != XmlPullParser.END_TAG) {
2463    if (!parseAccountDiagnosisComponentContent(eventType, xpp, res))
2464        unknownContent(xpp);
2465      eventType = nextNoWhitespace(xpp);
2466    }
2467    next(xpp);
2468    parseElementClose(res);
2469    return res;
2470  }
2471
2472  protected boolean parseAccountDiagnosisComponentContent(int eventType, XmlPullParser xpp, Account.AccountDiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2473    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
2474      res.setSequenceElement(parsePositiveInt(xpp));
2475    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
2476      res.setCondition(parseCodeableReference(xpp));
2477    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateOfDiagnosis")) {
2478      res.setDateOfDiagnosisElement(parseDateTime(xpp));
2479    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2480      res.getType().add(parseCodeableConcept(xpp));
2481    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onAdmission")) {
2482      res.setOnAdmissionElement(parseBoolean(xpp));
2483    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageCode")) {
2484      res.getPackageCode().add(parseCodeableConcept(xpp));
2485    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2486      return false;
2487    }
2488    return true;
2489  }
2490
2491  protected Account.AccountProcedureComponent parseAccountProcedureComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2492    Account.AccountProcedureComponent res = new Account.AccountProcedureComponent();
2493    parseElementAttributes(xpp, res);
2494    next(xpp);
2495    int eventType = nextNoWhitespace(xpp);
2496    while (eventType != XmlPullParser.END_TAG) {
2497    if (!parseAccountProcedureComponentContent(eventType, xpp, res))
2498        unknownContent(xpp);
2499      eventType = nextNoWhitespace(xpp);
2500    }
2501    next(xpp);
2502    parseElementClose(res);
2503    return res;
2504  }
2505
2506  protected boolean parseAccountProcedureComponentContent(int eventType, XmlPullParser xpp, Account.AccountProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2507    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
2508      res.setSequenceElement(parsePositiveInt(xpp));
2509    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2510      res.setCode(parseCodeableReference(xpp));
2511    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateOfService")) {
2512      res.setDateOfServiceElement(parseDateTime(xpp));
2513    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2514      res.getType().add(parseCodeableConcept(xpp));
2515    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageCode")) {
2516      res.getPackageCode().add(parseCodeableConcept(xpp));
2517    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
2518      res.getDevice().add(parseReference(xpp));
2519    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2520      return false;
2521    }
2522    return true;
2523  }
2524
2525  protected Account.AccountRelatedAccountComponent parseAccountRelatedAccountComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2526    Account.AccountRelatedAccountComponent res = new Account.AccountRelatedAccountComponent();
2527    parseElementAttributes(xpp, res);
2528    next(xpp);
2529    int eventType = nextNoWhitespace(xpp);
2530    while (eventType != XmlPullParser.END_TAG) {
2531    if (!parseAccountRelatedAccountComponentContent(eventType, xpp, res))
2532        unknownContent(xpp);
2533      eventType = nextNoWhitespace(xpp);
2534    }
2535    next(xpp);
2536    parseElementClose(res);
2537    return res;
2538  }
2539
2540  protected boolean parseAccountRelatedAccountComponentContent(int eventType, XmlPullParser xpp, Account.AccountRelatedAccountComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2541    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
2542      res.setRelationship(parseCodeableConcept(xpp));
2543    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
2544      res.setAccount(parseReference(xpp));
2545    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2546      return false;
2547    }
2548    return true;
2549  }
2550
2551  protected Account.AccountBalanceComponent parseAccountBalanceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2552    Account.AccountBalanceComponent res = new Account.AccountBalanceComponent();
2553    parseElementAttributes(xpp, res);
2554    next(xpp);
2555    int eventType = nextNoWhitespace(xpp);
2556    while (eventType != XmlPullParser.END_TAG) {
2557    if (!parseAccountBalanceComponentContent(eventType, xpp, res))
2558        unknownContent(xpp);
2559      eventType = nextNoWhitespace(xpp);
2560    }
2561    next(xpp);
2562    parseElementClose(res);
2563    return res;
2564  }
2565
2566  protected boolean parseAccountBalanceComponentContent(int eventType, XmlPullParser xpp, Account.AccountBalanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2567    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("aggregate")) {
2568      res.setAggregate(parseCodeableConcept(xpp));
2569    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
2570      res.setTerm(parseCodeableConcept(xpp));
2571    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("estimate")) {
2572      res.setEstimateElement(parseBoolean(xpp));
2573    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
2574      res.setAmount(parseMoney(xpp));
2575    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2576      return false;
2577    }
2578    return true;
2579  }
2580
2581  protected ActivityDefinition parseActivityDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2582    ActivityDefinition res = new ActivityDefinition();
2583    parseResourceAttributes(xpp, res);
2584    next(xpp);
2585    int eventType = nextNoWhitespace(xpp);
2586    while (eventType != XmlPullParser.END_TAG) {
2587    if (!parseActivityDefinitionContent(eventType, xpp, res))
2588        unknownContent(xpp);
2589      eventType = nextNoWhitespace(xpp);
2590    }
2591    next(xpp);
2592    parseElementClose(res);
2593    return res;
2594  }
2595
2596  protected boolean parseActivityDefinitionContent(int eventType, XmlPullParser xpp, ActivityDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
2597    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2598      res.setUrlElement(parseUri(xpp));
2599    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2600      res.getIdentifier().add(parseIdentifier(xpp));
2601    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
2602      res.setVersionElement(parseString(xpp));
2603    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
2604      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
2605    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2606      res.setNameElement(parseString(xpp));
2607    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
2608      res.setTitleElement(parseString(xpp));
2609    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
2610      res.setSubtitleElement(parseString(xpp));
2611    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2612      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
2613    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
2614      res.setExperimentalElement(parseBoolean(xpp));
2615    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
2616      res.setSubject(parseType("subject", xpp));
2617    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2618      res.setDateElement(parseDateTime(xpp));
2619    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
2620      res.setPublisherElement(parseString(xpp));
2621    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
2622      res.getContact().add(parseContactDetail(xpp));
2623    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2624      res.setDescriptionElement(parseMarkdown(xpp));
2625    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
2626      res.getUseContext().add(parseUsageContext(xpp));
2627    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
2628      res.getJurisdiction().add(parseCodeableConcept(xpp));
2629    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
2630      res.setPurposeElement(parseMarkdown(xpp));
2631    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
2632      res.setUsageElement(parseMarkdown(xpp));
2633    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
2634      res.setCopyrightElement(parseMarkdown(xpp));
2635    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
2636      res.setCopyrightLabelElement(parseString(xpp));
2637    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
2638      res.setApprovalDateElement(parseDate(xpp));
2639    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
2640      res.setLastReviewDateElement(parseDate(xpp));
2641    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
2642      res.setEffectivePeriod(parsePeriod(xpp));
2643    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
2644      res.getTopic().add(parseCodeableConcept(xpp));
2645    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2646      res.getAuthor().add(parseContactDetail(xpp));
2647    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
2648      res.getEditor().add(parseContactDetail(xpp));
2649    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
2650      res.getReviewer().add(parseContactDetail(xpp));
2651    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
2652      res.getEndorser().add(parseContactDetail(xpp));
2653    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
2654      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
2655    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
2656      res.getLibrary().add(parseCanonical(xpp));
2657    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
2658      res.setKindElement(parseEnumeration(xpp, ActivityDefinition.RequestResourceTypes.NULL, new ActivityDefinition.RequestResourceTypesEnumFactory()));
2659    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
2660      res.setProfileElement(parseCanonical(xpp));
2661    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2662      res.setCode(parseCodeableConcept(xpp));
2663    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
2664      res.setIntentElement(parseEnumeration(xpp, Enumerations.RequestIntent.NULL, new Enumerations.RequestIntentEnumFactory()));
2665    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2666      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
2667    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
2668      res.setDoNotPerformElement(parseBoolean(xpp));
2669    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
2670      res.setTiming(parseType("timing", xpp));
2671    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
2672      res.setAsNeeded(parseType("asNeeded", xpp));
2673    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2674      res.setLocation(parseCodeableReference(xpp));
2675    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
2676      res.getParticipant().add(parseActivityDefinitionParticipantComponent(xpp));
2677    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
2678      res.setProduct(parseType("product", xpp));
2679    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2680      res.setQuantity(parseQuantity(xpp));
2681    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
2682      res.getDosage().add(parseDosage(xpp));
2683    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
2684      res.getBodySite().add(parseCodeableConcept(xpp));
2685    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenRequirement")) {
2686      res.getSpecimenRequirement().add(parseCanonical(xpp));
2687    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observationRequirement")) {
2688      res.getObservationRequirement().add(parseCanonical(xpp));
2689    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observationResultRequirement")) {
2690      res.getObservationResultRequirement().add(parseCanonical(xpp));
2691    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
2692      res.setTransformElement(parseCanonical(xpp));
2693    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
2694      res.getDynamicValue().add(parseActivityDefinitionDynamicValueComponent(xpp));
2695    } else if (!parseMetadataResourceContent(eventType, xpp, res)){ 
2696      return false;
2697    }
2698    return true;
2699  }
2700
2701  protected ActivityDefinition.ActivityDefinitionParticipantComponent parseActivityDefinitionParticipantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2702    ActivityDefinition.ActivityDefinitionParticipantComponent res = new ActivityDefinition.ActivityDefinitionParticipantComponent();
2703    parseElementAttributes(xpp, res);
2704    next(xpp);
2705    int eventType = nextNoWhitespace(xpp);
2706    while (eventType != XmlPullParser.END_TAG) {
2707    if (!parseActivityDefinitionParticipantComponentContent(eventType, xpp, res))
2708        unknownContent(xpp);
2709      eventType = nextNoWhitespace(xpp);
2710    }
2711    next(xpp);
2712    parseElementClose(res);
2713    return res;
2714  }
2715
2716  protected boolean parseActivityDefinitionParticipantComponentContent(int eventType, XmlPullParser xpp, ActivityDefinition.ActivityDefinitionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2717    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2718      res.setTypeElement(parseEnumeration(xpp, Enumerations.ActionParticipantType.NULL, new Enumerations.ActionParticipantTypeEnumFactory()));
2719    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeCanonical")) {
2720      res.setTypeCanonicalElement(parseCanonical(xpp));
2721    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeReference")) {
2722      res.setTypeReference(parseReference(xpp));
2723    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2724      res.setRole(parseCodeableConcept(xpp));
2725    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
2726      res.setFunction(parseCodeableConcept(xpp));
2727    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2728      return false;
2729    }
2730    return true;
2731  }
2732
2733  protected ActivityDefinition.ActivityDefinitionDynamicValueComponent parseActivityDefinitionDynamicValueComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2734    ActivityDefinition.ActivityDefinitionDynamicValueComponent res = new ActivityDefinition.ActivityDefinitionDynamicValueComponent();
2735    parseElementAttributes(xpp, res);
2736    next(xpp);
2737    int eventType = nextNoWhitespace(xpp);
2738    while (eventType != XmlPullParser.END_TAG) {
2739    if (!parseActivityDefinitionDynamicValueComponentContent(eventType, xpp, res))
2740        unknownContent(xpp);
2741      eventType = nextNoWhitespace(xpp);
2742    }
2743    next(xpp);
2744    parseElementClose(res);
2745    return res;
2746  }
2747
2748  protected boolean parseActivityDefinitionDynamicValueComponentContent(int eventType, XmlPullParser xpp, ActivityDefinition.ActivityDefinitionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2749    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
2750      res.setPathElement(parseString(xpp));
2751    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
2752      res.setExpression(parseExpression(xpp));
2753    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2754      return false;
2755    }
2756    return true;
2757  }
2758
2759  protected ActorDefinition parseActorDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2760    ActorDefinition res = new ActorDefinition();
2761    parseResourceAttributes(xpp, res);
2762    next(xpp);
2763    int eventType = nextNoWhitespace(xpp);
2764    while (eventType != XmlPullParser.END_TAG) {
2765    if (!parseActorDefinitionContent(eventType, xpp, res))
2766        unknownContent(xpp);
2767      eventType = nextNoWhitespace(xpp);
2768    }
2769    next(xpp);
2770    parseElementClose(res);
2771    return res;
2772  }
2773
2774  protected boolean parseActorDefinitionContent(int eventType, XmlPullParser xpp, ActorDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
2775    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2776      res.setUrlElement(parseUri(xpp));
2777    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2778      res.getIdentifier().add(parseIdentifier(xpp));
2779    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
2780      res.setVersionElement(parseString(xpp));
2781    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
2782      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
2783    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2784      res.setNameElement(parseString(xpp));
2785    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
2786      res.setTitleElement(parseString(xpp));
2787    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2788      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
2789    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
2790      res.setExperimentalElement(parseBoolean(xpp));
2791    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2792      res.setDateElement(parseDateTime(xpp));
2793    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
2794      res.setPublisherElement(parseString(xpp));
2795    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
2796      res.getContact().add(parseContactDetail(xpp));
2797    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2798      res.setDescriptionElement(parseMarkdown(xpp));
2799    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
2800      res.getUseContext().add(parseUsageContext(xpp));
2801    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
2802      res.getJurisdiction().add(parseCodeableConcept(xpp));
2803    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
2804      res.setPurposeElement(parseMarkdown(xpp));
2805    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
2806      res.setCopyrightElement(parseMarkdown(xpp));
2807    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
2808      res.setCopyrightLabelElement(parseString(xpp));
2809    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2810      res.setTypeElement(parseEnumeration(xpp, Enumerations.ExampleScenarioActorType.NULL, new Enumerations.ExampleScenarioActorTypeEnumFactory()));
2811    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
2812      res.setDocumentationElement(parseMarkdown(xpp));
2813    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
2814      res.getReference().add(parseUrl(xpp));
2815    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capabilities")) {
2816      res.setCapabilitiesElement(parseCanonical(xpp));
2817    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
2818      res.getDerivedFrom().add(parseCanonical(xpp));
2819    } else if (!parseCanonicalResourceContent(eventType, xpp, res)){ 
2820      return false;
2821    }
2822    return true;
2823  }
2824
2825  protected AdministrableProductDefinition parseAdministrableProductDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2826    AdministrableProductDefinition res = new AdministrableProductDefinition();
2827    parseResourceAttributes(xpp, res);
2828    next(xpp);
2829    int eventType = nextNoWhitespace(xpp);
2830    while (eventType != XmlPullParser.END_TAG) {
2831    if (!parseAdministrableProductDefinitionContent(eventType, xpp, res))
2832        unknownContent(xpp);
2833      eventType = nextNoWhitespace(xpp);
2834    }
2835    next(xpp);
2836    parseElementClose(res);
2837    return res;
2838  }
2839
2840  protected boolean parseAdministrableProductDefinitionContent(int eventType, XmlPullParser xpp, AdministrableProductDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
2841    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2842      res.getIdentifier().add(parseIdentifier(xpp));
2843    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2844      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
2845    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("formOf")) {
2846      res.getFormOf().add(parseReference(xpp));
2847    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrableDoseForm")) {
2848      res.setAdministrableDoseForm(parseCodeableConcept(xpp));
2849    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfPresentation")) {
2850      res.setUnitOfPresentation(parseCodeableConcept(xpp));
2851    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("producedFrom")) {
2852      res.getProducedFrom().add(parseReference(xpp));
2853    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
2854      res.getIngredient().add(parseCodeableConcept(xpp));
2855    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
2856      res.setDevice(parseReference(xpp));
2857    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2858      res.setDescriptionElement(parseMarkdown(xpp));
2859    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
2860      res.getProperty().add(parseAdministrableProductDefinitionPropertyComponent(xpp));
2861    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("routeOfAdministration")) {
2862      res.getRouteOfAdministration().add(parseAdministrableProductDefinitionRouteOfAdministrationComponent(xpp));
2863    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
2864      return false;
2865    }
2866    return true;
2867  }
2868
2869  protected AdministrableProductDefinition.AdministrableProductDefinitionPropertyComponent parseAdministrableProductDefinitionPropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2870    AdministrableProductDefinition.AdministrableProductDefinitionPropertyComponent res = new AdministrableProductDefinition.AdministrableProductDefinitionPropertyComponent();
2871    parseElementAttributes(xpp, res);
2872    next(xpp);
2873    int eventType = nextNoWhitespace(xpp);
2874    while (eventType != XmlPullParser.END_TAG) {
2875    if (!parseAdministrableProductDefinitionPropertyComponentContent(eventType, xpp, res))
2876        unknownContent(xpp);
2877      eventType = nextNoWhitespace(xpp);
2878    }
2879    next(xpp);
2880    parseElementClose(res);
2881    return res;
2882  }
2883
2884  protected boolean parseAdministrableProductDefinitionPropertyComponentContent(int eventType, XmlPullParser xpp, AdministrableProductDefinition.AdministrableProductDefinitionPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2885    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2886      res.setType(parseCodeableConcept(xpp));
2887    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
2888      res.setValue(parseType("value", xpp));
2889    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2890      res.setStatus(parseCodeableConcept(xpp));
2891    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2892      return false;
2893    }
2894    return true;
2895  }
2896
2897  protected AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationComponent parseAdministrableProductDefinitionRouteOfAdministrationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2898    AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationComponent res = new AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationComponent();
2899    parseElementAttributes(xpp, res);
2900    next(xpp);
2901    int eventType = nextNoWhitespace(xpp);
2902    while (eventType != XmlPullParser.END_TAG) {
2903    if (!parseAdministrableProductDefinitionRouteOfAdministrationComponentContent(eventType, xpp, res))
2904        unknownContent(xpp);
2905      eventType = nextNoWhitespace(xpp);
2906    }
2907    next(xpp);
2908    parseElementClose(res);
2909    return res;
2910  }
2911
2912  protected boolean parseAdministrableProductDefinitionRouteOfAdministrationComponentContent(int eventType, XmlPullParser xpp, AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2913    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2914      res.setCode(parseCodeableConcept(xpp));
2915    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("firstDose")) {
2916      res.setFirstDose(parseQuantity(xpp));
2917    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxSingleDose")) {
2918      res.setMaxSingleDose(parseQuantity(xpp));
2919    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerDay")) {
2920      res.setMaxDosePerDay(parseQuantity(xpp));
2921    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerTreatmentPeriod")) {
2922      res.setMaxDosePerTreatmentPeriod(parseRatio(xpp));
2923    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxTreatmentPeriod")) {
2924      res.setMaxTreatmentPeriod(parseDuration(xpp));
2925    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetSpecies")) {
2926      res.getTargetSpecies().add(parseAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent(xpp));
2927    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2928      return false;
2929    }
2930    return true;
2931  }
2932
2933  protected AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent parseAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2934    AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent res = new AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent();
2935    parseElementAttributes(xpp, res);
2936    next(xpp);
2937    int eventType = nextNoWhitespace(xpp);
2938    while (eventType != XmlPullParser.END_TAG) {
2939    if (!parseAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponentContent(eventType, xpp, res))
2940        unknownContent(xpp);
2941      eventType = nextNoWhitespace(xpp);
2942    }
2943    next(xpp);
2944    parseElementClose(res);
2945    return res;
2946  }
2947
2948  protected boolean parseAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponentContent(int eventType, XmlPullParser xpp, AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2949    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2950      res.setCode(parseCodeableConcept(xpp));
2951    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("withdrawalPeriod")) {
2952      res.getWithdrawalPeriod().add(parseAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(xpp));
2953    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2954      return false;
2955    }
2956    return true;
2957  }
2958
2959  protected AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent parseAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2960    AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent res = new AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent();
2961    parseElementAttributes(xpp, res);
2962    next(xpp);
2963    int eventType = nextNoWhitespace(xpp);
2964    while (eventType != XmlPullParser.END_TAG) {
2965    if (!parseAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentContent(eventType, xpp, res))
2966        unknownContent(xpp);
2967      eventType = nextNoWhitespace(xpp);
2968    }
2969    next(xpp);
2970    parseElementClose(res);
2971    return res;
2972  }
2973
2974  protected boolean parseAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentContent(int eventType, XmlPullParser xpp, AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2975    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tissue")) {
2976      res.setTissue(parseCodeableConcept(xpp));
2977    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
2978      res.setValue(parseQuantity(xpp));
2979    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
2980      res.setSupportingInformationElement(parseString(xpp));
2981    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
2982      return false;
2983    }
2984    return true;
2985  }
2986
2987  protected AdverseEvent parseAdverseEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2988    AdverseEvent res = new AdverseEvent();
2989    parseResourceAttributes(xpp, res);
2990    next(xpp);
2991    int eventType = nextNoWhitespace(xpp);
2992    while (eventType != XmlPullParser.END_TAG) {
2993    if (!parseAdverseEventContent(eventType, xpp, res))
2994        unknownContent(xpp);
2995      eventType = nextNoWhitespace(xpp);
2996    }
2997    next(xpp);
2998    parseElementClose(res);
2999    return res;
3000  }
3001
3002  protected boolean parseAdverseEventContent(int eventType, XmlPullParser xpp, AdverseEvent res) throws XmlPullParserException, IOException, FHIRFormatError {
3003    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3004      res.getIdentifier().add(parseIdentifier(xpp));
3005    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3006      res.setStatusElement(parseEnumeration(xpp, AdverseEvent.AdverseEventStatus.NULL, new AdverseEvent.AdverseEventStatusEnumFactory()));
3007    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actuality")) {
3008      res.setActualityElement(parseEnumeration(xpp, AdverseEvent.AdverseEventActuality.NULL, new AdverseEvent.AdverseEventActualityEnumFactory()));
3009    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3010      res.getCategory().add(parseCodeableConcept(xpp));
3011    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3012      res.setCode(parseCodeableConcept(xpp));
3013    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3014      res.setSubject(parseReference(xpp));
3015    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
3016      res.setEncounter(parseReference(xpp));
3017    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
3018      res.setOccurrence(parseType("occurrence", xpp));
3019    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detected")) {
3020      res.setDetectedElement(parseDateTime(xpp));
3021    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
3022      res.setRecordedDateElement(parseDateTime(xpp));
3023    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultingEffect")) {
3024      res.getResultingEffect().add(parseReference(xpp));
3025    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3026      res.setLocation(parseReference(xpp));
3027    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriousness")) {
3028      res.setSeriousness(parseCodeableConcept(xpp));
3029    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
3030      res.getOutcome().add(parseCodeableConcept(xpp));
3031    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
3032      res.setRecorder(parseReference(xpp));
3033    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
3034      res.getParticipant().add(parseAdverseEventParticipantComponent(xpp));
3035    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
3036      res.getStudy().add(parseReference(xpp));
3037    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expectedInResearchStudy")) {
3038      res.setExpectedInResearchStudyElement(parseBoolean(xpp));
3039    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suspectEntity")) {
3040      res.getSuspectEntity().add(parseAdverseEventSuspectEntityComponent(xpp));
3041    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributingFactor")) {
3042      res.getContributingFactor().add(parseAdverseEventContributingFactorComponent(xpp));
3043    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preventiveAction")) {
3044      res.getPreventiveAction().add(parseAdverseEventPreventiveActionComponent(xpp));
3045    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigatingAction")) {
3046      res.getMitigatingAction().add(parseAdverseEventMitigatingActionComponent(xpp));
3047    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
3048      res.getSupportingInfo().add(parseAdverseEventSupportingInfoComponent(xpp));
3049    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
3050      res.getNote().add(parseAnnotation(xpp));
3051    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
3052      return false;
3053    }
3054    return true;
3055  }
3056
3057  protected AdverseEvent.AdverseEventParticipantComponent parseAdverseEventParticipantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3058    AdverseEvent.AdverseEventParticipantComponent res = new AdverseEvent.AdverseEventParticipantComponent();
3059    parseElementAttributes(xpp, res);
3060    next(xpp);
3061    int eventType = nextNoWhitespace(xpp);
3062    while (eventType != XmlPullParser.END_TAG) {
3063    if (!parseAdverseEventParticipantComponentContent(eventType, xpp, res))
3064        unknownContent(xpp);
3065      eventType = nextNoWhitespace(xpp);
3066    }
3067    next(xpp);
3068    parseElementClose(res);
3069    return res;
3070  }
3071
3072  protected boolean parseAdverseEventParticipantComponentContent(int eventType, XmlPullParser xpp, AdverseEvent.AdverseEventParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3073    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
3074      res.setFunction(parseCodeableConcept(xpp));
3075    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
3076      res.setActor(parseReference(xpp));
3077    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3078      return false;
3079    }
3080    return true;
3081  }
3082
3083  protected AdverseEvent.AdverseEventSuspectEntityComponent parseAdverseEventSuspectEntityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3084    AdverseEvent.AdverseEventSuspectEntityComponent res = new AdverseEvent.AdverseEventSuspectEntityComponent();
3085    parseElementAttributes(xpp, res);
3086    next(xpp);
3087    int eventType = nextNoWhitespace(xpp);
3088    while (eventType != XmlPullParser.END_TAG) {
3089    if (!parseAdverseEventSuspectEntityComponentContent(eventType, xpp, res))
3090        unknownContent(xpp);
3091      eventType = nextNoWhitespace(xpp);
3092    }
3093    next(xpp);
3094    parseElementClose(res);
3095    return res;
3096  }
3097
3098  protected boolean parseAdverseEventSuspectEntityComponentContent(int eventType, XmlPullParser xpp, AdverseEvent.AdverseEventSuspectEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3099    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "instance")) {
3100      res.setInstance(parseType("instance", xpp));
3101    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causality")) {
3102      res.setCausality(parseAdverseEventSuspectEntityCausalityComponent(xpp));
3103    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3104      return false;
3105    }
3106    return true;
3107  }
3108
3109  protected AdverseEvent.AdverseEventSuspectEntityCausalityComponent parseAdverseEventSuspectEntityCausalityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3110    AdverseEvent.AdverseEventSuspectEntityCausalityComponent res = new AdverseEvent.AdverseEventSuspectEntityCausalityComponent();
3111    parseElementAttributes(xpp, res);
3112    next(xpp);
3113    int eventType = nextNoWhitespace(xpp);
3114    while (eventType != XmlPullParser.END_TAG) {
3115    if (!parseAdverseEventSuspectEntityCausalityComponentContent(eventType, xpp, res))
3116        unknownContent(xpp);
3117      eventType = nextNoWhitespace(xpp);
3118    }
3119    next(xpp);
3120    parseElementClose(res);
3121    return res;
3122  }
3123
3124  protected boolean parseAdverseEventSuspectEntityCausalityComponentContent(int eventType, XmlPullParser xpp, AdverseEvent.AdverseEventSuspectEntityCausalityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3125    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessmentMethod")) {
3126      res.setAssessmentMethod(parseCodeableConcept(xpp));
3127    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entityRelatedness")) {
3128      res.setEntityRelatedness(parseCodeableConcept(xpp));
3129    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
3130      res.setAuthor(parseReference(xpp));
3131    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3132      return false;
3133    }
3134    return true;
3135  }
3136
3137  protected AdverseEvent.AdverseEventContributingFactorComponent parseAdverseEventContributingFactorComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3138    AdverseEvent.AdverseEventContributingFactorComponent res = new AdverseEvent.AdverseEventContributingFactorComponent();
3139    parseElementAttributes(xpp, res);
3140    next(xpp);
3141    int eventType = nextNoWhitespace(xpp);
3142    while (eventType != XmlPullParser.END_TAG) {
3143    if (!parseAdverseEventContributingFactorComponentContent(eventType, xpp, res))
3144        unknownContent(xpp);
3145      eventType = nextNoWhitespace(xpp);
3146    }
3147    next(xpp);
3148    parseElementClose(res);
3149    return res;
3150  }
3151
3152  protected boolean parseAdverseEventContributingFactorComponentContent(int eventType, XmlPullParser xpp, AdverseEvent.AdverseEventContributingFactorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3153    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
3154      res.setItem(parseType("item", xpp));
3155    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3156      return false;
3157    }
3158    return true;
3159  }
3160
3161  protected AdverseEvent.AdverseEventPreventiveActionComponent parseAdverseEventPreventiveActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3162    AdverseEvent.AdverseEventPreventiveActionComponent res = new AdverseEvent.AdverseEventPreventiveActionComponent();
3163    parseElementAttributes(xpp, res);
3164    next(xpp);
3165    int eventType = nextNoWhitespace(xpp);
3166    while (eventType != XmlPullParser.END_TAG) {
3167    if (!parseAdverseEventPreventiveActionComponentContent(eventType, xpp, res))
3168        unknownContent(xpp);
3169      eventType = nextNoWhitespace(xpp);
3170    }
3171    next(xpp);
3172    parseElementClose(res);
3173    return res;
3174  }
3175
3176  protected boolean parseAdverseEventPreventiveActionComponentContent(int eventType, XmlPullParser xpp, AdverseEvent.AdverseEventPreventiveActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3177    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
3178      res.setItem(parseType("item", xpp));
3179    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3180      return false;
3181    }
3182    return true;
3183  }
3184
3185  protected AdverseEvent.AdverseEventMitigatingActionComponent parseAdverseEventMitigatingActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3186    AdverseEvent.AdverseEventMitigatingActionComponent res = new AdverseEvent.AdverseEventMitigatingActionComponent();
3187    parseElementAttributes(xpp, res);
3188    next(xpp);
3189    int eventType = nextNoWhitespace(xpp);
3190    while (eventType != XmlPullParser.END_TAG) {
3191    if (!parseAdverseEventMitigatingActionComponentContent(eventType, xpp, res))
3192        unknownContent(xpp);
3193      eventType = nextNoWhitespace(xpp);
3194    }
3195    next(xpp);
3196    parseElementClose(res);
3197    return res;
3198  }
3199
3200  protected boolean parseAdverseEventMitigatingActionComponentContent(int eventType, XmlPullParser xpp, AdverseEvent.AdverseEventMitigatingActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3201    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
3202      res.setItem(parseType("item", xpp));
3203    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3204      return false;
3205    }
3206    return true;
3207  }
3208
3209  protected AdverseEvent.AdverseEventSupportingInfoComponent parseAdverseEventSupportingInfoComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3210    AdverseEvent.AdverseEventSupportingInfoComponent res = new AdverseEvent.AdverseEventSupportingInfoComponent();
3211    parseElementAttributes(xpp, res);
3212    next(xpp);
3213    int eventType = nextNoWhitespace(xpp);
3214    while (eventType != XmlPullParser.END_TAG) {
3215    if (!parseAdverseEventSupportingInfoComponentContent(eventType, xpp, res))
3216        unknownContent(xpp);
3217      eventType = nextNoWhitespace(xpp);
3218    }
3219    next(xpp);
3220    parseElementClose(res);
3221    return res;
3222  }
3223
3224  protected boolean parseAdverseEventSupportingInfoComponentContent(int eventType, XmlPullParser xpp, AdverseEvent.AdverseEventSupportingInfoComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3225    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
3226      res.setItem(parseType("item", xpp));
3227    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3228      return false;
3229    }
3230    return true;
3231  }
3232
3233  protected AllergyIntolerance parseAllergyIntolerance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3234    AllergyIntolerance res = new AllergyIntolerance();
3235    parseResourceAttributes(xpp, res);
3236    next(xpp);
3237    int eventType = nextNoWhitespace(xpp);
3238    while (eventType != XmlPullParser.END_TAG) {
3239    if (!parseAllergyIntoleranceContent(eventType, xpp, res))
3240        unknownContent(xpp);
3241      eventType = nextNoWhitespace(xpp);
3242    }
3243    next(xpp);
3244    parseElementClose(res);
3245    return res;
3246  }
3247
3248  protected boolean parseAllergyIntoleranceContent(int eventType, XmlPullParser xpp, AllergyIntolerance res) throws XmlPullParserException, IOException, FHIRFormatError {
3249    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3250      res.getIdentifier().add(parseIdentifier(xpp));
3251    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
3252      res.setClinicalStatus(parseCodeableConcept(xpp));
3253    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
3254      res.setVerificationStatus(parseCodeableConcept(xpp));
3255    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3256      res.setType(parseCodeableConcept(xpp));
3257    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3258      res.getCategory().add(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCategory.NULL, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory()));
3259    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criticality")) {
3260      res.setCriticalityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCriticality.NULL, new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory()));
3261    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3262      res.setCode(parseCodeableConcept(xpp));
3263    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
3264      res.setPatient(parseReference(xpp));
3265    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
3266      res.setEncounter(parseReference(xpp));
3267    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
3268      res.setOnset(parseType("onset", xpp));
3269    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
3270      res.setRecordedDateElement(parseDateTime(xpp));
3271    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
3272      res.getParticipant().add(parseAllergyIntoleranceParticipantComponent(xpp));
3273    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastOccurrence")) {
3274      res.setLastOccurrenceElement(parseDateTime(xpp));
3275    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
3276      res.getNote().add(parseAnnotation(xpp));
3277    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
3278      res.getReaction().add(parseAllergyIntoleranceReactionComponent(xpp));
3279    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
3280      return false;
3281    }
3282    return true;
3283  }
3284
3285  protected AllergyIntolerance.AllergyIntoleranceParticipantComponent parseAllergyIntoleranceParticipantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3286    AllergyIntolerance.AllergyIntoleranceParticipantComponent res = new AllergyIntolerance.AllergyIntoleranceParticipantComponent();
3287    parseElementAttributes(xpp, res);
3288    next(xpp);
3289    int eventType = nextNoWhitespace(xpp);
3290    while (eventType != XmlPullParser.END_TAG) {
3291    if (!parseAllergyIntoleranceParticipantComponentContent(eventType, xpp, res))
3292        unknownContent(xpp);
3293      eventType = nextNoWhitespace(xpp);
3294    }
3295    next(xpp);
3296    parseElementClose(res);
3297    return res;
3298  }
3299
3300  protected boolean parseAllergyIntoleranceParticipantComponentContent(int eventType, XmlPullParser xpp, AllergyIntolerance.AllergyIntoleranceParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3301    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
3302      res.setFunction(parseCodeableConcept(xpp));
3303    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
3304      res.setActor(parseReference(xpp));
3305    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3306      return false;
3307    }
3308    return true;
3309  }
3310
3311  protected AllergyIntolerance.AllergyIntoleranceReactionComponent parseAllergyIntoleranceReactionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3312    AllergyIntolerance.AllergyIntoleranceReactionComponent res = new AllergyIntolerance.AllergyIntoleranceReactionComponent();
3313    parseElementAttributes(xpp, res);
3314    next(xpp);
3315    int eventType = nextNoWhitespace(xpp);
3316    while (eventType != XmlPullParser.END_TAG) {
3317    if (!parseAllergyIntoleranceReactionComponentContent(eventType, xpp, res))
3318        unknownContent(xpp);
3319      eventType = nextNoWhitespace(xpp);
3320    }
3321    next(xpp);
3322    parseElementClose(res);
3323    return res;
3324  }
3325
3326  protected boolean parseAllergyIntoleranceReactionComponentContent(int eventType, XmlPullParser xpp, AllergyIntolerance.AllergyIntoleranceReactionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3327    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
3328      res.setSubstance(parseCodeableConcept(xpp));
3329    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifestation")) {
3330      res.getManifestation().add(parseCodeableReference(xpp));
3331    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3332      res.setDescriptionElement(parseString(xpp));
3333    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onset")) {
3334      res.setOnsetElement(parseDateTime(xpp));
3335    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
3336      res.setSeverityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceSeverity.NULL, new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory()));
3337    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureRoute")) {
3338      res.setExposureRoute(parseCodeableConcept(xpp));
3339    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
3340      res.getNote().add(parseAnnotation(xpp));
3341    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3342      return false;
3343    }
3344    return true;
3345  }
3346
3347  protected Appointment parseAppointment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3348    Appointment res = new Appointment();
3349    parseResourceAttributes(xpp, res);
3350    next(xpp);
3351    int eventType = nextNoWhitespace(xpp);
3352    while (eventType != XmlPullParser.END_TAG) {
3353    if (!parseAppointmentContent(eventType, xpp, res))
3354        unknownContent(xpp);
3355      eventType = nextNoWhitespace(xpp);
3356    }
3357    next(xpp);
3358    parseElementClose(res);
3359    return res;
3360  }
3361
3362  protected boolean parseAppointmentContent(int eventType, XmlPullParser xpp, Appointment res) throws XmlPullParserException, IOException, FHIRFormatError {
3363    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3364      res.getIdentifier().add(parseIdentifier(xpp));
3365    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3366      res.setStatusElement(parseEnumeration(xpp, Appointment.AppointmentStatus.NULL, new Appointment.AppointmentStatusEnumFactory()));
3367    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cancellationReason")) {
3368      res.setCancellationReason(parseCodeableConcept(xpp));
3369    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
3370      res.getClass_().add(parseCodeableConcept(xpp));
3371    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
3372      res.getServiceCategory().add(parseCodeableConcept(xpp));
3373    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
3374      res.getServiceType().add(parseCodeableReference(xpp));
3375    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
3376      res.getSpecialty().add(parseCodeableConcept(xpp));
3377    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
3378      res.setAppointmentType(parseCodeableConcept(xpp));
3379    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
3380      res.getReason().add(parseCodeableReference(xpp));
3381    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
3382      res.setPriority(parseCodeableConcept(xpp));
3383    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3384      res.setDescriptionElement(parseString(xpp));
3385    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
3386      res.getReplaces().add(parseReference(xpp));
3387    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("virtualService")) {
3388      res.getVirtualService().add(parseVirtualServiceDetail(xpp));
3389    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
3390      res.getSupportingInformation().add(parseReference(xpp));
3391    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("previousAppointment")) {
3392      res.setPreviousAppointment(parseReference(xpp));
3393    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originatingAppointment")) {
3394      res.setOriginatingAppointment(parseReference(xpp));
3395    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
3396      res.setStartElement(parseInstant(xpp));
3397    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
3398      res.setEndElement(parseInstant(xpp));
3399    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minutesDuration")) {
3400      res.setMinutesDurationElement(parsePositiveInt(xpp));
3401    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestedPeriod")) {
3402      res.getRequestedPeriod().add(parsePeriod(xpp));
3403    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slot")) {
3404      res.getSlot().add(parseReference(xpp));
3405    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
3406      res.getAccount().add(parseReference(xpp));
3407    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
3408      res.setCreatedElement(parseDateTime(xpp));
3409    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cancellationDate")) {
3410      res.setCancellationDateElement(parseDateTime(xpp));
3411    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
3412      res.getNote().add(parseAnnotation(xpp));
3413    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
3414      res.getPatientInstruction().add(parseCodeableReference(xpp));
3415    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
3416      res.getBasedOn().add(parseReference(xpp));
3417    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3418      res.setSubject(parseReference(xpp));
3419    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
3420      res.getParticipant().add(parseAppointmentParticipantComponent(xpp));
3421    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recurrenceId")) {
3422      res.setRecurrenceIdElement(parsePositiveInt(xpp));
3423    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occurrenceChanged")) {
3424      res.setOccurrenceChangedElement(parseBoolean(xpp));
3425    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recurrenceTemplate")) {
3426      res.getRecurrenceTemplate().add(parseAppointmentRecurrenceTemplateComponent(xpp));
3427    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
3428      return false;
3429    }
3430    return true;
3431  }
3432
3433  protected Appointment.AppointmentParticipantComponent parseAppointmentParticipantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3434    Appointment.AppointmentParticipantComponent res = new Appointment.AppointmentParticipantComponent();
3435    parseElementAttributes(xpp, res);
3436    next(xpp);
3437    int eventType = nextNoWhitespace(xpp);
3438    while (eventType != XmlPullParser.END_TAG) {
3439    if (!parseAppointmentParticipantComponentContent(eventType, xpp, res))
3440        unknownContent(xpp);
3441      eventType = nextNoWhitespace(xpp);
3442    }
3443    next(xpp);
3444    parseElementClose(res);
3445    return res;
3446  }
3447
3448  protected boolean parseAppointmentParticipantComponentContent(int eventType, XmlPullParser xpp, Appointment.AppointmentParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3449    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3450      res.getType().add(parseCodeableConcept(xpp));
3451    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3452      res.setPeriod(parsePeriod(xpp));
3453    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
3454      res.setActor(parseReference(xpp));
3455    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
3456      res.setRequiredElement(parseBoolean(xpp));
3457    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3458      res.setStatusElement(parseEnumeration(xpp, Appointment.ParticipationStatus.NULL, new Appointment.ParticipationStatusEnumFactory()));
3459    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3460      return false;
3461    }
3462    return true;
3463  }
3464
3465  protected Appointment.AppointmentRecurrenceTemplateComponent parseAppointmentRecurrenceTemplateComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3466    Appointment.AppointmentRecurrenceTemplateComponent res = new Appointment.AppointmentRecurrenceTemplateComponent();
3467    parseElementAttributes(xpp, res);
3468    next(xpp);
3469    int eventType = nextNoWhitespace(xpp);
3470    while (eventType != XmlPullParser.END_TAG) {
3471    if (!parseAppointmentRecurrenceTemplateComponentContent(eventType, xpp, res))
3472        unknownContent(xpp);
3473      eventType = nextNoWhitespace(xpp);
3474    }
3475    next(xpp);
3476    parseElementClose(res);
3477    return res;
3478  }
3479
3480  protected boolean parseAppointmentRecurrenceTemplateComponentContent(int eventType, XmlPullParser xpp, Appointment.AppointmentRecurrenceTemplateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3481    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timezone")) {
3482      res.setTimezone(parseCodeableConcept(xpp));
3483    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recurrenceType")) {
3484      res.setRecurrenceType(parseCodeableConcept(xpp));
3485    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastOccurrenceDate")) {
3486      res.setLastOccurrenceDateElement(parseDate(xpp));
3487    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occurrenceCount")) {
3488      res.setOccurrenceCountElement(parsePositiveInt(xpp));
3489    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occurrenceDate")) {
3490      res.getOccurrenceDate().add(parseDate(xpp));
3491    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("weeklyTemplate")) {
3492      res.setWeeklyTemplate(parseAppointmentRecurrenceTemplateWeeklyTemplateComponent(xpp));
3493    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monthlyTemplate")) {
3494      res.setMonthlyTemplate(parseAppointmentRecurrenceTemplateMonthlyTemplateComponent(xpp));
3495    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("yearlyTemplate")) {
3496      res.setYearlyTemplate(parseAppointmentRecurrenceTemplateYearlyTemplateComponent(xpp));
3497    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludingDate")) {
3498      res.getExcludingDate().add(parseDate(xpp));
3499    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludingRecurrenceId")) {
3500      res.getExcludingRecurrenceId().add(parsePositiveInt(xpp));
3501    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3502      return false;
3503    }
3504    return true;
3505  }
3506
3507  protected Appointment.AppointmentRecurrenceTemplateWeeklyTemplateComponent parseAppointmentRecurrenceTemplateWeeklyTemplateComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3508    Appointment.AppointmentRecurrenceTemplateWeeklyTemplateComponent res = new Appointment.AppointmentRecurrenceTemplateWeeklyTemplateComponent();
3509    parseElementAttributes(xpp, res);
3510    next(xpp);
3511    int eventType = nextNoWhitespace(xpp);
3512    while (eventType != XmlPullParser.END_TAG) {
3513    if (!parseAppointmentRecurrenceTemplateWeeklyTemplateComponentContent(eventType, xpp, res))
3514        unknownContent(xpp);
3515      eventType = nextNoWhitespace(xpp);
3516    }
3517    next(xpp);
3518    parseElementClose(res);
3519    return res;
3520  }
3521
3522  protected boolean parseAppointmentRecurrenceTemplateWeeklyTemplateComponentContent(int eventType, XmlPullParser xpp, Appointment.AppointmentRecurrenceTemplateWeeklyTemplateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3523    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monday")) {
3524      res.setMondayElement(parseBoolean(xpp));
3525    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tuesday")) {
3526      res.setTuesdayElement(parseBoolean(xpp));
3527    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wednesday")) {
3528      res.setWednesdayElement(parseBoolean(xpp));
3529    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("thursday")) {
3530      res.setThursdayElement(parseBoolean(xpp));
3531    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("friday")) {
3532      res.setFridayElement(parseBoolean(xpp));
3533    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("saturday")) {
3534      res.setSaturdayElement(parseBoolean(xpp));
3535    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sunday")) {
3536      res.setSundayElement(parseBoolean(xpp));
3537    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("weekInterval")) {
3538      res.setWeekIntervalElement(parsePositiveInt(xpp));
3539    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3540      return false;
3541    }
3542    return true;
3543  }
3544
3545  protected Appointment.AppointmentRecurrenceTemplateMonthlyTemplateComponent parseAppointmentRecurrenceTemplateMonthlyTemplateComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3546    Appointment.AppointmentRecurrenceTemplateMonthlyTemplateComponent res = new Appointment.AppointmentRecurrenceTemplateMonthlyTemplateComponent();
3547    parseElementAttributes(xpp, res);
3548    next(xpp);
3549    int eventType = nextNoWhitespace(xpp);
3550    while (eventType != XmlPullParser.END_TAG) {
3551    if (!parseAppointmentRecurrenceTemplateMonthlyTemplateComponentContent(eventType, xpp, res))
3552        unknownContent(xpp);
3553      eventType = nextNoWhitespace(xpp);
3554    }
3555    next(xpp);
3556    parseElementClose(res);
3557    return res;
3558  }
3559
3560  protected boolean parseAppointmentRecurrenceTemplateMonthlyTemplateComponentContent(int eventType, XmlPullParser xpp, Appointment.AppointmentRecurrenceTemplateMonthlyTemplateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3561    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dayOfMonth")) {
3562      res.setDayOfMonthElement(parsePositiveInt(xpp));
3563    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nthWeekOfMonth")) {
3564      res.setNthWeekOfMonth(parseCoding(xpp));
3565    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dayOfWeek")) {
3566      res.setDayOfWeek(parseCoding(xpp));
3567    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monthInterval")) {
3568      res.setMonthIntervalElement(parsePositiveInt(xpp));
3569    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3570      return false;
3571    }
3572    return true;
3573  }
3574
3575  protected Appointment.AppointmentRecurrenceTemplateYearlyTemplateComponent parseAppointmentRecurrenceTemplateYearlyTemplateComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3576    Appointment.AppointmentRecurrenceTemplateYearlyTemplateComponent res = new Appointment.AppointmentRecurrenceTemplateYearlyTemplateComponent();
3577    parseElementAttributes(xpp, res);
3578    next(xpp);
3579    int eventType = nextNoWhitespace(xpp);
3580    while (eventType != XmlPullParser.END_TAG) {
3581    if (!parseAppointmentRecurrenceTemplateYearlyTemplateComponentContent(eventType, xpp, res))
3582        unknownContent(xpp);
3583      eventType = nextNoWhitespace(xpp);
3584    }
3585    next(xpp);
3586    parseElementClose(res);
3587    return res;
3588  }
3589
3590  protected boolean parseAppointmentRecurrenceTemplateYearlyTemplateComponentContent(int eventType, XmlPullParser xpp, Appointment.AppointmentRecurrenceTemplateYearlyTemplateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3591    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("yearInterval")) {
3592      res.setYearIntervalElement(parsePositiveInt(xpp));
3593    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3594      return false;
3595    }
3596    return true;
3597  }
3598
3599  protected AppointmentResponse parseAppointmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3600    AppointmentResponse res = new AppointmentResponse();
3601    parseResourceAttributes(xpp, res);
3602    next(xpp);
3603    int eventType = nextNoWhitespace(xpp);
3604    while (eventType != XmlPullParser.END_TAG) {
3605    if (!parseAppointmentResponseContent(eventType, xpp, res))
3606        unknownContent(xpp);
3607      eventType = nextNoWhitespace(xpp);
3608    }
3609    next(xpp);
3610    parseElementClose(res);
3611    return res;
3612  }
3613
3614  protected boolean parseAppointmentResponseContent(int eventType, XmlPullParser xpp, AppointmentResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
3615    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3616      res.getIdentifier().add(parseIdentifier(xpp));
3617    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
3618      res.setAppointment(parseReference(xpp));
3619    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("proposedNewTime")) {
3620      res.setProposedNewTimeElement(parseBoolean(xpp));
3621    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
3622      res.setStartElement(parseInstant(xpp));
3623    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
3624      res.setEndElement(parseInstant(xpp));
3625    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantType")) {
3626      res.getParticipantType().add(parseCodeableConcept(xpp));
3627    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
3628      res.setActor(parseReference(xpp));
3629    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantStatus")) {
3630      res.setParticipantStatusElement(parseEnumeration(xpp, AppointmentResponse.AppointmentResponseStatus.NULL, new AppointmentResponse.AppointmentResponseStatusEnumFactory()));
3631    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
3632      res.setCommentElement(parseMarkdown(xpp));
3633    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recurring")) {
3634      res.setRecurringElement(parseBoolean(xpp));
3635    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occurrenceDate")) {
3636      res.setOccurrenceDateElement(parseDate(xpp));
3637    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recurrenceId")) {
3638      res.setRecurrenceIdElement(parsePositiveInt(xpp));
3639    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
3640      return false;
3641    }
3642    return true;
3643  }
3644
3645  protected ArtifactAssessment parseArtifactAssessment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3646    ArtifactAssessment res = new ArtifactAssessment();
3647    parseResourceAttributes(xpp, res);
3648    next(xpp);
3649    int eventType = nextNoWhitespace(xpp);
3650    while (eventType != XmlPullParser.END_TAG) {
3651    if (!parseArtifactAssessmentContent(eventType, xpp, res))
3652        unknownContent(xpp);
3653      eventType = nextNoWhitespace(xpp);
3654    }
3655    next(xpp);
3656    parseElementClose(res);
3657    return res;
3658  }
3659
3660  protected boolean parseArtifactAssessmentContent(int eventType, XmlPullParser xpp, ArtifactAssessment res) throws XmlPullParserException, IOException, FHIRFormatError {
3661    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3662      res.getIdentifier().add(parseIdentifier(xpp));
3663    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
3664      res.setTitleElement(parseString(xpp));
3665    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "citeAs")) {
3666      res.setCiteAs(parseType("citeAs", xpp));
3667    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3668      res.setDateElement(parseDateTime(xpp));
3669    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
3670      res.setCopyrightElement(parseMarkdown(xpp));
3671    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
3672      res.setApprovalDateElement(parseDate(xpp));
3673    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
3674      res.setLastReviewDateElement(parseDate(xpp));
3675    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "artifact")) {
3676      res.setArtifact(parseType("artifact", xpp));
3677    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
3678      res.getContent().add(parseArtifactAssessmentContentComponent(xpp));
3679    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("workflowStatus")) {
3680      res.setWorkflowStatusElement(parseEnumeration(xpp, ArtifactAssessment.ArtifactAssessmentWorkflowStatus.NULL, new ArtifactAssessment.ArtifactAssessmentWorkflowStatusEnumFactory()));
3681    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
3682      res.setDispositionElement(parseEnumeration(xpp, ArtifactAssessment.ArtifactAssessmentDisposition.NULL, new ArtifactAssessment.ArtifactAssessmentDispositionEnumFactory()));
3683    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
3684      return false;
3685    }
3686    return true;
3687  }
3688
3689  protected ArtifactAssessment.ArtifactAssessmentContentComponent parseArtifactAssessmentContentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3690    ArtifactAssessment.ArtifactAssessmentContentComponent res = new ArtifactAssessment.ArtifactAssessmentContentComponent();
3691    parseElementAttributes(xpp, res);
3692    next(xpp);
3693    int eventType = nextNoWhitespace(xpp);
3694    while (eventType != XmlPullParser.END_TAG) {
3695    if (!parseArtifactAssessmentContentComponentContent(eventType, xpp, res))
3696        unknownContent(xpp);
3697      eventType = nextNoWhitespace(xpp);
3698    }
3699    next(xpp);
3700    parseElementClose(res);
3701    return res;
3702  }
3703
3704  protected boolean parseArtifactAssessmentContentComponentContent(int eventType, XmlPullParser xpp, ArtifactAssessment.ArtifactAssessmentContentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3705    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationType")) {
3706      res.setInformationTypeElement(parseEnumeration(xpp, ArtifactAssessment.ArtifactAssessmentInformationType.NULL, new ArtifactAssessment.ArtifactAssessmentInformationTypeEnumFactory()));
3707    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
3708      res.setSummaryElement(parseMarkdown(xpp));
3709    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3710      res.setType(parseCodeableConcept(xpp));
3711    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classifier")) {
3712      res.getClassifier().add(parseCodeableConcept(xpp));
3713    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3714      res.setQuantity(parseQuantity(xpp));
3715    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
3716      res.setAuthor(parseReference(xpp));
3717    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
3718      res.getPath().add(parseUri(xpp));
3719    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
3720      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
3721    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("freeToShare")) {
3722      res.setFreeToShareElement(parseBoolean(xpp));
3723    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
3724      res.getComponent().add(parseArtifactAssessmentContentComponent(xpp));
3725    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3726      return false;
3727    }
3728    return true;
3729  }
3730
3731  protected AuditEvent parseAuditEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3732    AuditEvent res = new AuditEvent();
3733    parseResourceAttributes(xpp, res);
3734    next(xpp);
3735    int eventType = nextNoWhitespace(xpp);
3736    while (eventType != XmlPullParser.END_TAG) {
3737    if (!parseAuditEventContent(eventType, xpp, res))
3738        unknownContent(xpp);
3739      eventType = nextNoWhitespace(xpp);
3740    }
3741    next(xpp);
3742    parseElementClose(res);
3743    return res;
3744  }
3745
3746  protected boolean parseAuditEventContent(int eventType, XmlPullParser xpp, AuditEvent res) throws XmlPullParserException, IOException, FHIRFormatError {
3747    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3748      res.getCategory().add(parseCodeableConcept(xpp));
3749    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3750      res.setCode(parseCodeableConcept(xpp));
3751    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
3752      res.setActionElement(parseEnumeration(xpp, AuditEvent.AuditEventAction.NULL, new AuditEvent.AuditEventActionEnumFactory()));
3753    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
3754      res.setSeverityElement(parseEnumeration(xpp, AuditEvent.AuditEventSeverity.NULL, new AuditEvent.AuditEventSeverityEnumFactory()));
3755    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurred")) {
3756      res.setOccurred(parseType("occurred", xpp));
3757    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
3758      res.setRecordedElement(parseInstant(xpp));
3759    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
3760      res.setOutcome(parseAuditEventOutcomeComponent(xpp));
3761    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorization")) {
3762      res.getAuthorization().add(parseCodeableConcept(xpp));
3763    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
3764      res.getBasedOn().add(parseReference(xpp));
3765    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
3766      res.setPatient(parseReference(xpp));
3767    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
3768      res.setEncounter(parseReference(xpp));
3769    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
3770      res.getAgent().add(parseAuditEventAgentComponent(xpp));
3771    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
3772      res.setSource(parseAuditEventSourceComponent(xpp));
3773    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
3774      res.getEntity().add(parseAuditEventEntityComponent(xpp));
3775    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
3776      return false;
3777    }
3778    return true;
3779  }
3780
3781  protected AuditEvent.AuditEventOutcomeComponent parseAuditEventOutcomeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3782    AuditEvent.AuditEventOutcomeComponent res = new AuditEvent.AuditEventOutcomeComponent();
3783    parseElementAttributes(xpp, res);
3784    next(xpp);
3785    int eventType = nextNoWhitespace(xpp);
3786    while (eventType != XmlPullParser.END_TAG) {
3787    if (!parseAuditEventOutcomeComponentContent(eventType, xpp, res))
3788        unknownContent(xpp);
3789      eventType = nextNoWhitespace(xpp);
3790    }
3791    next(xpp);
3792    parseElementClose(res);
3793    return res;
3794  }
3795
3796  protected boolean parseAuditEventOutcomeComponentContent(int eventType, XmlPullParser xpp, AuditEvent.AuditEventOutcomeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3797    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3798      res.setCode(parseCoding(xpp));
3799    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
3800      res.getDetail().add(parseCodeableConcept(xpp));
3801    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3802      return false;
3803    }
3804    return true;
3805  }
3806
3807  protected AuditEvent.AuditEventAgentComponent parseAuditEventAgentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3808    AuditEvent.AuditEventAgentComponent res = new AuditEvent.AuditEventAgentComponent();
3809    parseElementAttributes(xpp, res);
3810    next(xpp);
3811    int eventType = nextNoWhitespace(xpp);
3812    while (eventType != XmlPullParser.END_TAG) {
3813    if (!parseAuditEventAgentComponentContent(eventType, xpp, res))
3814        unknownContent(xpp);
3815      eventType = nextNoWhitespace(xpp);
3816    }
3817    next(xpp);
3818    parseElementClose(res);
3819    return res;
3820  }
3821
3822  protected boolean parseAuditEventAgentComponentContent(int eventType, XmlPullParser xpp, AuditEvent.AuditEventAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3823    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3824      res.setType(parseCodeableConcept(xpp));
3825    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
3826      res.getRole().add(parseCodeableConcept(xpp));
3827    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
3828      res.setWho(parseReference(xpp));
3829    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
3830      res.setRequestorElement(parseBoolean(xpp));
3831    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3832      res.setLocation(parseReference(xpp));
3833    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
3834      res.getPolicy().add(parseUri(xpp));
3835    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "network")) {
3836      res.setNetwork(parseType("network", xpp));
3837    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorization")) {
3838      res.getAuthorization().add(parseCodeableConcept(xpp));
3839    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3840      return false;
3841    }
3842    return true;
3843  }
3844
3845  protected AuditEvent.AuditEventSourceComponent parseAuditEventSourceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3846    AuditEvent.AuditEventSourceComponent res = new AuditEvent.AuditEventSourceComponent();
3847    parseElementAttributes(xpp, res);
3848    next(xpp);
3849    int eventType = nextNoWhitespace(xpp);
3850    while (eventType != XmlPullParser.END_TAG) {
3851    if (!parseAuditEventSourceComponentContent(eventType, xpp, res))
3852        unknownContent(xpp);
3853      eventType = nextNoWhitespace(xpp);
3854    }
3855    next(xpp);
3856    parseElementClose(res);
3857    return res;
3858  }
3859
3860  protected boolean parseAuditEventSourceComponentContent(int eventType, XmlPullParser xpp, AuditEvent.AuditEventSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3861    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
3862      res.setSite(parseReference(xpp));
3863    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observer")) {
3864      res.setObserver(parseReference(xpp));
3865    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3866      res.getType().add(parseCodeableConcept(xpp));
3867    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3868      return false;
3869    }
3870    return true;
3871  }
3872
3873  protected AuditEvent.AuditEventEntityComponent parseAuditEventEntityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3874    AuditEvent.AuditEventEntityComponent res = new AuditEvent.AuditEventEntityComponent();
3875    parseElementAttributes(xpp, res);
3876    next(xpp);
3877    int eventType = nextNoWhitespace(xpp);
3878    while (eventType != XmlPullParser.END_TAG) {
3879    if (!parseAuditEventEntityComponentContent(eventType, xpp, res))
3880        unknownContent(xpp);
3881      eventType = nextNoWhitespace(xpp);
3882    }
3883    next(xpp);
3884    parseElementClose(res);
3885    return res;
3886  }
3887
3888  protected boolean parseAuditEventEntityComponentContent(int eventType, XmlPullParser xpp, AuditEvent.AuditEventEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3889    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("what")) {
3890      res.setWhat(parseReference(xpp));
3891    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
3892      res.setRole(parseCodeableConcept(xpp));
3893    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
3894      res.getSecurityLabel().add(parseCodeableConcept(xpp));
3895    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("query")) {
3896      res.setQueryElement(parseBase64Binary(xpp));
3897    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
3898      res.getDetail().add(parseAuditEventEntityDetailComponent(xpp));
3899    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
3900      res.getAgent().add(parseAuditEventAgentComponent(xpp));
3901    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3902      return false;
3903    }
3904    return true;
3905  }
3906
3907  protected AuditEvent.AuditEventEntityDetailComponent parseAuditEventEntityDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3908    AuditEvent.AuditEventEntityDetailComponent res = new AuditEvent.AuditEventEntityDetailComponent();
3909    parseElementAttributes(xpp, res);
3910    next(xpp);
3911    int eventType = nextNoWhitespace(xpp);
3912    while (eventType != XmlPullParser.END_TAG) {
3913    if (!parseAuditEventEntityDetailComponentContent(eventType, xpp, res))
3914        unknownContent(xpp);
3915      eventType = nextNoWhitespace(xpp);
3916    }
3917    next(xpp);
3918    parseElementClose(res);
3919    return res;
3920  }
3921
3922  protected boolean parseAuditEventEntityDetailComponentContent(int eventType, XmlPullParser xpp, AuditEvent.AuditEventEntityDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3923    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3924      res.setType(parseCodeableConcept(xpp));
3925    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
3926      res.setValue(parseType("value", xpp));
3927    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
3928      return false;
3929    }
3930    return true;
3931  }
3932
3933  protected Basic parseBasic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3934    Basic res = new Basic();
3935    parseResourceAttributes(xpp, res);
3936    next(xpp);
3937    int eventType = nextNoWhitespace(xpp);
3938    while (eventType != XmlPullParser.END_TAG) {
3939    if (!parseBasicContent(eventType, xpp, res))
3940        unknownContent(xpp);
3941      eventType = nextNoWhitespace(xpp);
3942    }
3943    next(xpp);
3944    parseElementClose(res);
3945    return res;
3946  }
3947
3948  protected boolean parseBasicContent(int eventType, XmlPullParser xpp, Basic res) throws XmlPullParserException, IOException, FHIRFormatError {
3949    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3950      res.getIdentifier().add(parseIdentifier(xpp));
3951    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3952      res.setCode(parseCodeableConcept(xpp));
3953    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3954      res.setSubject(parseReference(xpp));
3955    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
3956      res.setCreatedElement(parseDateTime(xpp));
3957    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
3958      res.setAuthor(parseReference(xpp));
3959    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
3960      return false;
3961    }
3962    return true;
3963  }
3964
3965  protected Binary parseBinary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3966    Binary res = new Binary();
3967    parseResourceAttributes(xpp, res);
3968    next(xpp);
3969    int eventType = nextNoWhitespace(xpp);
3970    while (eventType != XmlPullParser.END_TAG) {
3971    if (!parseBinaryContent(eventType, xpp, res))
3972        unknownContent(xpp);
3973      eventType = nextNoWhitespace(xpp);
3974    }
3975    next(xpp);
3976    parseElementClose(res);
3977    return res;
3978  }
3979
3980  protected boolean parseBinaryContent(int eventType, XmlPullParser xpp, Binary res) throws XmlPullParserException, IOException, FHIRFormatError {
3981    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
3982      res.setContentTypeElement(parseCode(xpp));
3983    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityContext")) {
3984      res.setSecurityContext(parseReference(xpp));
3985    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
3986      res.setDataElement(parseBase64Binary(xpp));
3987    } else if (!parseResourceContent(eventType, xpp, res)){ 
3988      return false;
3989    }
3990    return true;
3991  }
3992
3993  protected BiologicallyDerivedProduct parseBiologicallyDerivedProduct(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3994    BiologicallyDerivedProduct res = new BiologicallyDerivedProduct();
3995    parseResourceAttributes(xpp, res);
3996    next(xpp);
3997    int eventType = nextNoWhitespace(xpp);
3998    while (eventType != XmlPullParser.END_TAG) {
3999    if (!parseBiologicallyDerivedProductContent(eventType, xpp, res))
4000        unknownContent(xpp);
4001      eventType = nextNoWhitespace(xpp);
4002    }
4003    next(xpp);
4004    parseElementClose(res);
4005    return res;
4006  }
4007
4008  protected boolean parseBiologicallyDerivedProductContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct res) throws XmlPullParserException, IOException, FHIRFormatError {
4009    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productCategory")) {
4010      res.setProductCategory(parseCoding(xpp));
4011    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productCode")) {
4012      res.setProductCode(parseCodeableConcept(xpp));
4013    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
4014      res.getParent().add(parseReference(xpp));
4015    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
4016      res.getRequest().add(parseReference(xpp));
4017    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4018      res.getIdentifier().add(parseIdentifier(xpp));
4019    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("biologicalSourceEvent")) {
4020      res.setBiologicalSourceEvent(parseIdentifier(xpp));
4021    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processingFacility")) {
4022      res.getProcessingFacility().add(parseReference(xpp));
4023    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("division")) {
4024      res.setDivisionElement(parseString(xpp));
4025    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productStatus")) {
4026      res.setProductStatus(parseCoding(xpp));
4027    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
4028      res.setExpirationDateElement(parseDateTime(xpp));
4029    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
4030      res.setCollection(parseBiologicallyDerivedProductCollectionComponent(xpp));
4031    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("storageTempRequirements")) {
4032      res.setStorageTempRequirements(parseRange(xpp));
4033    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
4034      res.getProperty().add(parseBiologicallyDerivedProductPropertyComponent(xpp));
4035    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
4036      return false;
4037    }
4038    return true;
4039  }
4040
4041  protected BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent parseBiologicallyDerivedProductCollectionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4042    BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent();
4043    parseElementAttributes(xpp, res);
4044    next(xpp);
4045    int eventType = nextNoWhitespace(xpp);
4046    while (eventType != XmlPullParser.END_TAG) {
4047    if (!parseBiologicallyDerivedProductCollectionComponentContent(eventType, xpp, res))
4048        unknownContent(xpp);
4049      eventType = nextNoWhitespace(xpp);
4050    }
4051    next(xpp);
4052    parseElementClose(res);
4053    return res;
4054  }
4055
4056  protected boolean parseBiologicallyDerivedProductCollectionComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4057    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collector")) {
4058      res.setCollector(parseReference(xpp));
4059    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
4060      res.setSource(parseReference(xpp));
4061    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "collected")) {
4062      res.setCollected(parseType("collected", xpp));
4063    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4064      return false;
4065    }
4066    return true;
4067  }
4068
4069  protected BiologicallyDerivedProduct.BiologicallyDerivedProductPropertyComponent parseBiologicallyDerivedProductPropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4070    BiologicallyDerivedProduct.BiologicallyDerivedProductPropertyComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductPropertyComponent();
4071    parseElementAttributes(xpp, res);
4072    next(xpp);
4073    int eventType = nextNoWhitespace(xpp);
4074    while (eventType != XmlPullParser.END_TAG) {
4075    if (!parseBiologicallyDerivedProductPropertyComponentContent(eventType, xpp, res))
4076        unknownContent(xpp);
4077      eventType = nextNoWhitespace(xpp);
4078    }
4079    next(xpp);
4080    parseElementClose(res);
4081    return res;
4082  }
4083
4084  protected boolean parseBiologicallyDerivedProductPropertyComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4085    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4086      res.setType(parseCodeableConcept(xpp));
4087    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
4088      res.setValue(parseType("value", xpp));
4089    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4090      return false;
4091    }
4092    return true;
4093  }
4094
4095  protected BiologicallyDerivedProductDispense parseBiologicallyDerivedProductDispense(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4096    BiologicallyDerivedProductDispense res = new BiologicallyDerivedProductDispense();
4097    parseResourceAttributes(xpp, res);
4098    next(xpp);
4099    int eventType = nextNoWhitespace(xpp);
4100    while (eventType != XmlPullParser.END_TAG) {
4101    if (!parseBiologicallyDerivedProductDispenseContent(eventType, xpp, res))
4102        unknownContent(xpp);
4103      eventType = nextNoWhitespace(xpp);
4104    }
4105    next(xpp);
4106    parseElementClose(res);
4107    return res;
4108  }
4109
4110  protected boolean parseBiologicallyDerivedProductDispenseContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProductDispense res) throws XmlPullParserException, IOException, FHIRFormatError {
4111    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4112      res.getIdentifier().add(parseIdentifier(xpp));
4113    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
4114      res.getBasedOn().add(parseReference(xpp));
4115    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
4116      res.getPartOf().add(parseReference(xpp));
4117    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4118      res.setStatusElement(parseEnumeration(xpp, BiologicallyDerivedProductDispense.BiologicallyDerivedProductDispenseCodes.NULL, new BiologicallyDerivedProductDispense.BiologicallyDerivedProductDispenseCodesEnumFactory()));
4119    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originRelationshipType")) {
4120      res.setOriginRelationshipType(parseCodeableConcept(xpp));
4121    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
4122      res.setProduct(parseReference(xpp));
4123    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4124      res.setPatient(parseReference(xpp));
4125    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("matchStatus")) {
4126      res.setMatchStatus(parseCodeableConcept(xpp));
4127    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
4128      res.getPerformer().add(parseBiologicallyDerivedProductDispensePerformerComponent(xpp));
4129    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
4130      res.setLocation(parseReference(xpp));
4131    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4132      res.setQuantity(parseQuantity(xpp));
4133    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preparedDate")) {
4134      res.setPreparedDateElement(parseDateTime(xpp));
4135    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenHandedOver")) {
4136      res.setWhenHandedOverElement(parseDateTime(xpp));
4137    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
4138      res.setDestination(parseReference(xpp));
4139    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4140      res.getNote().add(parseAnnotation(xpp));
4141    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usageInstruction")) {
4142      res.setUsageInstructionElement(parseString(xpp));
4143    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
4144      return false;
4145    }
4146    return true;
4147  }
4148
4149  protected BiologicallyDerivedProductDispense.BiologicallyDerivedProductDispensePerformerComponent parseBiologicallyDerivedProductDispensePerformerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4150    BiologicallyDerivedProductDispense.BiologicallyDerivedProductDispensePerformerComponent res = new BiologicallyDerivedProductDispense.BiologicallyDerivedProductDispensePerformerComponent();
4151    parseElementAttributes(xpp, res);
4152    next(xpp);
4153    int eventType = nextNoWhitespace(xpp);
4154    while (eventType != XmlPullParser.END_TAG) {
4155    if (!parseBiologicallyDerivedProductDispensePerformerComponentContent(eventType, xpp, res))
4156        unknownContent(xpp);
4157      eventType = nextNoWhitespace(xpp);
4158    }
4159    next(xpp);
4160    parseElementClose(res);
4161    return res;
4162  }
4163
4164  protected boolean parseBiologicallyDerivedProductDispensePerformerComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProductDispense.BiologicallyDerivedProductDispensePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4165    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
4166      res.setFunction(parseCodeableConcept(xpp));
4167    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
4168      res.setActor(parseReference(xpp));
4169    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4170      return false;
4171    }
4172    return true;
4173  }
4174
4175  protected BodyStructure parseBodyStructure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4176    BodyStructure res = new BodyStructure();
4177    parseResourceAttributes(xpp, res);
4178    next(xpp);
4179    int eventType = nextNoWhitespace(xpp);
4180    while (eventType != XmlPullParser.END_TAG) {
4181    if (!parseBodyStructureContent(eventType, xpp, res))
4182        unknownContent(xpp);
4183      eventType = nextNoWhitespace(xpp);
4184    }
4185    next(xpp);
4186    parseElementClose(res);
4187    return res;
4188  }
4189
4190  protected boolean parseBodyStructureContent(int eventType, XmlPullParser xpp, BodyStructure res) throws XmlPullParserException, IOException, FHIRFormatError {
4191    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4192      res.getIdentifier().add(parseIdentifier(xpp));
4193    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
4194      res.setActiveElement(parseBoolean(xpp));
4195    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("morphology")) {
4196      res.setMorphology(parseCodeableConcept(xpp));
4197    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("includedStructure")) {
4198      res.getIncludedStructure().add(parseBodyStructureIncludedStructureComponent(xpp));
4199    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludedStructure")) {
4200      res.getExcludedStructure().add(parseBodyStructureIncludedStructureComponent(xpp));
4201    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4202      res.setDescriptionElement(parseMarkdown(xpp));
4203    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
4204      res.getImage().add(parseAttachment(xpp));
4205    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4206      res.setPatient(parseReference(xpp));
4207    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
4208      return false;
4209    }
4210    return true;
4211  }
4212
4213  protected BodyStructure.BodyStructureIncludedStructureComponent parseBodyStructureIncludedStructureComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4214    BodyStructure.BodyStructureIncludedStructureComponent res = new BodyStructure.BodyStructureIncludedStructureComponent();
4215    parseElementAttributes(xpp, res);
4216    next(xpp);
4217    int eventType = nextNoWhitespace(xpp);
4218    while (eventType != XmlPullParser.END_TAG) {
4219    if (!parseBodyStructureIncludedStructureComponentContent(eventType, xpp, res))
4220        unknownContent(xpp);
4221      eventType = nextNoWhitespace(xpp);
4222    }
4223    next(xpp);
4224    parseElementClose(res);
4225    return res;
4226  }
4227
4228  protected boolean parseBodyStructureIncludedStructureComponentContent(int eventType, XmlPullParser xpp, BodyStructure.BodyStructureIncludedStructureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4229    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structure")) {
4230      res.setStructure(parseCodeableConcept(xpp));
4231    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("laterality")) {
4232      res.setLaterality(parseCodeableConcept(xpp));
4233    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodyLandmarkOrientation")) {
4234      res.getBodyLandmarkOrientation().add(parseBodyStructureIncludedStructureBodyLandmarkOrientationComponent(xpp));
4235    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("spatialReference")) {
4236      res.getSpatialReference().add(parseReference(xpp));
4237    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualifier")) {
4238      res.getQualifier().add(parseCodeableConcept(xpp));
4239    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4240      return false;
4241    }
4242    return true;
4243  }
4244
4245  protected BodyStructure.BodyStructureIncludedStructureBodyLandmarkOrientationComponent parseBodyStructureIncludedStructureBodyLandmarkOrientationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4246    BodyStructure.BodyStructureIncludedStructureBodyLandmarkOrientationComponent res = new BodyStructure.BodyStructureIncludedStructureBodyLandmarkOrientationComponent();
4247    parseElementAttributes(xpp, res);
4248    next(xpp);
4249    int eventType = nextNoWhitespace(xpp);
4250    while (eventType != XmlPullParser.END_TAG) {
4251    if (!parseBodyStructureIncludedStructureBodyLandmarkOrientationComponentContent(eventType, xpp, res))
4252        unknownContent(xpp);
4253      eventType = nextNoWhitespace(xpp);
4254    }
4255    next(xpp);
4256    parseElementClose(res);
4257    return res;
4258  }
4259
4260  protected boolean parseBodyStructureIncludedStructureBodyLandmarkOrientationComponentContent(int eventType, XmlPullParser xpp, BodyStructure.BodyStructureIncludedStructureBodyLandmarkOrientationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4261    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("landmarkDescription")) {
4262      res.getLandmarkDescription().add(parseCodeableConcept(xpp));
4263    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clockFacePosition")) {
4264      res.getClockFacePosition().add(parseCodeableConcept(xpp));
4265    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("distanceFromLandmark")) {
4266      res.getDistanceFromLandmark().add(parseBodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponent(xpp));
4267    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("surfaceOrientation")) {
4268      res.getSurfaceOrientation().add(parseCodeableConcept(xpp));
4269    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4270      return false;
4271    }
4272    return true;
4273  }
4274
4275  protected BodyStructure.BodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponent parseBodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4276    BodyStructure.BodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponent res = new BodyStructure.BodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponent();
4277    parseElementAttributes(xpp, res);
4278    next(xpp);
4279    int eventType = nextNoWhitespace(xpp);
4280    while (eventType != XmlPullParser.END_TAG) {
4281    if (!parseBodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponentContent(eventType, xpp, res))
4282        unknownContent(xpp);
4283      eventType = nextNoWhitespace(xpp);
4284    }
4285    next(xpp);
4286    parseElementClose(res);
4287    return res;
4288  }
4289
4290  protected boolean parseBodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponentContent(int eventType, XmlPullParser xpp, BodyStructure.BodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4291    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
4292      res.getDevice().add(parseCodeableReference(xpp));
4293    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
4294      res.getValue().add(parseQuantity(xpp));
4295    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4296      return false;
4297    }
4298    return true;
4299  }
4300
4301  protected Bundle parseBundle(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4302    Bundle res = new Bundle();
4303    parseResourceAttributes(xpp, res);
4304    next(xpp);
4305    int eventType = nextNoWhitespace(xpp);
4306    while (eventType != XmlPullParser.END_TAG) {
4307    if (!parseBundleContent(eventType, xpp, res))
4308        unknownContent(xpp);
4309      eventType = nextNoWhitespace(xpp);
4310    }
4311    next(xpp);
4312    parseElementClose(res);
4313    return res;
4314  }
4315
4316  protected boolean parseBundleContent(int eventType, XmlPullParser xpp, Bundle res) throws XmlPullParserException, IOException, FHIRFormatError {
4317    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4318      res.setIdentifier(parseIdentifier(xpp));
4319    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4320      res.setTypeElement(parseEnumeration(xpp, Bundle.BundleType.NULL, new Bundle.BundleTypeEnumFactory()));
4321    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
4322      res.setTimestampElement(parseInstant(xpp));
4323    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
4324      res.setTotalElement(parseUnsignedInt(xpp));
4325    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
4326      res.getLink().add(parseBundleLinkComponent(xpp));
4327    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
4328      res.getEntry().add(parseBundleEntryComponent(xpp));
4329    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
4330      res.setSignature(parseSignature(xpp));
4331    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issues")) {
4332      res.setIssues(parseResourceContained(xpp));
4333    } else if (!parseResourceContent(eventType, xpp, res)){ 
4334      return false;
4335    }
4336    return true;
4337  }
4338
4339  protected Bundle.BundleLinkComponent parseBundleLinkComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4340    Bundle.BundleLinkComponent res = new Bundle.BundleLinkComponent();
4341    parseElementAttributes(xpp, res);
4342    next(xpp);
4343    int eventType = nextNoWhitespace(xpp);
4344    while (eventType != XmlPullParser.END_TAG) {
4345    if (!parseBundleLinkComponentContent(eventType, xpp, res))
4346        unknownContent(xpp);
4347      eventType = nextNoWhitespace(xpp);
4348    }
4349    next(xpp);
4350    parseElementClose(res);
4351    return res;
4352  }
4353
4354  protected boolean parseBundleLinkComponentContent(int eventType, XmlPullParser xpp, Bundle.BundleLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4355    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relation")) {
4356      res.setRelationElement(parseEnumeration(xpp, Bundle.LinkRelationTypes.NULL, new Bundle.LinkRelationTypesEnumFactory()));
4357    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
4358      res.setUrlElement(parseUri(xpp));
4359    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4360      return false;
4361    }
4362    return true;
4363  }
4364
4365  protected Bundle.BundleEntryComponent parseBundleEntryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4366    Bundle.BundleEntryComponent res = new Bundle.BundleEntryComponent();
4367    parseElementAttributes(xpp, res);
4368    next(xpp);
4369    int eventType = nextNoWhitespace(xpp);
4370    while (eventType != XmlPullParser.END_TAG) {
4371    if (!parseBundleEntryComponentContent(eventType, xpp, res))
4372        unknownContent(xpp);
4373      eventType = nextNoWhitespace(xpp);
4374    }
4375    next(xpp);
4376    parseElementClose(res);
4377    return res;
4378  }
4379
4380  protected boolean parseBundleEntryComponentContent(int eventType, XmlPullParser xpp, Bundle.BundleEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4381    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
4382      res.getLink().add(parseBundleLinkComponent(xpp));
4383    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fullUrl")) {
4384      res.setFullUrlElement(parseUri(xpp));
4385    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
4386      res.setResource(parseResourceContained(xpp));
4387    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
4388      res.setSearch(parseBundleEntrySearchComponent(xpp));
4389    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
4390      res.setRequest(parseBundleEntryRequestComponent(xpp));
4391    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
4392      res.setResponse(parseBundleEntryResponseComponent(xpp));
4393    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4394      return false;
4395    }
4396    return true;
4397  }
4398
4399  protected Bundle.BundleEntrySearchComponent parseBundleEntrySearchComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4400    Bundle.BundleEntrySearchComponent res = new Bundle.BundleEntrySearchComponent();
4401    parseElementAttributes(xpp, res);
4402    next(xpp);
4403    int eventType = nextNoWhitespace(xpp);
4404    while (eventType != XmlPullParser.END_TAG) {
4405    if (!parseBundleEntrySearchComponentContent(eventType, xpp, res))
4406        unknownContent(xpp);
4407      eventType = nextNoWhitespace(xpp);
4408    }
4409    next(xpp);
4410    parseElementClose(res);
4411    return res;
4412  }
4413
4414  protected boolean parseBundleEntrySearchComponentContent(int eventType, XmlPullParser xpp, Bundle.BundleEntrySearchComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4415    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
4416      res.setModeElement(parseEnumeration(xpp, Bundle.SearchEntryMode.NULL, new Bundle.SearchEntryModeEnumFactory()));
4417    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
4418      res.setScoreElement(parseDecimal(xpp));
4419    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4420      return false;
4421    }
4422    return true;
4423  }
4424
4425  protected Bundle.BundleEntryRequestComponent parseBundleEntryRequestComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4426    Bundle.BundleEntryRequestComponent res = new Bundle.BundleEntryRequestComponent();
4427    parseElementAttributes(xpp, res);
4428    next(xpp);
4429    int eventType = nextNoWhitespace(xpp);
4430    while (eventType != XmlPullParser.END_TAG) {
4431    if (!parseBundleEntryRequestComponentContent(eventType, xpp, res))
4432        unknownContent(xpp);
4433      eventType = nextNoWhitespace(xpp);
4434    }
4435    next(xpp);
4436    parseElementClose(res);
4437    return res;
4438  }
4439
4440  protected boolean parseBundleEntryRequestComponentContent(int eventType, XmlPullParser xpp, Bundle.BundleEntryRequestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4441    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
4442      res.setMethodElement(parseEnumeration(xpp, Bundle.HTTPVerb.NULL, new Bundle.HTTPVerbEnumFactory()));
4443    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
4444      res.setUrlElement(parseUri(xpp));
4445    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneMatch")) {
4446      res.setIfNoneMatchElement(parseString(xpp));
4447    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifModifiedSince")) {
4448      res.setIfModifiedSinceElement(parseInstant(xpp));
4449    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifMatch")) {
4450      res.setIfMatchElement(parseString(xpp));
4451    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneExist")) {
4452      res.setIfNoneExistElement(parseString(xpp));
4453    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4454      return false;
4455    }
4456    return true;
4457  }
4458
4459  protected Bundle.BundleEntryResponseComponent parseBundleEntryResponseComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4460    Bundle.BundleEntryResponseComponent res = new Bundle.BundleEntryResponseComponent();
4461    parseElementAttributes(xpp, res);
4462    next(xpp);
4463    int eventType = nextNoWhitespace(xpp);
4464    while (eventType != XmlPullParser.END_TAG) {
4465    if (!parseBundleEntryResponseComponentContent(eventType, xpp, res))
4466        unknownContent(xpp);
4467      eventType = nextNoWhitespace(xpp);
4468    }
4469    next(xpp);
4470    parseElementClose(res);
4471    return res;
4472  }
4473
4474  protected boolean parseBundleEntryResponseComponentContent(int eventType, XmlPullParser xpp, Bundle.BundleEntryResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4475    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4476      res.setStatusElement(parseString(xpp));
4477    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
4478      res.setLocationElement(parseUri(xpp));
4479    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("etag")) {
4480      res.setEtagElement(parseString(xpp));
4481    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
4482      res.setLastModifiedElement(parseInstant(xpp));
4483    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
4484      res.setOutcome(parseResourceContained(xpp));
4485    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4486      return false;
4487    }
4488    return true;
4489  }
4490
4491  protected CapabilityStatement parseCapabilityStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4492    CapabilityStatement res = new CapabilityStatement();
4493    parseResourceAttributes(xpp, res);
4494    next(xpp);
4495    int eventType = nextNoWhitespace(xpp);
4496    while (eventType != XmlPullParser.END_TAG) {
4497    if (!parseCapabilityStatementContent(eventType, xpp, res))
4498        unknownContent(xpp);
4499      eventType = nextNoWhitespace(xpp);
4500    }
4501    next(xpp);
4502    parseElementClose(res);
4503    return res;
4504  }
4505
4506  protected boolean parseCapabilityStatementContent(int eventType, XmlPullParser xpp, CapabilityStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
4507    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
4508      res.setUrlElement(parseUri(xpp));
4509    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4510      res.getIdentifier().add(parseIdentifier(xpp));
4511    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
4512      res.setVersionElement(parseString(xpp));
4513    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
4514      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
4515    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4516      res.setNameElement(parseString(xpp));
4517    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
4518      res.setTitleElement(parseString(xpp));
4519    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4520      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
4521    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
4522      res.setExperimentalElement(parseBoolean(xpp));
4523    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4524      res.setDateElement(parseDateTime(xpp));
4525    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
4526      res.setPublisherElement(parseString(xpp));
4527    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
4528      res.getContact().add(parseContactDetail(xpp));
4529    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4530      res.setDescriptionElement(parseMarkdown(xpp));
4531    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
4532      res.getUseContext().add(parseUsageContext(xpp));
4533    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
4534      res.getJurisdiction().add(parseCodeableConcept(xpp));
4535    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
4536      res.setPurposeElement(parseMarkdown(xpp));
4537    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
4538      res.setCopyrightElement(parseMarkdown(xpp));
4539    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
4540      res.setCopyrightLabelElement(parseString(xpp));
4541    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
4542      res.setKindElement(parseEnumeration(xpp, Enumerations.CapabilityStatementKind.NULL, new Enumerations.CapabilityStatementKindEnumFactory()));
4543    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
4544      res.getInstantiates().add(parseCanonical(xpp));
4545    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imports")) {
4546      res.getImports().add(parseCanonical(xpp));
4547    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
4548      res.setSoftware(parseCapabilityStatementSoftwareComponent(xpp));
4549    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementation")) {
4550      res.setImplementation(parseCapabilityStatementImplementationComponent(xpp));
4551    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
4552      res.setFhirVersionElement(parseEnumeration(xpp, Enumerations.FHIRVersion.NULL, new Enumerations.FHIRVersionEnumFactory()));
4553    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
4554      res.getFormat().add(parseCode(xpp));
4555    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patchFormat")) {
4556      res.getPatchFormat().add(parseCode(xpp));
4557    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("acceptLanguage")) {
4558      res.getAcceptLanguage().add(parseCode(xpp));
4559    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementationGuide")) {
4560      res.getImplementationGuide().add(parseCanonical(xpp));
4561    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rest")) {
4562      res.getRest().add(parseCapabilityStatementRestComponent(xpp));
4563    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("messaging")) {
4564      res.getMessaging().add(parseCapabilityStatementMessagingComponent(xpp));
4565    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
4566      res.getDocument().add(parseCapabilityStatementDocumentComponent(xpp));
4567    } else if (!parseCanonicalResourceContent(eventType, xpp, res)){ 
4568      return false;
4569    }
4570    return true;
4571  }
4572
4573  protected CapabilityStatement.CapabilityStatementSoftwareComponent parseCapabilityStatementSoftwareComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4574    CapabilityStatement.CapabilityStatementSoftwareComponent res = new CapabilityStatement.CapabilityStatementSoftwareComponent();
4575    parseElementAttributes(xpp, res);
4576    next(xpp);
4577    int eventType = nextNoWhitespace(xpp);
4578    while (eventType != XmlPullParser.END_TAG) {
4579    if (!parseCapabilityStatementSoftwareComponentContent(eventType, xpp, res))
4580        unknownContent(xpp);
4581      eventType = nextNoWhitespace(xpp);
4582    }
4583    next(xpp);
4584    parseElementClose(res);
4585    return res;
4586  }
4587
4588  protected boolean parseCapabilityStatementSoftwareComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementSoftwareComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4589    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4590      res.setNameElement(parseString(xpp));
4591    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
4592      res.setVersionElement(parseString(xpp));
4593    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("releaseDate")) {
4594      res.setReleaseDateElement(parseDateTime(xpp));
4595    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4596      return false;
4597    }
4598    return true;
4599  }
4600
4601  protected CapabilityStatement.CapabilityStatementImplementationComponent parseCapabilityStatementImplementationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4602    CapabilityStatement.CapabilityStatementImplementationComponent res = new CapabilityStatement.CapabilityStatementImplementationComponent();
4603    parseElementAttributes(xpp, res);
4604    next(xpp);
4605    int eventType = nextNoWhitespace(xpp);
4606    while (eventType != XmlPullParser.END_TAG) {
4607    if (!parseCapabilityStatementImplementationComponentContent(eventType, xpp, res))
4608        unknownContent(xpp);
4609      eventType = nextNoWhitespace(xpp);
4610    }
4611    next(xpp);
4612    parseElementClose(res);
4613    return res;
4614  }
4615
4616  protected boolean parseCapabilityStatementImplementationComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementImplementationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4617    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4618      res.setDescriptionElement(parseMarkdown(xpp));
4619    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
4620      res.setUrlElement(parseUrl(xpp));
4621    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
4622      res.setCustodian(parseReference(xpp));
4623    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4624      return false;
4625    }
4626    return true;
4627  }
4628
4629  protected CapabilityStatement.CapabilityStatementRestComponent parseCapabilityStatementRestComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4630    CapabilityStatement.CapabilityStatementRestComponent res = new CapabilityStatement.CapabilityStatementRestComponent();
4631    parseElementAttributes(xpp, res);
4632    next(xpp);
4633    int eventType = nextNoWhitespace(xpp);
4634    while (eventType != XmlPullParser.END_TAG) {
4635    if (!parseCapabilityStatementRestComponentContent(eventType, xpp, res))
4636        unknownContent(xpp);
4637      eventType = nextNoWhitespace(xpp);
4638    }
4639    next(xpp);
4640    parseElementClose(res);
4641    return res;
4642  }
4643
4644  protected boolean parseCapabilityStatementRestComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementRestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4645    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
4646      res.setModeElement(parseEnumeration(xpp, CapabilityStatement.RestfulCapabilityMode.NULL, new CapabilityStatement.RestfulCapabilityModeEnumFactory()));
4647    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
4648      res.setDocumentationElement(parseMarkdown(xpp));
4649    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
4650      res.setSecurity(parseCapabilityStatementRestSecurityComponent(xpp));
4651    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
4652      res.getResource().add(parseCapabilityStatementRestResourceComponent(xpp));
4653    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
4654      res.getInteraction().add(parseCapabilityStatementSystemInteractionComponent(xpp));
4655    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
4656      res.getSearchParam().add(parseCapabilityStatementRestResourceSearchParamComponent(xpp));
4657    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
4658      res.getOperation().add(parseCapabilityStatementRestResourceOperationComponent(xpp));
4659    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
4660      res.getCompartment().add(parseCanonical(xpp));
4661    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4662      return false;
4663    }
4664    return true;
4665  }
4666
4667  protected CapabilityStatement.CapabilityStatementRestSecurityComponent parseCapabilityStatementRestSecurityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4668    CapabilityStatement.CapabilityStatementRestSecurityComponent res = new CapabilityStatement.CapabilityStatementRestSecurityComponent();
4669    parseElementAttributes(xpp, res);
4670    next(xpp);
4671    int eventType = nextNoWhitespace(xpp);
4672    while (eventType != XmlPullParser.END_TAG) {
4673    if (!parseCapabilityStatementRestSecurityComponentContent(eventType, xpp, res))
4674        unknownContent(xpp);
4675      eventType = nextNoWhitespace(xpp);
4676    }
4677    next(xpp);
4678    parseElementClose(res);
4679    return res;
4680  }
4681
4682  protected boolean parseCapabilityStatementRestSecurityComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementRestSecurityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4683    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cors")) {
4684      res.setCorsElement(parseBoolean(xpp));
4685    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4686      res.getService().add(parseCodeableConcept(xpp));
4687    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4688      res.setDescriptionElement(parseMarkdown(xpp));
4689    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4690      return false;
4691    }
4692    return true;
4693  }
4694
4695  protected CapabilityStatement.CapabilityStatementRestResourceComponent parseCapabilityStatementRestResourceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4696    CapabilityStatement.CapabilityStatementRestResourceComponent res = new CapabilityStatement.CapabilityStatementRestResourceComponent();
4697    parseElementAttributes(xpp, res);
4698    next(xpp);
4699    int eventType = nextNoWhitespace(xpp);
4700    while (eventType != XmlPullParser.END_TAG) {
4701    if (!parseCapabilityStatementRestResourceComponentContent(eventType, xpp, res))
4702        unknownContent(xpp);
4703      eventType = nextNoWhitespace(xpp);
4704    }
4705    next(xpp);
4706    parseElementClose(res);
4707    return res;
4708  }
4709
4710  protected boolean parseCapabilityStatementRestResourceComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementRestResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4711    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4712      res.setTypeElement(parseCode(xpp));
4713    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
4714      res.setProfileElement(parseCanonical(xpp));
4715    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportedProfile")) {
4716      res.getSupportedProfile().add(parseCanonical(xpp));
4717    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
4718      res.setDocumentationElement(parseMarkdown(xpp));
4719    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
4720      res.getInteraction().add(parseCapabilityStatementResourceInteractionComponent(xpp));
4721    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
4722      res.setVersioningElement(parseEnumeration(xpp, CapabilityStatement.ResourceVersionPolicy.NULL, new CapabilityStatement.ResourceVersionPolicyEnumFactory()));
4723    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readHistory")) {
4724      res.setReadHistoryElement(parseBoolean(xpp));
4725    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("updateCreate")) {
4726      res.setUpdateCreateElement(parseBoolean(xpp));
4727    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalCreate")) {
4728      res.setConditionalCreateElement(parseBoolean(xpp));
4729    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalRead")) {
4730      res.setConditionalReadElement(parseEnumeration(xpp, CapabilityStatement.ConditionalReadStatus.NULL, new CapabilityStatement.ConditionalReadStatusEnumFactory()));
4731    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalUpdate")) {
4732      res.setConditionalUpdateElement(parseBoolean(xpp));
4733    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalPatch")) {
4734      res.setConditionalPatchElement(parseBoolean(xpp));
4735    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalDelete")) {
4736      res.setConditionalDeleteElement(parseEnumeration(xpp, CapabilityStatement.ConditionalDeleteStatus.NULL, new CapabilityStatement.ConditionalDeleteStatusEnumFactory()));
4737    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencePolicy")) {
4738      res.getReferencePolicy().add(parseEnumeration(xpp, CapabilityStatement.ReferenceHandlingPolicy.NULL, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory()));
4739    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchInclude")) {
4740      res.getSearchInclude().add(parseString(xpp));
4741    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchRevInclude")) {
4742      res.getSearchRevInclude().add(parseString(xpp));
4743    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
4744      res.getSearchParam().add(parseCapabilityStatementRestResourceSearchParamComponent(xpp));
4745    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
4746      res.getOperation().add(parseCapabilityStatementRestResourceOperationComponent(xpp));
4747    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4748      return false;
4749    }
4750    return true;
4751  }
4752
4753  protected CapabilityStatement.ResourceInteractionComponent parseCapabilityStatementResourceInteractionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4754    CapabilityStatement.ResourceInteractionComponent res = new CapabilityStatement.ResourceInteractionComponent();
4755    parseElementAttributes(xpp, res);
4756    next(xpp);
4757    int eventType = nextNoWhitespace(xpp);
4758    while (eventType != XmlPullParser.END_TAG) {
4759    if (!parseCapabilityStatementResourceInteractionComponentContent(eventType, xpp, res))
4760        unknownContent(xpp);
4761      eventType = nextNoWhitespace(xpp);
4762    }
4763    next(xpp);
4764    parseElementClose(res);
4765    return res;
4766  }
4767
4768  protected boolean parseCapabilityStatementResourceInteractionComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.ResourceInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4769    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4770      res.setCodeElement(parseEnumeration(xpp, CapabilityStatement.TypeRestfulInteraction.NULL, new CapabilityStatement.TypeRestfulInteractionEnumFactory()));
4771    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
4772      res.setDocumentationElement(parseMarkdown(xpp));
4773    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4774      return false;
4775    }
4776    return true;
4777  }
4778
4779  protected CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent parseCapabilityStatementRestResourceSearchParamComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4780    CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent res = new CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent();
4781    parseElementAttributes(xpp, res);
4782    next(xpp);
4783    int eventType = nextNoWhitespace(xpp);
4784    while (eventType != XmlPullParser.END_TAG) {
4785    if (!parseCapabilityStatementRestResourceSearchParamComponentContent(eventType, xpp, res))
4786        unknownContent(xpp);
4787      eventType = nextNoWhitespace(xpp);
4788    }
4789    next(xpp);
4790    parseElementClose(res);
4791    return res;
4792  }
4793
4794  protected boolean parseCapabilityStatementRestResourceSearchParamComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4795    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4796      res.setNameElement(parseString(xpp));
4797    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
4798      res.setDefinitionElement(parseCanonical(xpp));
4799    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4800      res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
4801    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
4802      res.setDocumentationElement(parseMarkdown(xpp));
4803    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4804      return false;
4805    }
4806    return true;
4807  }
4808
4809  protected CapabilityStatement.CapabilityStatementRestResourceOperationComponent parseCapabilityStatementRestResourceOperationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4810    CapabilityStatement.CapabilityStatementRestResourceOperationComponent res = new CapabilityStatement.CapabilityStatementRestResourceOperationComponent();
4811    parseElementAttributes(xpp, res);
4812    next(xpp);
4813    int eventType = nextNoWhitespace(xpp);
4814    while (eventType != XmlPullParser.END_TAG) {
4815    if (!parseCapabilityStatementRestResourceOperationComponentContent(eventType, xpp, res))
4816        unknownContent(xpp);
4817      eventType = nextNoWhitespace(xpp);
4818    }
4819    next(xpp);
4820    parseElementClose(res);
4821    return res;
4822  }
4823
4824  protected boolean parseCapabilityStatementRestResourceOperationComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementRestResourceOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4825    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
4826      res.setNameElement(parseString(xpp));
4827    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
4828      res.setDefinitionElement(parseCanonical(xpp));
4829    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
4830      res.setDocumentationElement(parseMarkdown(xpp));
4831    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4832      return false;
4833    }
4834    return true;
4835  }
4836
4837  protected CapabilityStatement.SystemInteractionComponent parseCapabilityStatementSystemInteractionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4838    CapabilityStatement.SystemInteractionComponent res = new CapabilityStatement.SystemInteractionComponent();
4839    parseElementAttributes(xpp, res);
4840    next(xpp);
4841    int eventType = nextNoWhitespace(xpp);
4842    while (eventType != XmlPullParser.END_TAG) {
4843    if (!parseCapabilityStatementSystemInteractionComponentContent(eventType, xpp, res))
4844        unknownContent(xpp);
4845      eventType = nextNoWhitespace(xpp);
4846    }
4847    next(xpp);
4848    parseElementClose(res);
4849    return res;
4850  }
4851
4852  protected boolean parseCapabilityStatementSystemInteractionComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.SystemInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4853    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4854      res.setCodeElement(parseEnumeration(xpp, CapabilityStatement.SystemRestfulInteraction.NULL, new CapabilityStatement.SystemRestfulInteractionEnumFactory()));
4855    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
4856      res.setDocumentationElement(parseMarkdown(xpp));
4857    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4858      return false;
4859    }
4860    return true;
4861  }
4862
4863  protected CapabilityStatement.CapabilityStatementMessagingComponent parseCapabilityStatementMessagingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4864    CapabilityStatement.CapabilityStatementMessagingComponent res = new CapabilityStatement.CapabilityStatementMessagingComponent();
4865    parseElementAttributes(xpp, res);
4866    next(xpp);
4867    int eventType = nextNoWhitespace(xpp);
4868    while (eventType != XmlPullParser.END_TAG) {
4869    if (!parseCapabilityStatementMessagingComponentContent(eventType, xpp, res))
4870        unknownContent(xpp);
4871      eventType = nextNoWhitespace(xpp);
4872    }
4873    next(xpp);
4874    parseElementClose(res);
4875    return res;
4876  }
4877
4878  protected boolean parseCapabilityStatementMessagingComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementMessagingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4879    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
4880      res.getEndpoint().add(parseCapabilityStatementMessagingEndpointComponent(xpp));
4881    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reliableCache")) {
4882      res.setReliableCacheElement(parseUnsignedInt(xpp));
4883    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
4884      res.setDocumentationElement(parseMarkdown(xpp));
4885    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportedMessage")) {
4886      res.getSupportedMessage().add(parseCapabilityStatementMessagingSupportedMessageComponent(xpp));
4887    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4888      return false;
4889    }
4890    return true;
4891  }
4892
4893  protected CapabilityStatement.CapabilityStatementMessagingEndpointComponent parseCapabilityStatementMessagingEndpointComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4894    CapabilityStatement.CapabilityStatementMessagingEndpointComponent res = new CapabilityStatement.CapabilityStatementMessagingEndpointComponent();
4895    parseElementAttributes(xpp, res);
4896    next(xpp);
4897    int eventType = nextNoWhitespace(xpp);
4898    while (eventType != XmlPullParser.END_TAG) {
4899    if (!parseCapabilityStatementMessagingEndpointComponentContent(eventType, xpp, res))
4900        unknownContent(xpp);
4901      eventType = nextNoWhitespace(xpp);
4902    }
4903    next(xpp);
4904    parseElementClose(res);
4905    return res;
4906  }
4907
4908  protected boolean parseCapabilityStatementMessagingEndpointComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementMessagingEndpointComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4909    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
4910      res.setProtocol(parseCoding(xpp));
4911    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
4912      res.setAddressElement(parseUrl(xpp));
4913    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4914      return false;
4915    }
4916    return true;
4917  }
4918
4919  protected CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent parseCapabilityStatementMessagingSupportedMessageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4920    CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent res = new CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent();
4921    parseElementAttributes(xpp, res);
4922    next(xpp);
4923    int eventType = nextNoWhitespace(xpp);
4924    while (eventType != XmlPullParser.END_TAG) {
4925    if (!parseCapabilityStatementMessagingSupportedMessageComponentContent(eventType, xpp, res))
4926        unknownContent(xpp);
4927      eventType = nextNoWhitespace(xpp);
4928    }
4929    next(xpp);
4930    parseElementClose(res);
4931    return res;
4932  }
4933
4934  protected boolean parseCapabilityStatementMessagingSupportedMessageComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4935    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
4936      res.setModeElement(parseEnumeration(xpp, CapabilityStatement.EventCapabilityMode.NULL, new CapabilityStatement.EventCapabilityModeEnumFactory()));
4937    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
4938      res.setDefinitionElement(parseCanonical(xpp));
4939    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4940      return false;
4941    }
4942    return true;
4943  }
4944
4945  protected CapabilityStatement.CapabilityStatementDocumentComponent parseCapabilityStatementDocumentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4946    CapabilityStatement.CapabilityStatementDocumentComponent res = new CapabilityStatement.CapabilityStatementDocumentComponent();
4947    parseElementAttributes(xpp, res);
4948    next(xpp);
4949    int eventType = nextNoWhitespace(xpp);
4950    while (eventType != XmlPullParser.END_TAG) {
4951    if (!parseCapabilityStatementDocumentComponentContent(eventType, xpp, res))
4952        unknownContent(xpp);
4953      eventType = nextNoWhitespace(xpp);
4954    }
4955    next(xpp);
4956    parseElementClose(res);
4957    return res;
4958  }
4959
4960  protected boolean parseCapabilityStatementDocumentComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement.CapabilityStatementDocumentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4961    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
4962      res.setModeElement(parseEnumeration(xpp, CapabilityStatement.DocumentMode.NULL, new CapabilityStatement.DocumentModeEnumFactory()));
4963    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
4964      res.setDocumentationElement(parseMarkdown(xpp));
4965    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
4966      res.setProfileElement(parseCanonical(xpp));
4967    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
4968      return false;
4969    }
4970    return true;
4971  }
4972
4973  protected CarePlan parseCarePlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4974    CarePlan res = new CarePlan();
4975    parseResourceAttributes(xpp, res);
4976    next(xpp);
4977    int eventType = nextNoWhitespace(xpp);
4978    while (eventType != XmlPullParser.END_TAG) {
4979    if (!parseCarePlanContent(eventType, xpp, res))
4980        unknownContent(xpp);
4981      eventType = nextNoWhitespace(xpp);
4982    }
4983    next(xpp);
4984    parseElementClose(res);
4985    return res;
4986  }
4987
4988  protected boolean parseCarePlanContent(int eventType, XmlPullParser xpp, CarePlan res) throws XmlPullParserException, IOException, FHIRFormatError {
4989    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4990      res.getIdentifier().add(parseIdentifier(xpp));
4991    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
4992      res.getInstantiatesCanonical().add(parseCanonical(xpp));
4993    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
4994      res.getInstantiatesUri().add(parseUri(xpp));
4995    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
4996      res.getBasedOn().add(parseReference(xpp));
4997    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
4998      res.getReplaces().add(parseReference(xpp));
4999    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
5000      res.getPartOf().add(parseReference(xpp));
5001    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5002      res.setStatusElement(parseEnumeration(xpp, Enumerations.RequestStatus.NULL, new Enumerations.RequestStatusEnumFactory()));
5003    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
5004      res.setIntentElement(parseEnumeration(xpp, CarePlan.CarePlanIntent.NULL, new CarePlan.CarePlanIntentEnumFactory()));
5005    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5006      res.getCategory().add(parseCodeableConcept(xpp));
5007    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5008      res.setTitleElement(parseString(xpp));
5009    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5010      res.setDescriptionElement(parseString(xpp));
5011    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5012      res.setSubject(parseReference(xpp));
5013    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5014      res.setEncounter(parseReference(xpp));
5015    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5016      res.setPeriod(parsePeriod(xpp));
5017    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
5018      res.setCreatedElement(parseDateTime(xpp));
5019    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
5020      res.setCustodian(parseReference(xpp));
5021    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
5022      res.getContributor().add(parseReference(xpp));
5023    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
5024      res.getCareTeam().add(parseReference(xpp));
5025    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
5026      res.getAddresses().add(parseCodeableReference(xpp));
5027    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
5028      res.getSupportingInfo().add(parseReference(xpp));
5029    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
5030      res.getGoal().add(parseReference(xpp));
5031    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
5032      res.getActivity().add(parseCarePlanActivityComponent(xpp));
5033    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5034      res.getNote().add(parseAnnotation(xpp));
5035    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
5036      return false;
5037    }
5038    return true;
5039  }
5040
5041  protected CarePlan.CarePlanActivityComponent parseCarePlanActivityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5042    CarePlan.CarePlanActivityComponent res = new CarePlan.CarePlanActivityComponent();
5043    parseElementAttributes(xpp, res);
5044    next(xpp);
5045    int eventType = nextNoWhitespace(xpp);
5046    while (eventType != XmlPullParser.END_TAG) {
5047    if (!parseCarePlanActivityComponentContent(eventType, xpp, res))
5048        unknownContent(xpp);
5049      eventType = nextNoWhitespace(xpp);
5050    }
5051    next(xpp);
5052    parseElementClose(res);
5053    return res;
5054  }
5055
5056  protected boolean parseCarePlanActivityComponentContent(int eventType, XmlPullParser xpp, CarePlan.CarePlanActivityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5057    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performedActivity")) {
5058      res.getPerformedActivity().add(parseCodeableReference(xpp));
5059    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("progress")) {
5060      res.getProgress().add(parseAnnotation(xpp));
5061    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plannedActivityReference")) {
5062      res.setPlannedActivityReference(parseReference(xpp));
5063    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5064      return false;
5065    }
5066    return true;
5067  }
5068
5069  protected CareTeam parseCareTeam(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5070    CareTeam res = new CareTeam();
5071    parseResourceAttributes(xpp, res);
5072    next(xpp);
5073    int eventType = nextNoWhitespace(xpp);
5074    while (eventType != XmlPullParser.END_TAG) {
5075    if (!parseCareTeamContent(eventType, xpp, res))
5076        unknownContent(xpp);
5077      eventType = nextNoWhitespace(xpp);
5078    }
5079    next(xpp);
5080    parseElementClose(res);
5081    return res;
5082  }
5083
5084  protected boolean parseCareTeamContent(int eventType, XmlPullParser xpp, CareTeam res) throws XmlPullParserException, IOException, FHIRFormatError {
5085    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5086      res.getIdentifier().add(parseIdentifier(xpp));
5087    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5088      res.setStatusElement(parseEnumeration(xpp, CareTeam.CareTeamStatus.NULL, new CareTeam.CareTeamStatusEnumFactory()));
5089    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5090      res.getCategory().add(parseCodeableConcept(xpp));
5091    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5092      res.setNameElement(parseString(xpp));
5093    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5094      res.setSubject(parseReference(xpp));
5095    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5096      res.setPeriod(parsePeriod(xpp));
5097    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
5098      res.getParticipant().add(parseCareTeamParticipantComponent(xpp));
5099    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
5100      res.getReason().add(parseCodeableReference(xpp));
5101    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
5102      res.getManagingOrganization().add(parseReference(xpp));
5103    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
5104      res.getTelecom().add(parseContactPoint(xpp));
5105    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5106      res.getNote().add(parseAnnotation(xpp));
5107    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
5108      return false;
5109    }
5110    return true;
5111  }
5112
5113  protected CareTeam.CareTeamParticipantComponent parseCareTeamParticipantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5114    CareTeam.CareTeamParticipantComponent res = new CareTeam.CareTeamParticipantComponent();
5115    parseElementAttributes(xpp, res);
5116    next(xpp);
5117    int eventType = nextNoWhitespace(xpp);
5118    while (eventType != XmlPullParser.END_TAG) {
5119    if (!parseCareTeamParticipantComponentContent(eventType, xpp, res))
5120        unknownContent(xpp);
5121      eventType = nextNoWhitespace(xpp);
5122    }
5123    next(xpp);
5124    parseElementClose(res);
5125    return res;
5126  }
5127
5128  protected boolean parseCareTeamParticipantComponentContent(int eventType, XmlPullParser xpp, CareTeam.CareTeamParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5129    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
5130      res.setRole(parseCodeableConcept(xpp));
5131    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
5132      res.setMember(parseReference(xpp));
5133    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
5134      res.setOnBehalfOf(parseReference(xpp));
5135    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "coverage")) {
5136      res.setCoverage(parseType("coverage", xpp));
5137    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5138      return false;
5139    }
5140    return true;
5141  }
5142
5143  protected ChargeItem parseChargeItem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5144    ChargeItem res = new ChargeItem();
5145    parseResourceAttributes(xpp, res);
5146    next(xpp);
5147    int eventType = nextNoWhitespace(xpp);
5148    while (eventType != XmlPullParser.END_TAG) {
5149    if (!parseChargeItemContent(eventType, xpp, res))
5150        unknownContent(xpp);
5151      eventType = nextNoWhitespace(xpp);
5152    }
5153    next(xpp);
5154    parseElementClose(res);
5155    return res;
5156  }
5157
5158  protected boolean parseChargeItemContent(int eventType, XmlPullParser xpp, ChargeItem res) throws XmlPullParserException, IOException, FHIRFormatError {
5159    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5160      res.getIdentifier().add(parseIdentifier(xpp));
5161    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definitionUri")) {
5162      res.getDefinitionUri().add(parseUri(xpp));
5163    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definitionCanonical")) {
5164      res.getDefinitionCanonical().add(parseCanonical(xpp));
5165    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5166      res.setStatusElement(parseEnumeration(xpp, ChargeItem.ChargeItemStatus.NULL, new ChargeItem.ChargeItemStatusEnumFactory()));
5167    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
5168      res.getPartOf().add(parseReference(xpp));
5169    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5170      res.setCode(parseCodeableConcept(xpp));
5171    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5172      res.setSubject(parseReference(xpp));
5173    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5174      res.setEncounter(parseReference(xpp));
5175    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
5176      res.setOccurrence(parseType("occurrence", xpp));
5177    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
5178      res.getPerformer().add(parseChargeItemPerformerComponent(xpp));
5179    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performingOrganization")) {
5180      res.setPerformingOrganization(parseReference(xpp));
5181    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestingOrganization")) {
5182      res.setRequestingOrganization(parseReference(xpp));
5183    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("costCenter")) {
5184      res.setCostCenter(parseReference(xpp));
5185    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5186      res.setQuantity(parseQuantity(xpp));
5187    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodysite")) {
5188      res.getBodysite().add(parseCodeableConcept(xpp));
5189    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPriceComponent")) {
5190      res.setUnitPriceComponent(parseMonetaryComponent(xpp));
5191    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalPriceComponent")) {
5192      res.setTotalPriceComponent(parseMonetaryComponent(xpp));
5193    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overrideReason")) {
5194      res.setOverrideReason(parseCodeableConcept(xpp));
5195    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
5196      res.setEnterer(parseReference(xpp));
5197    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteredDate")) {
5198      res.setEnteredDateElement(parseDateTime(xpp));
5199    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
5200      res.getReason().add(parseCodeableConcept(xpp));
5201    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
5202      res.getService().add(parseCodeableReference(xpp));
5203    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
5204      res.getProduct().add(parseCodeableReference(xpp));
5205    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
5206      res.getAccount().add(parseReference(xpp));
5207    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5208      res.getNote().add(parseAnnotation(xpp));
5209    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
5210      res.getSupportingInformation().add(parseReference(xpp));
5211    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
5212      return false;
5213    }
5214    return true;
5215  }
5216
5217  protected ChargeItem.ChargeItemPerformerComponent parseChargeItemPerformerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5218    ChargeItem.ChargeItemPerformerComponent res = new ChargeItem.ChargeItemPerformerComponent();
5219    parseElementAttributes(xpp, res);
5220    next(xpp);
5221    int eventType = nextNoWhitespace(xpp);
5222    while (eventType != XmlPullParser.END_TAG) {
5223    if (!parseChargeItemPerformerComponentContent(eventType, xpp, res))
5224        unknownContent(xpp);
5225      eventType = nextNoWhitespace(xpp);
5226    }
5227    next(xpp);
5228    parseElementClose(res);
5229    return res;
5230  }
5231
5232  protected boolean parseChargeItemPerformerComponentContent(int eventType, XmlPullParser xpp, ChargeItem.ChargeItemPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5233    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
5234      res.setFunction(parseCodeableConcept(xpp));
5235    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
5236      res.setActor(parseReference(xpp));
5237    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5238      return false;
5239    }
5240    return true;
5241  }
5242
5243  protected ChargeItemDefinition parseChargeItemDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5244    ChargeItemDefinition res = new ChargeItemDefinition();
5245    parseResourceAttributes(xpp, res);
5246    next(xpp);
5247    int eventType = nextNoWhitespace(xpp);
5248    while (eventType != XmlPullParser.END_TAG) {
5249    if (!parseChargeItemDefinitionContent(eventType, xpp, res))
5250        unknownContent(xpp);
5251      eventType = nextNoWhitespace(xpp);
5252    }
5253    next(xpp);
5254    parseElementClose(res);
5255    return res;
5256  }
5257
5258  protected boolean parseChargeItemDefinitionContent(int eventType, XmlPullParser xpp, ChargeItemDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
5259    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5260      res.setUrlElement(parseUri(xpp));
5261    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5262      res.getIdentifier().add(parseIdentifier(xpp));
5263    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
5264      res.setVersionElement(parseString(xpp));
5265    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
5266      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
5267    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5268      res.setNameElement(parseString(xpp));
5269    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5270      res.setTitleElement(parseString(xpp));
5271    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFromUri")) {
5272      res.getDerivedFromUri().add(parseUri(xpp));
5273    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
5274      res.getPartOf().add(parseCanonical(xpp));
5275    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
5276      res.getReplaces().add(parseCanonical(xpp));
5277    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5278      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
5279    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
5280      res.setExperimentalElement(parseBoolean(xpp));
5281    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5282      res.setDateElement(parseDateTime(xpp));
5283    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5284      res.setPublisherElement(parseString(xpp));
5285    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
5286      res.getContact().add(parseContactDetail(xpp));
5287    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5288      res.setDescriptionElement(parseMarkdown(xpp));
5289    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
5290      res.getUseContext().add(parseUsageContext(xpp));
5291    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
5292      res.getJurisdiction().add(parseCodeableConcept(xpp));
5293    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5294      res.setPurposeElement(parseMarkdown(xpp));
5295    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
5296      res.setCopyrightElement(parseMarkdown(xpp));
5297    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
5298      res.setCopyrightLabelElement(parseString(xpp));
5299    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
5300      res.setApprovalDateElement(parseDate(xpp));
5301    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
5302      res.setLastReviewDateElement(parseDate(xpp));
5303    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5304      res.setCode(parseCodeableConcept(xpp));
5305    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
5306      res.getInstance().add(parseReference(xpp));
5307    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
5308      res.getApplicability().add(parseChargeItemDefinitionApplicabilityComponent(xpp));
5309    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("propertyGroup")) {
5310      res.getPropertyGroup().add(parseChargeItemDefinitionPropertyGroupComponent(xpp));
5311    } else if (!parseMetadataResourceContent(eventType, xpp, res)){ 
5312      return false;
5313    }
5314    return true;
5315  }
5316
5317  protected ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent parseChargeItemDefinitionApplicabilityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5318    ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent res = new ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent();
5319    parseElementAttributes(xpp, res);
5320    next(xpp);
5321    int eventType = nextNoWhitespace(xpp);
5322    while (eventType != XmlPullParser.END_TAG) {
5323    if (!parseChargeItemDefinitionApplicabilityComponentContent(eventType, xpp, res))
5324        unknownContent(xpp);
5325      eventType = nextNoWhitespace(xpp);
5326    }
5327    next(xpp);
5328    parseElementClose(res);
5329    return res;
5330  }
5331
5332  protected boolean parseChargeItemDefinitionApplicabilityComponentContent(int eventType, XmlPullParser xpp, ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5333    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
5334      res.setCondition(parseExpression(xpp));
5335    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
5336      res.setEffectivePeriod(parsePeriod(xpp));
5337    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
5338      res.setRelatedArtifact(parseRelatedArtifact(xpp));
5339    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5340      return false;
5341    }
5342    return true;
5343  }
5344
5345  protected ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent parseChargeItemDefinitionPropertyGroupComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5346    ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent res = new ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent();
5347    parseElementAttributes(xpp, res);
5348    next(xpp);
5349    int eventType = nextNoWhitespace(xpp);
5350    while (eventType != XmlPullParser.END_TAG) {
5351    if (!parseChargeItemDefinitionPropertyGroupComponentContent(eventType, xpp, res))
5352        unknownContent(xpp);
5353      eventType = nextNoWhitespace(xpp);
5354    }
5355    next(xpp);
5356    parseElementClose(res);
5357    return res;
5358  }
5359
5360  protected boolean parseChargeItemDefinitionPropertyGroupComponentContent(int eventType, XmlPullParser xpp, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5361    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
5362      res.getApplicability().add(parseChargeItemDefinitionApplicabilityComponent(xpp));
5363    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceComponent")) {
5364      res.getPriceComponent().add(parseMonetaryComponent(xpp));
5365    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5366      return false;
5367    }
5368    return true;
5369  }
5370
5371  protected Citation parseCitation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5372    Citation res = new Citation();
5373    parseResourceAttributes(xpp, res);
5374    next(xpp);
5375    int eventType = nextNoWhitespace(xpp);
5376    while (eventType != XmlPullParser.END_TAG) {
5377    if (!parseCitationContent(eventType, xpp, res))
5378        unknownContent(xpp);
5379      eventType = nextNoWhitespace(xpp);
5380    }
5381    next(xpp);
5382    parseElementClose(res);
5383    return res;
5384  }
5385
5386  protected boolean parseCitationContent(int eventType, XmlPullParser xpp, Citation res) throws XmlPullParserException, IOException, FHIRFormatError {
5387    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5388      res.setUrlElement(parseUri(xpp));
5389    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5390      res.getIdentifier().add(parseIdentifier(xpp));
5391    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
5392      res.setVersionElement(parseString(xpp));
5393    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
5394      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
5395    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5396      res.setNameElement(parseString(xpp));
5397    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5398      res.setTitleElement(parseString(xpp));
5399    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5400      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
5401    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
5402      res.setExperimentalElement(parseBoolean(xpp));
5403    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5404      res.setDateElement(parseDateTime(xpp));
5405    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5406      res.setPublisherElement(parseString(xpp));
5407    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
5408      res.getContact().add(parseContactDetail(xpp));
5409    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5410      res.setDescriptionElement(parseMarkdown(xpp));
5411    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
5412      res.getUseContext().add(parseUsageContext(xpp));
5413    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
5414      res.getJurisdiction().add(parseCodeableConcept(xpp));
5415    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5416      res.setPurposeElement(parseMarkdown(xpp));
5417    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
5418      res.setCopyrightElement(parseMarkdown(xpp));
5419    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
5420      res.setCopyrightLabelElement(parseString(xpp));
5421    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
5422      res.setApprovalDateElement(parseDate(xpp));
5423    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
5424      res.setLastReviewDateElement(parseDate(xpp));
5425    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
5426      res.setEffectivePeriod(parsePeriod(xpp));
5427    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
5428      res.getAuthor().add(parseContactDetail(xpp));
5429    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
5430      res.getEditor().add(parseContactDetail(xpp));
5431    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
5432      res.getReviewer().add(parseContactDetail(xpp));
5433    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
5434      res.getEndorser().add(parseContactDetail(xpp));
5435    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
5436      res.getSummary().add(parseCitationSummaryComponent(xpp));
5437    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
5438      res.getClassification().add(parseCitationClassificationComponent(xpp));
5439    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5440      res.getNote().add(parseAnnotation(xpp));
5441    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("currentState")) {
5442      res.getCurrentState().add(parseCodeableConcept(xpp));
5443    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
5444      res.getStatusDate().add(parseCitationStatusDateComponent(xpp));
5445    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
5446      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
5447    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("citedArtifact")) {
5448      res.setCitedArtifact(parseCitationCitedArtifactComponent(xpp));
5449    } else if (!parseMetadataResourceContent(eventType, xpp, res)){ 
5450      return false;
5451    }
5452    return true;
5453  }
5454
5455  protected Citation.CitationSummaryComponent parseCitationSummaryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5456    Citation.CitationSummaryComponent res = new Citation.CitationSummaryComponent();
5457    parseElementAttributes(xpp, res);
5458    next(xpp);
5459    int eventType = nextNoWhitespace(xpp);
5460    while (eventType != XmlPullParser.END_TAG) {
5461    if (!parseCitationSummaryComponentContent(eventType, xpp, res))
5462        unknownContent(xpp);
5463      eventType = nextNoWhitespace(xpp);
5464    }
5465    next(xpp);
5466    parseElementClose(res);
5467    return res;
5468  }
5469
5470  protected boolean parseCitationSummaryComponentContent(int eventType, XmlPullParser xpp, Citation.CitationSummaryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5471    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("style")) {
5472      res.setStyle(parseCodeableConcept(xpp));
5473    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
5474      res.setTextElement(parseMarkdown(xpp));
5475    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5476      return false;
5477    }
5478    return true;
5479  }
5480
5481  protected Citation.CitationClassificationComponent parseCitationClassificationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5482    Citation.CitationClassificationComponent res = new Citation.CitationClassificationComponent();
5483    parseElementAttributes(xpp, res);
5484    next(xpp);
5485    int eventType = nextNoWhitespace(xpp);
5486    while (eventType != XmlPullParser.END_TAG) {
5487    if (!parseCitationClassificationComponentContent(eventType, xpp, res))
5488        unknownContent(xpp);
5489      eventType = nextNoWhitespace(xpp);
5490    }
5491    next(xpp);
5492    parseElementClose(res);
5493    return res;
5494  }
5495
5496  protected boolean parseCitationClassificationComponentContent(int eventType, XmlPullParser xpp, Citation.CitationClassificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5497    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5498      res.setType(parseCodeableConcept(xpp));
5499    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classifier")) {
5500      res.getClassifier().add(parseCodeableConcept(xpp));
5501    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5502      return false;
5503    }
5504    return true;
5505  }
5506
5507  protected Citation.CitationStatusDateComponent parseCitationStatusDateComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5508    Citation.CitationStatusDateComponent res = new Citation.CitationStatusDateComponent();
5509    parseElementAttributes(xpp, res);
5510    next(xpp);
5511    int eventType = nextNoWhitespace(xpp);
5512    while (eventType != XmlPullParser.END_TAG) {
5513    if (!parseCitationStatusDateComponentContent(eventType, xpp, res))
5514        unknownContent(xpp);
5515      eventType = nextNoWhitespace(xpp);
5516    }
5517    next(xpp);
5518    parseElementClose(res);
5519    return res;
5520  }
5521
5522  protected boolean parseCitationStatusDateComponentContent(int eventType, XmlPullParser xpp, Citation.CitationStatusDateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5523    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
5524      res.setActivity(parseCodeableConcept(xpp));
5525    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actual")) {
5526      res.setActualElement(parseBoolean(xpp));
5527    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5528      res.setPeriod(parsePeriod(xpp));
5529    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5530      return false;
5531    }
5532    return true;
5533  }
5534
5535  protected Citation.CitationCitedArtifactComponent parseCitationCitedArtifactComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5536    Citation.CitationCitedArtifactComponent res = new Citation.CitationCitedArtifactComponent();
5537    parseElementAttributes(xpp, res);
5538    next(xpp);
5539    int eventType = nextNoWhitespace(xpp);
5540    while (eventType != XmlPullParser.END_TAG) {
5541    if (!parseCitationCitedArtifactComponentContent(eventType, xpp, res))
5542        unknownContent(xpp);
5543      eventType = nextNoWhitespace(xpp);
5544    }
5545    next(xpp);
5546    parseElementClose(res);
5547    return res;
5548  }
5549
5550  protected boolean parseCitationCitedArtifactComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5551    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5552      res.getIdentifier().add(parseIdentifier(xpp));
5553    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedIdentifier")) {
5554      res.getRelatedIdentifier().add(parseIdentifier(xpp));
5555    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateAccessed")) {
5556      res.setDateAccessedElement(parseDateTime(xpp));
5557    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
5558      res.setVersion(parseCitationCitedArtifactVersionComponent(xpp));
5559    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("currentState")) {
5560      res.getCurrentState().add(parseCodeableConcept(xpp));
5561    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
5562      res.getStatusDate().add(parseCitationCitedArtifactStatusDateComponent(xpp));
5563    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5564      res.getTitle().add(parseCitationCitedArtifactTitleComponent(xpp));
5565    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
5566      res.getAbstract().add(parseCitationCitedArtifactAbstractComponent(xpp));
5567    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
5568      res.setPart(parseCitationCitedArtifactPartComponent(xpp));
5569    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
5570      res.getRelatesTo().add(parseCitationCitedArtifactRelatesToComponent(xpp));
5571    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationForm")) {
5572      res.getPublicationForm().add(parseCitationCitedArtifactPublicationFormComponent(xpp));
5573    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("webLocation")) {
5574      res.getWebLocation().add(parseCitationCitedArtifactWebLocationComponent(xpp));
5575    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
5576      res.getClassification().add(parseCitationCitedArtifactClassificationComponent(xpp));
5577    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributorship")) {
5578      res.setContributorship(parseCitationCitedArtifactContributorshipComponent(xpp));
5579    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5580      res.getNote().add(parseAnnotation(xpp));
5581    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5582      return false;
5583    }
5584    return true;
5585  }
5586
5587  protected Citation.CitationCitedArtifactVersionComponent parseCitationCitedArtifactVersionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5588    Citation.CitationCitedArtifactVersionComponent res = new Citation.CitationCitedArtifactVersionComponent();
5589    parseElementAttributes(xpp, res);
5590    next(xpp);
5591    int eventType = nextNoWhitespace(xpp);
5592    while (eventType != XmlPullParser.END_TAG) {
5593    if (!parseCitationCitedArtifactVersionComponentContent(eventType, xpp, res))
5594        unknownContent(xpp);
5595      eventType = nextNoWhitespace(xpp);
5596    }
5597    next(xpp);
5598    parseElementClose(res);
5599    return res;
5600  }
5601
5602  protected boolean parseCitationCitedArtifactVersionComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5603    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
5604      res.setValueElement(parseString(xpp));
5605    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseCitation")) {
5606      res.setBaseCitation(parseReference(xpp));
5607    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5608      return false;
5609    }
5610    return true;
5611  }
5612
5613  protected Citation.CitationCitedArtifactStatusDateComponent parseCitationCitedArtifactStatusDateComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5614    Citation.CitationCitedArtifactStatusDateComponent res = new Citation.CitationCitedArtifactStatusDateComponent();
5615    parseElementAttributes(xpp, res);
5616    next(xpp);
5617    int eventType = nextNoWhitespace(xpp);
5618    while (eventType != XmlPullParser.END_TAG) {
5619    if (!parseCitationCitedArtifactStatusDateComponentContent(eventType, xpp, res))
5620        unknownContent(xpp);
5621      eventType = nextNoWhitespace(xpp);
5622    }
5623    next(xpp);
5624    parseElementClose(res);
5625    return res;
5626  }
5627
5628  protected boolean parseCitationCitedArtifactStatusDateComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactStatusDateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5629    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
5630      res.setActivity(parseCodeableConcept(xpp));
5631    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actual")) {
5632      res.setActualElement(parseBoolean(xpp));
5633    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
5634      res.setPeriod(parsePeriod(xpp));
5635    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5636      return false;
5637    }
5638    return true;
5639  }
5640
5641  protected Citation.CitationCitedArtifactTitleComponent parseCitationCitedArtifactTitleComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5642    Citation.CitationCitedArtifactTitleComponent res = new Citation.CitationCitedArtifactTitleComponent();
5643    parseElementAttributes(xpp, res);
5644    next(xpp);
5645    int eventType = nextNoWhitespace(xpp);
5646    while (eventType != XmlPullParser.END_TAG) {
5647    if (!parseCitationCitedArtifactTitleComponentContent(eventType, xpp, res))
5648        unknownContent(xpp);
5649      eventType = nextNoWhitespace(xpp);
5650    }
5651    next(xpp);
5652    parseElementClose(res);
5653    return res;
5654  }
5655
5656  protected boolean parseCitationCitedArtifactTitleComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactTitleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5657    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5658      res.getType().add(parseCodeableConcept(xpp));
5659    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
5660      res.setLanguage(parseCodeableConcept(xpp));
5661    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
5662      res.setTextElement(parseMarkdown(xpp));
5663    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5664      return false;
5665    }
5666    return true;
5667  }
5668
5669  protected Citation.CitationCitedArtifactAbstractComponent parseCitationCitedArtifactAbstractComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5670    Citation.CitationCitedArtifactAbstractComponent res = new Citation.CitationCitedArtifactAbstractComponent();
5671    parseElementAttributes(xpp, res);
5672    next(xpp);
5673    int eventType = nextNoWhitespace(xpp);
5674    while (eventType != XmlPullParser.END_TAG) {
5675    if (!parseCitationCitedArtifactAbstractComponentContent(eventType, xpp, res))
5676        unknownContent(xpp);
5677      eventType = nextNoWhitespace(xpp);
5678    }
5679    next(xpp);
5680    parseElementClose(res);
5681    return res;
5682  }
5683
5684  protected boolean parseCitationCitedArtifactAbstractComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactAbstractComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5685    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5686      res.setType(parseCodeableConcept(xpp));
5687    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
5688      res.setLanguage(parseCodeableConcept(xpp));
5689    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
5690      res.setTextElement(parseMarkdown(xpp));
5691    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
5692      res.setCopyrightElement(parseMarkdown(xpp));
5693    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5694      return false;
5695    }
5696    return true;
5697  }
5698
5699  protected Citation.CitationCitedArtifactPartComponent parseCitationCitedArtifactPartComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5700    Citation.CitationCitedArtifactPartComponent res = new Citation.CitationCitedArtifactPartComponent();
5701    parseElementAttributes(xpp, res);
5702    next(xpp);
5703    int eventType = nextNoWhitespace(xpp);
5704    while (eventType != XmlPullParser.END_TAG) {
5705    if (!parseCitationCitedArtifactPartComponentContent(eventType, xpp, res))
5706        unknownContent(xpp);
5707      eventType = nextNoWhitespace(xpp);
5708    }
5709    next(xpp);
5710    parseElementClose(res);
5711    return res;
5712  }
5713
5714  protected boolean parseCitationCitedArtifactPartComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactPartComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5715    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5716      res.setType(parseCodeableConcept(xpp));
5717    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
5718      res.setValueElement(parseString(xpp));
5719    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseCitation")) {
5720      res.setBaseCitation(parseReference(xpp));
5721    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5722      return false;
5723    }
5724    return true;
5725  }
5726
5727  protected Citation.CitationCitedArtifactRelatesToComponent parseCitationCitedArtifactRelatesToComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5728    Citation.CitationCitedArtifactRelatesToComponent res = new Citation.CitationCitedArtifactRelatesToComponent();
5729    parseElementAttributes(xpp, res);
5730    next(xpp);
5731    int eventType = nextNoWhitespace(xpp);
5732    while (eventType != XmlPullParser.END_TAG) {
5733    if (!parseCitationCitedArtifactRelatesToComponentContent(eventType, xpp, res))
5734        unknownContent(xpp);
5735      eventType = nextNoWhitespace(xpp);
5736    }
5737    next(xpp);
5738    parseElementClose(res);
5739    return res;
5740  }
5741
5742  protected boolean parseCitationCitedArtifactRelatesToComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5743    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5744      res.setTypeElement(parseEnumeration(xpp, Citation.RelatedArtifactTypeExpanded.NULL, new Citation.RelatedArtifactTypeExpandedEnumFactory()));
5745    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classifier")) {
5746      res.getClassifier().add(parseCodeableConcept(xpp));
5747    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
5748      res.setLabelElement(parseString(xpp));
5749    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5750      res.setDisplayElement(parseString(xpp));
5751    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("citation")) {
5752      res.setCitationElement(parseMarkdown(xpp));
5753    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
5754      res.setDocument(parseAttachment(xpp));
5755    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
5756      res.setResourceElement(parseCanonical(xpp));
5757    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceReference")) {
5758      res.setResourceReference(parseReference(xpp));
5759    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5760      return false;
5761    }
5762    return true;
5763  }
5764
5765  protected Citation.CitationCitedArtifactPublicationFormComponent parseCitationCitedArtifactPublicationFormComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5766    Citation.CitationCitedArtifactPublicationFormComponent res = new Citation.CitationCitedArtifactPublicationFormComponent();
5767    parseElementAttributes(xpp, res);
5768    next(xpp);
5769    int eventType = nextNoWhitespace(xpp);
5770    while (eventType != XmlPullParser.END_TAG) {
5771    if (!parseCitationCitedArtifactPublicationFormComponentContent(eventType, xpp, res))
5772        unknownContent(xpp);
5773      eventType = nextNoWhitespace(xpp);
5774    }
5775    next(xpp);
5776    parseElementClose(res);
5777    return res;
5778  }
5779
5780  protected boolean parseCitationCitedArtifactPublicationFormComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactPublicationFormComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5781    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publishedIn")) {
5782      res.setPublishedIn(parseCitationCitedArtifactPublicationFormPublishedInComponent(xpp));
5783    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("citedMedium")) {
5784      res.setCitedMedium(parseCodeableConcept(xpp));
5785    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("volume")) {
5786      res.setVolumeElement(parseString(xpp));
5787    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issue")) {
5788      res.setIssueElement(parseString(xpp));
5789    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("articleDate")) {
5790      res.setArticleDateElement(parseDateTime(xpp));
5791    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationDateText")) {
5792      res.setPublicationDateTextElement(parseString(xpp));
5793    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationDateSeason")) {
5794      res.setPublicationDateSeasonElement(parseString(xpp));
5795    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastRevisionDate")) {
5796      res.setLastRevisionDateElement(parseDateTime(xpp));
5797    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
5798      res.getLanguage().add(parseCodeableConcept(xpp));
5799    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accessionNumber")) {
5800      res.setAccessionNumberElement(parseString(xpp));
5801    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pageString")) {
5802      res.setPageStringElement(parseString(xpp));
5803    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("firstPage")) {
5804      res.setFirstPageElement(parseString(xpp));
5805    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastPage")) {
5806      res.setLastPageElement(parseString(xpp));
5807    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pageCount")) {
5808      res.setPageCountElement(parseString(xpp));
5809    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
5810      res.setCopyrightElement(parseMarkdown(xpp));
5811    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5812      return false;
5813    }
5814    return true;
5815  }
5816
5817  protected Citation.CitationCitedArtifactPublicationFormPublishedInComponent parseCitationCitedArtifactPublicationFormPublishedInComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5818    Citation.CitationCitedArtifactPublicationFormPublishedInComponent res = new Citation.CitationCitedArtifactPublicationFormPublishedInComponent();
5819    parseElementAttributes(xpp, res);
5820    next(xpp);
5821    int eventType = nextNoWhitespace(xpp);
5822    while (eventType != XmlPullParser.END_TAG) {
5823    if (!parseCitationCitedArtifactPublicationFormPublishedInComponentContent(eventType, xpp, res))
5824        unknownContent(xpp);
5825      eventType = nextNoWhitespace(xpp);
5826    }
5827    next(xpp);
5828    parseElementClose(res);
5829    return res;
5830  }
5831
5832  protected boolean parseCitationCitedArtifactPublicationFormPublishedInComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactPublicationFormPublishedInComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5833    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5834      res.setType(parseCodeableConcept(xpp));
5835    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5836      res.getIdentifier().add(parseIdentifier(xpp));
5837    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5838      res.setTitleElement(parseString(xpp));
5839    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5840      res.setPublisher(parseReference(xpp));
5841    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisherLocation")) {
5842      res.setPublisherLocationElement(parseString(xpp));
5843    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5844      return false;
5845    }
5846    return true;
5847  }
5848
5849  protected Citation.CitationCitedArtifactWebLocationComponent parseCitationCitedArtifactWebLocationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5850    Citation.CitationCitedArtifactWebLocationComponent res = new Citation.CitationCitedArtifactWebLocationComponent();
5851    parseElementAttributes(xpp, res);
5852    next(xpp);
5853    int eventType = nextNoWhitespace(xpp);
5854    while (eventType != XmlPullParser.END_TAG) {
5855    if (!parseCitationCitedArtifactWebLocationComponentContent(eventType, xpp, res))
5856        unknownContent(xpp);
5857      eventType = nextNoWhitespace(xpp);
5858    }
5859    next(xpp);
5860    parseElementClose(res);
5861    return res;
5862  }
5863
5864  protected boolean parseCitationCitedArtifactWebLocationComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactWebLocationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5865    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classifier")) {
5866      res.getClassifier().add(parseCodeableConcept(xpp));
5867    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5868      res.setUrlElement(parseUri(xpp));
5869    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5870      return false;
5871    }
5872    return true;
5873  }
5874
5875  protected Citation.CitationCitedArtifactClassificationComponent parseCitationCitedArtifactClassificationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5876    Citation.CitationCitedArtifactClassificationComponent res = new Citation.CitationCitedArtifactClassificationComponent();
5877    parseElementAttributes(xpp, res);
5878    next(xpp);
5879    int eventType = nextNoWhitespace(xpp);
5880    while (eventType != XmlPullParser.END_TAG) {
5881    if (!parseCitationCitedArtifactClassificationComponentContent(eventType, xpp, res))
5882        unknownContent(xpp);
5883      eventType = nextNoWhitespace(xpp);
5884    }
5885    next(xpp);
5886    parseElementClose(res);
5887    return res;
5888  }
5889
5890  protected boolean parseCitationCitedArtifactClassificationComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactClassificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5891    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5892      res.setType(parseCodeableConcept(xpp));
5893    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classifier")) {
5894      res.getClassifier().add(parseCodeableConcept(xpp));
5895    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("artifactAssessment")) {
5896      res.getArtifactAssessment().add(parseReference(xpp));
5897    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5898      return false;
5899    }
5900    return true;
5901  }
5902
5903  protected Citation.CitationCitedArtifactContributorshipComponent parseCitationCitedArtifactContributorshipComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5904    Citation.CitationCitedArtifactContributorshipComponent res = new Citation.CitationCitedArtifactContributorshipComponent();
5905    parseElementAttributes(xpp, res);
5906    next(xpp);
5907    int eventType = nextNoWhitespace(xpp);
5908    while (eventType != XmlPullParser.END_TAG) {
5909    if (!parseCitationCitedArtifactContributorshipComponentContent(eventType, xpp, res))
5910        unknownContent(xpp);
5911      eventType = nextNoWhitespace(xpp);
5912    }
5913    next(xpp);
5914    parseElementClose(res);
5915    return res;
5916  }
5917
5918  protected boolean parseCitationCitedArtifactContributorshipComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactContributorshipComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5919    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complete")) {
5920      res.setCompleteElement(parseBoolean(xpp));
5921    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
5922      res.getEntry().add(parseCitationCitedArtifactContributorshipEntryComponent(xpp));
5923    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
5924      res.getSummary().add(parseCitationContributorshipSummaryComponent(xpp));
5925    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5926      return false;
5927    }
5928    return true;
5929  }
5930
5931  protected Citation.CitationCitedArtifactContributorshipEntryComponent parseCitationCitedArtifactContributorshipEntryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5932    Citation.CitationCitedArtifactContributorshipEntryComponent res = new Citation.CitationCitedArtifactContributorshipEntryComponent();
5933    parseElementAttributes(xpp, res);
5934    next(xpp);
5935    int eventType = nextNoWhitespace(xpp);
5936    while (eventType != XmlPullParser.END_TAG) {
5937    if (!parseCitationCitedArtifactContributorshipEntryComponentContent(eventType, xpp, res))
5938        unknownContent(xpp);
5939      eventType = nextNoWhitespace(xpp);
5940    }
5941    next(xpp);
5942    parseElementClose(res);
5943    return res;
5944  }
5945
5946  protected boolean parseCitationCitedArtifactContributorshipEntryComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactContributorshipEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5947    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
5948      res.setContributor(parseReference(xpp));
5949    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forenameInitials")) {
5950      res.setForenameInitialsElement(parseString(xpp));
5951    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("affiliation")) {
5952      res.getAffiliation().add(parseReference(xpp));
5953    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributionType")) {
5954      res.getContributionType().add(parseCodeableConcept(xpp));
5955    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
5956      res.setRole(parseCodeableConcept(xpp));
5957    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributionInstance")) {
5958      res.getContributionInstance().add(parseCitationCitedArtifactContributorshipEntryContributionInstanceComponent(xpp));
5959    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("correspondingContact")) {
5960      res.setCorrespondingContactElement(parseBoolean(xpp));
5961    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rankingOrder")) {
5962      res.setRankingOrderElement(parsePositiveInt(xpp));
5963    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5964      return false;
5965    }
5966    return true;
5967  }
5968
5969  protected Citation.CitationCitedArtifactContributorshipEntryContributionInstanceComponent parseCitationCitedArtifactContributorshipEntryContributionInstanceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5970    Citation.CitationCitedArtifactContributorshipEntryContributionInstanceComponent res = new Citation.CitationCitedArtifactContributorshipEntryContributionInstanceComponent();
5971    parseElementAttributes(xpp, res);
5972    next(xpp);
5973    int eventType = nextNoWhitespace(xpp);
5974    while (eventType != XmlPullParser.END_TAG) {
5975    if (!parseCitationCitedArtifactContributorshipEntryContributionInstanceComponentContent(eventType, xpp, res))
5976        unknownContent(xpp);
5977      eventType = nextNoWhitespace(xpp);
5978    }
5979    next(xpp);
5980    parseElementClose(res);
5981    return res;
5982  }
5983
5984  protected boolean parseCitationCitedArtifactContributorshipEntryContributionInstanceComponentContent(int eventType, XmlPullParser xpp, Citation.CitationCitedArtifactContributorshipEntryContributionInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5985    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5986      res.setType(parseCodeableConcept(xpp));
5987    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
5988      res.setTimeElement(parseDateTime(xpp));
5989    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
5990      return false;
5991    }
5992    return true;
5993  }
5994
5995  protected Citation.ContributorshipSummaryComponent parseCitationContributorshipSummaryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5996    Citation.ContributorshipSummaryComponent res = new Citation.ContributorshipSummaryComponent();
5997    parseElementAttributes(xpp, res);
5998    next(xpp);
5999    int eventType = nextNoWhitespace(xpp);
6000    while (eventType != XmlPullParser.END_TAG) {
6001    if (!parseCitationContributorshipSummaryComponentContent(eventType, xpp, res))
6002        unknownContent(xpp);
6003      eventType = nextNoWhitespace(xpp);
6004    }
6005    next(xpp);
6006    parseElementClose(res);
6007    return res;
6008  }
6009
6010  protected boolean parseCitationContributorshipSummaryComponentContent(int eventType, XmlPullParser xpp, Citation.ContributorshipSummaryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6011    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6012      res.setType(parseCodeableConcept(xpp));
6013    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("style")) {
6014      res.setStyle(parseCodeableConcept(xpp));
6015    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6016      res.setSource(parseCodeableConcept(xpp));
6017    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
6018      res.setValueElement(parseMarkdown(xpp));
6019    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6020      return false;
6021    }
6022    return true;
6023  }
6024
6025  protected Claim parseClaim(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6026    Claim res = new Claim();
6027    parseResourceAttributes(xpp, res);
6028    next(xpp);
6029    int eventType = nextNoWhitespace(xpp);
6030    while (eventType != XmlPullParser.END_TAG) {
6031    if (!parseClaimContent(eventType, xpp, res))
6032        unknownContent(xpp);
6033      eventType = nextNoWhitespace(xpp);
6034    }
6035    next(xpp);
6036    parseElementClose(res);
6037    return res;
6038  }
6039
6040  protected boolean parseClaimContent(int eventType, XmlPullParser xpp, Claim res) throws XmlPullParserException, IOException, FHIRFormatError {
6041    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6042      res.getIdentifier().add(parseIdentifier(xpp));
6043    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("traceNumber")) {
6044      res.getTraceNumber().add(parseIdentifier(xpp));
6045    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6046      res.setStatusElement(parseEnumeration(xpp, Enumerations.FinancialResourceStatusCodes.NULL, new Enumerations.FinancialResourceStatusCodesEnumFactory()));
6047    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6048      res.setType(parseCodeableConcept(xpp));
6049    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
6050      res.setSubType(parseCodeableConcept(xpp));
6051    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
6052      res.setUseElement(parseEnumeration(xpp, Enumerations.Use.NULL, new Enumerations.UseEnumFactory()));
6053    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6054      res.setPatient(parseReference(xpp));
6055    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
6056      res.setBillablePeriod(parsePeriod(xpp));
6057    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
6058      res.setCreatedElement(parseDateTime(xpp));
6059    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
6060      res.setEnterer(parseReference(xpp));
6061    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
6062      res.setInsurer(parseReference(xpp));
6063    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
6064      res.setProvider(parseReference(xpp));
6065    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
6066      res.setPriority(parseCodeableConcept(xpp));
6067    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
6068      res.setFundsReserve(parseCodeableConcept(xpp));
6069    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
6070      res.getRelated().add(parseClaimRelatedClaimComponent(xpp));
6071    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
6072      res.setPrescription(parseReference(xpp));
6073    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
6074      res.setOriginalPrescription(parseReference(xpp));
6075    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
6076      res.setPayee(parseClaimPayeeComponent(xpp));
6077    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
6078      res.setReferral(parseReference(xpp));
6079    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
6080      res.getEncounter().add(parseReference(xpp));
6081    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
6082      res.setFacility(parseReference(xpp));
6083    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisRelatedGroup")) {
6084      res.setDiagnosisRelatedGroup(parseCodeableConcept(xpp));
6085    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
6086      res.getEvent().add(parseClaimEventComponent(xpp));
6087    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
6088      res.getCareTeam().add(parseClaimCareTeamComponent(xpp));
6089    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
6090      res.getSupportingInfo().add(parseClaimSupportingInformationComponent(xpp));
6091    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
6092      res.getDiagnosis().add(parseClaimDiagnosisComponent(xpp));
6093    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
6094      res.getProcedure().add(parseClaimProcedureComponent(xpp));
6095    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
6096      res.getInsurance().add(parseClaimInsuranceComponent(xpp));
6097    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
6098      res.setAccident(parseClaimAccidentComponent(xpp));
6099    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientPaid")) {
6100      res.setPatientPaid(parseMoney(xpp));
6101    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
6102      res.getItem().add(parseClaimItemComponent(xpp));
6103    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
6104      res.setTotal(parseMoney(xpp));
6105    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
6106      return false;
6107    }
6108    return true;
6109  }
6110
6111  protected Claim.RelatedClaimComponent parseClaimRelatedClaimComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6112    Claim.RelatedClaimComponent res = new Claim.RelatedClaimComponent();
6113    parseElementAttributes(xpp, res);
6114    next(xpp);
6115    int eventType = nextNoWhitespace(xpp);
6116    while (eventType != XmlPullParser.END_TAG) {
6117    if (!parseClaimRelatedClaimComponentContent(eventType, xpp, res))
6118        unknownContent(xpp);
6119      eventType = nextNoWhitespace(xpp);
6120    }
6121    next(xpp);
6122    parseElementClose(res);
6123    return res;
6124  }
6125
6126  protected boolean parseClaimRelatedClaimComponentContent(int eventType, XmlPullParser xpp, Claim.RelatedClaimComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6127    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
6128      res.setClaim(parseReference(xpp));
6129    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
6130      res.setRelationship(parseCodeableConcept(xpp));
6131    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6132      res.setReference(parseIdentifier(xpp));
6133    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6134      return false;
6135    }
6136    return true;
6137  }
6138
6139  protected Claim.PayeeComponent parseClaimPayeeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6140    Claim.PayeeComponent res = new Claim.PayeeComponent();
6141    parseElementAttributes(xpp, res);
6142    next(xpp);
6143    int eventType = nextNoWhitespace(xpp);
6144    while (eventType != XmlPullParser.END_TAG) {
6145    if (!parseClaimPayeeComponentContent(eventType, xpp, res))
6146        unknownContent(xpp);
6147      eventType = nextNoWhitespace(xpp);
6148    }
6149    next(xpp);
6150    parseElementClose(res);
6151    return res;
6152  }
6153
6154  protected boolean parseClaimPayeeComponentContent(int eventType, XmlPullParser xpp, Claim.PayeeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6155    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6156      res.setType(parseCodeableConcept(xpp));
6157    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
6158      res.setParty(parseReference(xpp));
6159    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6160      return false;
6161    }
6162    return true;
6163  }
6164
6165  protected Claim.ClaimEventComponent parseClaimEventComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6166    Claim.ClaimEventComponent res = new Claim.ClaimEventComponent();
6167    parseElementAttributes(xpp, res);
6168    next(xpp);
6169    int eventType = nextNoWhitespace(xpp);
6170    while (eventType != XmlPullParser.END_TAG) {
6171    if (!parseClaimEventComponentContent(eventType, xpp, res))
6172        unknownContent(xpp);
6173      eventType = nextNoWhitespace(xpp);
6174    }
6175    next(xpp);
6176    parseElementClose(res);
6177    return res;
6178  }
6179
6180  protected boolean parseClaimEventComponentContent(int eventType, XmlPullParser xpp, Claim.ClaimEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6181    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6182      res.setType(parseCodeableConcept(xpp));
6183    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "when")) {
6184      res.setWhen(parseType("when", xpp));
6185    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6186      return false;
6187    }
6188    return true;
6189  }
6190
6191  protected Claim.CareTeamComponent parseClaimCareTeamComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6192    Claim.CareTeamComponent res = new Claim.CareTeamComponent();
6193    parseElementAttributes(xpp, res);
6194    next(xpp);
6195    int eventType = nextNoWhitespace(xpp);
6196    while (eventType != XmlPullParser.END_TAG) {
6197    if (!parseClaimCareTeamComponentContent(eventType, xpp, res))
6198        unknownContent(xpp);
6199      eventType = nextNoWhitespace(xpp);
6200    }
6201    next(xpp);
6202    parseElementClose(res);
6203    return res;
6204  }
6205
6206  protected boolean parseClaimCareTeamComponentContent(int eventType, XmlPullParser xpp, Claim.CareTeamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6207    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
6208      res.setSequenceElement(parsePositiveInt(xpp));
6209    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
6210      res.setProvider(parseReference(xpp));
6211    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
6212      res.setResponsibleElement(parseBoolean(xpp));
6213    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
6214      res.setRole(parseCodeableConcept(xpp));
6215    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
6216      res.setSpecialty(parseCodeableConcept(xpp));
6217    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6218      return false;
6219    }
6220    return true;
6221  }
6222
6223  protected Claim.SupportingInformationComponent parseClaimSupportingInformationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6224    Claim.SupportingInformationComponent res = new Claim.SupportingInformationComponent();
6225    parseElementAttributes(xpp, res);
6226    next(xpp);
6227    int eventType = nextNoWhitespace(xpp);
6228    while (eventType != XmlPullParser.END_TAG) {
6229    if (!parseClaimSupportingInformationComponentContent(eventType, xpp, res))
6230        unknownContent(xpp);
6231      eventType = nextNoWhitespace(xpp);
6232    }
6233    next(xpp);
6234    parseElementClose(res);
6235    return res;
6236  }
6237
6238  protected boolean parseClaimSupportingInformationComponentContent(int eventType, XmlPullParser xpp, Claim.SupportingInformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6239    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
6240      res.setSequenceElement(parsePositiveInt(xpp));
6241    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6242      res.setCategory(parseCodeableConcept(xpp));
6243    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6244      res.setCode(parseCodeableConcept(xpp));
6245    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
6246      res.setTiming(parseType("timing", xpp));
6247    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
6248      res.setValue(parseType("value", xpp));
6249    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
6250      res.setReason(parseCodeableConcept(xpp));
6251    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6252      return false;
6253    }
6254    return true;
6255  }
6256
6257  protected Claim.DiagnosisComponent parseClaimDiagnosisComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6258    Claim.DiagnosisComponent res = new Claim.DiagnosisComponent();
6259    parseElementAttributes(xpp, res);
6260    next(xpp);
6261    int eventType = nextNoWhitespace(xpp);
6262    while (eventType != XmlPullParser.END_TAG) {
6263    if (!parseClaimDiagnosisComponentContent(eventType, xpp, res))
6264        unknownContent(xpp);
6265      eventType = nextNoWhitespace(xpp);
6266    }
6267    next(xpp);
6268    parseElementClose(res);
6269    return res;
6270  }
6271
6272  protected boolean parseClaimDiagnosisComponentContent(int eventType, XmlPullParser xpp, Claim.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6273    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
6274      res.setSequenceElement(parsePositiveInt(xpp));
6275    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
6276      res.setDiagnosis(parseType("diagnosis", xpp));
6277    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6278      res.getType().add(parseCodeableConcept(xpp));
6279    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onAdmission")) {
6280      res.setOnAdmission(parseCodeableConcept(xpp));
6281    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6282      return false;
6283    }
6284    return true;
6285  }
6286
6287  protected Claim.ProcedureComponent parseClaimProcedureComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6288    Claim.ProcedureComponent res = new Claim.ProcedureComponent();
6289    parseElementAttributes(xpp, res);
6290    next(xpp);
6291    int eventType = nextNoWhitespace(xpp);
6292    while (eventType != XmlPullParser.END_TAG) {
6293    if (!parseClaimProcedureComponentContent(eventType, xpp, res))
6294        unknownContent(xpp);
6295      eventType = nextNoWhitespace(xpp);
6296    }
6297    next(xpp);
6298    parseElementClose(res);
6299    return res;
6300  }
6301
6302  protected boolean parseClaimProcedureComponentContent(int eventType, XmlPullParser xpp, Claim.ProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6303    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
6304      res.setSequenceElement(parsePositiveInt(xpp));
6305    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6306      res.getType().add(parseCodeableConcept(xpp));
6307    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6308      res.setDateElement(parseDateTime(xpp));
6309    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
6310      res.setProcedure(parseType("procedure", xpp));
6311    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
6312      res.getUdi().add(parseReference(xpp));
6313    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6314      return false;
6315    }
6316    return true;
6317  }
6318
6319  protected Claim.InsuranceComponent parseClaimInsuranceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6320    Claim.InsuranceComponent res = new Claim.InsuranceComponent();
6321    parseElementAttributes(xpp, res);
6322    next(xpp);
6323    int eventType = nextNoWhitespace(xpp);
6324    while (eventType != XmlPullParser.END_TAG) {
6325    if (!parseClaimInsuranceComponentContent(eventType, xpp, res))
6326        unknownContent(xpp);
6327      eventType = nextNoWhitespace(xpp);
6328    }
6329    next(xpp);
6330    parseElementClose(res);
6331    return res;
6332  }
6333
6334  protected boolean parseClaimInsuranceComponentContent(int eventType, XmlPullParser xpp, Claim.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6335    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
6336      res.setSequenceElement(parsePositiveInt(xpp));
6337    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
6338      res.setFocalElement(parseBoolean(xpp));
6339    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6340      res.setIdentifier(parseIdentifier(xpp));
6341    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
6342      res.setCoverage(parseReference(xpp));
6343    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
6344      res.setBusinessArrangementElement(parseString(xpp));
6345    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
6346      res.getPreAuthRef().add(parseString(xpp));
6347    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
6348      res.setClaimResponse(parseReference(xpp));
6349    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6350      return false;
6351    }
6352    return true;
6353  }
6354
6355  protected Claim.AccidentComponent parseClaimAccidentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6356    Claim.AccidentComponent res = new Claim.AccidentComponent();
6357    parseElementAttributes(xpp, res);
6358    next(xpp);
6359    int eventType = nextNoWhitespace(xpp);
6360    while (eventType != XmlPullParser.END_TAG) {
6361    if (!parseClaimAccidentComponentContent(eventType, xpp, res))
6362        unknownContent(xpp);
6363      eventType = nextNoWhitespace(xpp);
6364    }
6365    next(xpp);
6366    parseElementClose(res);
6367    return res;
6368  }
6369
6370  protected boolean parseClaimAccidentComponentContent(int eventType, XmlPullParser xpp, Claim.AccidentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6371    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6372      res.setDateElement(parseDate(xpp));
6373    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6374      res.setType(parseCodeableConcept(xpp));
6375    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
6376      res.setLocation(parseType("location", xpp));
6377    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6378      return false;
6379    }
6380    return true;
6381  }
6382
6383  protected Claim.ItemComponent parseClaimItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6384    Claim.ItemComponent res = new Claim.ItemComponent();
6385    parseElementAttributes(xpp, res);
6386    next(xpp);
6387    int eventType = nextNoWhitespace(xpp);
6388    while (eventType != XmlPullParser.END_TAG) {
6389    if (!parseClaimItemComponentContent(eventType, xpp, res))
6390        unknownContent(xpp);
6391      eventType = nextNoWhitespace(xpp);
6392    }
6393    next(xpp);
6394    parseElementClose(res);
6395    return res;
6396  }
6397
6398  protected boolean parseClaimItemComponentContent(int eventType, XmlPullParser xpp, Claim.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6399    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
6400      res.setSequenceElement(parsePositiveInt(xpp));
6401    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("traceNumber")) {
6402      res.getTraceNumber().add(parseIdentifier(xpp));
6403    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeamSequence")) {
6404      res.getCareTeamSequence().add(parsePositiveInt(xpp));
6405    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisSequence")) {
6406      res.getDiagnosisSequence().add(parsePositiveInt(xpp));
6407    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureSequence")) {
6408      res.getProcedureSequence().add(parsePositiveInt(xpp));
6409    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSequence")) {
6410      res.getInformationSequence().add(parsePositiveInt(xpp));
6411    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
6412      res.setRevenue(parseCodeableConcept(xpp));
6413    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6414      res.setCategory(parseCodeableConcept(xpp));
6415    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
6416      res.setProductOrService(parseCodeableConcept(xpp));
6417    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrServiceEnd")) {
6418      res.setProductOrServiceEnd(parseCodeableConcept(xpp));
6419    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
6420      res.getRequest().add(parseReference(xpp));
6421    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
6422      res.getModifier().add(parseCodeableConcept(xpp));
6423    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
6424      res.getProgramCode().add(parseCodeableConcept(xpp));
6425    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
6426      res.setServiced(parseType("serviced", xpp));
6427    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
6428      res.setLocation(parseType("location", xpp));
6429    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientPaid")) {
6430      res.setPatientPaid(parseMoney(xpp));
6431    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6432      res.setQuantity(parseQuantity(xpp));
6433    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
6434      res.setUnitPrice(parseMoney(xpp));
6435    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
6436      res.setFactorElement(parseDecimal(xpp));
6437    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tax")) {
6438      res.setTax(parseMoney(xpp));
6439    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
6440      res.setNet(parseMoney(xpp));
6441    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
6442      res.getUdi().add(parseReference(xpp));
6443    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
6444      res.getBodySite().add(parseClaimBodySiteComponent(xpp));
6445    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
6446      res.getEncounter().add(parseReference(xpp));
6447    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
6448      res.getDetail().add(parseClaimDetailComponent(xpp));
6449    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6450      return false;
6451    }
6452    return true;
6453  }
6454
6455  protected Claim.BodySiteComponent parseClaimBodySiteComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6456    Claim.BodySiteComponent res = new Claim.BodySiteComponent();
6457    parseElementAttributes(xpp, res);
6458    next(xpp);
6459    int eventType = nextNoWhitespace(xpp);
6460    while (eventType != XmlPullParser.END_TAG) {
6461    if (!parseClaimBodySiteComponentContent(eventType, xpp, res))
6462        unknownContent(xpp);
6463      eventType = nextNoWhitespace(xpp);
6464    }
6465    next(xpp);
6466    parseElementClose(res);
6467    return res;
6468  }
6469
6470  protected boolean parseClaimBodySiteComponentContent(int eventType, XmlPullParser xpp, Claim.BodySiteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6471    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
6472      res.getSite().add(parseCodeableReference(xpp));
6473    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
6474      res.getSubSite().add(parseCodeableConcept(xpp));
6475    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6476      return false;
6477    }
6478    return true;
6479  }
6480
6481  protected Claim.DetailComponent parseClaimDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6482    Claim.DetailComponent res = new Claim.DetailComponent();
6483    parseElementAttributes(xpp, res);
6484    next(xpp);
6485    int eventType = nextNoWhitespace(xpp);
6486    while (eventType != XmlPullParser.END_TAG) {
6487    if (!parseClaimDetailComponentContent(eventType, xpp, res))
6488        unknownContent(xpp);
6489      eventType = nextNoWhitespace(xpp);
6490    }
6491    next(xpp);
6492    parseElementClose(res);
6493    return res;
6494  }
6495
6496  protected boolean parseClaimDetailComponentContent(int eventType, XmlPullParser xpp, Claim.DetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6497    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
6498      res.setSequenceElement(parsePositiveInt(xpp));
6499    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("traceNumber")) {
6500      res.getTraceNumber().add(parseIdentifier(xpp));
6501    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
6502      res.setRevenue(parseCodeableConcept(xpp));
6503    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6504      res.setCategory(parseCodeableConcept(xpp));
6505    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
6506      res.setProductOrService(parseCodeableConcept(xpp));
6507    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrServiceEnd")) {
6508      res.setProductOrServiceEnd(parseCodeableConcept(xpp));
6509    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
6510      res.getModifier().add(parseCodeableConcept(xpp));
6511    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
6512      res.getProgramCode().add(parseCodeableConcept(xpp));
6513    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientPaid")) {
6514      res.setPatientPaid(parseMoney(xpp));
6515    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6516      res.setQuantity(parseQuantity(xpp));
6517    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
6518      res.setUnitPrice(parseMoney(xpp));
6519    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
6520      res.setFactorElement(parseDecimal(xpp));
6521    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tax")) {
6522      res.setTax(parseMoney(xpp));
6523    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
6524      res.setNet(parseMoney(xpp));
6525    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
6526      res.getUdi().add(parseReference(xpp));
6527    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
6528      res.getSubDetail().add(parseClaimSubDetailComponent(xpp));
6529    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6530      return false;
6531    }
6532    return true;
6533  }
6534
6535  protected Claim.SubDetailComponent parseClaimSubDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6536    Claim.SubDetailComponent res = new Claim.SubDetailComponent();
6537    parseElementAttributes(xpp, res);
6538    next(xpp);
6539    int eventType = nextNoWhitespace(xpp);
6540    while (eventType != XmlPullParser.END_TAG) {
6541    if (!parseClaimSubDetailComponentContent(eventType, xpp, res))
6542        unknownContent(xpp);
6543      eventType = nextNoWhitespace(xpp);
6544    }
6545    next(xpp);
6546    parseElementClose(res);
6547    return res;
6548  }
6549
6550  protected boolean parseClaimSubDetailComponentContent(int eventType, XmlPullParser xpp, Claim.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6551    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
6552      res.setSequenceElement(parsePositiveInt(xpp));
6553    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("traceNumber")) {
6554      res.getTraceNumber().add(parseIdentifier(xpp));
6555    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
6556      res.setRevenue(parseCodeableConcept(xpp));
6557    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6558      res.setCategory(parseCodeableConcept(xpp));
6559    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
6560      res.setProductOrService(parseCodeableConcept(xpp));
6561    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrServiceEnd")) {
6562      res.setProductOrServiceEnd(parseCodeableConcept(xpp));
6563    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
6564      res.getModifier().add(parseCodeableConcept(xpp));
6565    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
6566      res.getProgramCode().add(parseCodeableConcept(xpp));
6567    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientPaid")) {
6568      res.setPatientPaid(parseMoney(xpp));
6569    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6570      res.setQuantity(parseQuantity(xpp));
6571    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
6572      res.setUnitPrice(parseMoney(xpp));
6573    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
6574      res.setFactorElement(parseDecimal(xpp));
6575    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tax")) {
6576      res.setTax(parseMoney(xpp));
6577    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
6578      res.setNet(parseMoney(xpp));
6579    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
6580      res.getUdi().add(parseReference(xpp));
6581    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6582      return false;
6583    }
6584    return true;
6585  }
6586
6587  protected ClaimResponse parseClaimResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6588    ClaimResponse res = new ClaimResponse();
6589    parseResourceAttributes(xpp, res);
6590    next(xpp);
6591    int eventType = nextNoWhitespace(xpp);
6592    while (eventType != XmlPullParser.END_TAG) {
6593    if (!parseClaimResponseContent(eventType, xpp, res))
6594        unknownContent(xpp);
6595      eventType = nextNoWhitespace(xpp);
6596    }
6597    next(xpp);
6598    parseElementClose(res);
6599    return res;
6600  }
6601
6602  protected boolean parseClaimResponseContent(int eventType, XmlPullParser xpp, ClaimResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
6603    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6604      res.getIdentifier().add(parseIdentifier(xpp));
6605    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("traceNumber")) {
6606      res.getTraceNumber().add(parseIdentifier(xpp));
6607    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6608      res.setStatusElement(parseEnumeration(xpp, Enumerations.FinancialResourceStatusCodes.NULL, new Enumerations.FinancialResourceStatusCodesEnumFactory()));
6609    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6610      res.setType(parseCodeableConcept(xpp));
6611    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
6612      res.setSubType(parseCodeableConcept(xpp));
6613    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
6614      res.setUseElement(parseEnumeration(xpp, Enumerations.Use.NULL, new Enumerations.UseEnumFactory()));
6615    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6616      res.setPatient(parseReference(xpp));
6617    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
6618      res.setCreatedElement(parseDateTime(xpp));
6619    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
6620      res.setInsurer(parseReference(xpp));
6621    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
6622      res.setRequestor(parseReference(xpp));
6623    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
6624      res.setRequest(parseReference(xpp));
6625    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
6626      res.setOutcomeElement(parseEnumeration(xpp, Enumerations.ClaimProcessingCodes.NULL, new Enumerations.ClaimProcessingCodesEnumFactory()));
6627    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decision")) {
6628      res.setDecision(parseCodeableConcept(xpp));
6629    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
6630      res.setDispositionElement(parseString(xpp));
6631    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
6632      res.setPreAuthRefElement(parseString(xpp));
6633    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthPeriod")) {
6634      res.setPreAuthPeriod(parsePeriod(xpp));
6635    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
6636      res.getEvent().add(parseClaimResponseEventComponent(xpp));
6637    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payeeType")) {
6638      res.setPayeeType(parseCodeableConcept(xpp));
6639    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
6640      res.getEncounter().add(parseReference(xpp));
6641    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisRelatedGroup")) {
6642      res.setDiagnosisRelatedGroup(parseCodeableConcept(xpp));
6643    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
6644      res.getItem().add(parseClaimResponseItemComponent(xpp));
6645    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
6646      res.getAddItem().add(parseClaimResponseAddedItemComponent(xpp));
6647    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
6648      res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp));
6649    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
6650      res.getTotal().add(parseClaimResponseTotalComponent(xpp));
6651    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
6652      res.setPayment(parseClaimResponsePaymentComponent(xpp));
6653    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
6654      res.setFundsReserve(parseCodeableConcept(xpp));
6655    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("formCode")) {
6656      res.setFormCode(parseCodeableConcept(xpp));
6657    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
6658      res.setForm(parseAttachment(xpp));
6659    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
6660      res.getProcessNote().add(parseClaimResponseNoteComponent(xpp));
6661    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationRequest")) {
6662      res.getCommunicationRequest().add(parseReference(xpp));
6663    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
6664      res.getInsurance().add(parseClaimResponseInsuranceComponent(xpp));
6665    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
6666      res.getError().add(parseClaimResponseErrorComponent(xpp));
6667    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
6668      return false;
6669    }
6670    return true;
6671  }
6672
6673  protected ClaimResponse.ClaimResponseEventComponent parseClaimResponseEventComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6674    ClaimResponse.ClaimResponseEventComponent res = new ClaimResponse.ClaimResponseEventComponent();
6675    parseElementAttributes(xpp, res);
6676    next(xpp);
6677    int eventType = nextNoWhitespace(xpp);
6678    while (eventType != XmlPullParser.END_TAG) {
6679    if (!parseClaimResponseEventComponentContent(eventType, xpp, res))
6680        unknownContent(xpp);
6681      eventType = nextNoWhitespace(xpp);
6682    }
6683    next(xpp);
6684    parseElementClose(res);
6685    return res;
6686  }
6687
6688  protected boolean parseClaimResponseEventComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.ClaimResponseEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6689    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6690      res.setType(parseCodeableConcept(xpp));
6691    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "when")) {
6692      res.setWhen(parseType("when", xpp));
6693    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6694      return false;
6695    }
6696    return true;
6697  }
6698
6699  protected ClaimResponse.ItemComponent parseClaimResponseItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6700    ClaimResponse.ItemComponent res = new ClaimResponse.ItemComponent();
6701    parseElementAttributes(xpp, res);
6702    next(xpp);
6703    int eventType = nextNoWhitespace(xpp);
6704    while (eventType != XmlPullParser.END_TAG) {
6705    if (!parseClaimResponseItemComponentContent(eventType, xpp, res))
6706        unknownContent(xpp);
6707      eventType = nextNoWhitespace(xpp);
6708    }
6709    next(xpp);
6710    parseElementClose(res);
6711    return res;
6712  }
6713
6714  protected boolean parseClaimResponseItemComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6715    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
6716      res.setItemSequenceElement(parsePositiveInt(xpp));
6717    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("traceNumber")) {
6718      res.getTraceNumber().add(parseIdentifier(xpp));
6719    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
6720      res.getNoteNumber().add(parsePositiveInt(xpp));
6721    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewOutcome")) {
6722      res.setReviewOutcome(parseClaimResponseReviewOutcomeComponent(xpp));
6723    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
6724      res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp));
6725    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
6726      res.getDetail().add(parseClaimResponseItemDetailComponent(xpp));
6727    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6728      return false;
6729    }
6730    return true;
6731  }
6732
6733  protected ClaimResponse.ReviewOutcomeComponent parseClaimResponseReviewOutcomeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6734    ClaimResponse.ReviewOutcomeComponent res = new ClaimResponse.ReviewOutcomeComponent();
6735    parseElementAttributes(xpp, res);
6736    next(xpp);
6737    int eventType = nextNoWhitespace(xpp);
6738    while (eventType != XmlPullParser.END_TAG) {
6739    if (!parseClaimResponseReviewOutcomeComponentContent(eventType, xpp, res))
6740        unknownContent(xpp);
6741      eventType = nextNoWhitespace(xpp);
6742    }
6743    next(xpp);
6744    parseElementClose(res);
6745    return res;
6746  }
6747
6748  protected boolean parseClaimResponseReviewOutcomeComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.ReviewOutcomeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6749    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decision")) {
6750      res.setDecision(parseCodeableConcept(xpp));
6751    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
6752      res.getReason().add(parseCodeableConcept(xpp));
6753    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
6754      res.setPreAuthRefElement(parseString(xpp));
6755    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthPeriod")) {
6756      res.setPreAuthPeriod(parsePeriod(xpp));
6757    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6758      return false;
6759    }
6760    return true;
6761  }
6762
6763  protected ClaimResponse.AdjudicationComponent parseClaimResponseAdjudicationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6764    ClaimResponse.AdjudicationComponent res = new ClaimResponse.AdjudicationComponent();
6765    parseElementAttributes(xpp, res);
6766    next(xpp);
6767    int eventType = nextNoWhitespace(xpp);
6768    while (eventType != XmlPullParser.END_TAG) {
6769    if (!parseClaimResponseAdjudicationComponentContent(eventType, xpp, res))
6770        unknownContent(xpp);
6771      eventType = nextNoWhitespace(xpp);
6772    }
6773    next(xpp);
6774    parseElementClose(res);
6775    return res;
6776  }
6777
6778  protected boolean parseClaimResponseAdjudicationComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.AdjudicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6779    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6780      res.setCategory(parseCodeableConcept(xpp));
6781    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
6782      res.setReason(parseCodeableConcept(xpp));
6783    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
6784      res.setAmount(parseMoney(xpp));
6785    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6786      res.setQuantity(parseQuantity(xpp));
6787    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6788      return false;
6789    }
6790    return true;
6791  }
6792
6793  protected ClaimResponse.ItemDetailComponent parseClaimResponseItemDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6794    ClaimResponse.ItemDetailComponent res = new ClaimResponse.ItemDetailComponent();
6795    parseElementAttributes(xpp, res);
6796    next(xpp);
6797    int eventType = nextNoWhitespace(xpp);
6798    while (eventType != XmlPullParser.END_TAG) {
6799    if (!parseClaimResponseItemDetailComponentContent(eventType, xpp, res))
6800        unknownContent(xpp);
6801      eventType = nextNoWhitespace(xpp);
6802    }
6803    next(xpp);
6804    parseElementClose(res);
6805    return res;
6806  }
6807
6808  protected boolean parseClaimResponseItemDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.ItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6809    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
6810      res.setDetailSequenceElement(parsePositiveInt(xpp));
6811    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("traceNumber")) {
6812      res.getTraceNumber().add(parseIdentifier(xpp));
6813    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
6814      res.getNoteNumber().add(parsePositiveInt(xpp));
6815    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewOutcome")) {
6816      res.setReviewOutcome(parseClaimResponseReviewOutcomeComponent(xpp));
6817    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
6818      res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp));
6819    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
6820      res.getSubDetail().add(parseClaimResponseSubDetailComponent(xpp));
6821    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6822      return false;
6823    }
6824    return true;
6825  }
6826
6827  protected ClaimResponse.SubDetailComponent parseClaimResponseSubDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6828    ClaimResponse.SubDetailComponent res = new ClaimResponse.SubDetailComponent();
6829    parseElementAttributes(xpp, res);
6830    next(xpp);
6831    int eventType = nextNoWhitespace(xpp);
6832    while (eventType != XmlPullParser.END_TAG) {
6833    if (!parseClaimResponseSubDetailComponentContent(eventType, xpp, res))
6834        unknownContent(xpp);
6835      eventType = nextNoWhitespace(xpp);
6836    }
6837    next(xpp);
6838    parseElementClose(res);
6839    return res;
6840  }
6841
6842  protected boolean parseClaimResponseSubDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6843    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
6844      res.setSubDetailSequenceElement(parsePositiveInt(xpp));
6845    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("traceNumber")) {
6846      res.getTraceNumber().add(parseIdentifier(xpp));
6847    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
6848      res.getNoteNumber().add(parsePositiveInt(xpp));
6849    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewOutcome")) {
6850      res.setReviewOutcome(parseClaimResponseReviewOutcomeComponent(xpp));
6851    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
6852      res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp));
6853    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6854      return false;
6855    }
6856    return true;
6857  }
6858
6859  protected ClaimResponse.AddedItemComponent parseClaimResponseAddedItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6860    ClaimResponse.AddedItemComponent res = new ClaimResponse.AddedItemComponent();
6861    parseElementAttributes(xpp, res);
6862    next(xpp);
6863    int eventType = nextNoWhitespace(xpp);
6864    while (eventType != XmlPullParser.END_TAG) {
6865    if (!parseClaimResponseAddedItemComponentContent(eventType, xpp, res))
6866        unknownContent(xpp);
6867      eventType = nextNoWhitespace(xpp);
6868    }
6869    next(xpp);
6870    parseElementClose(res);
6871    return res;
6872  }
6873
6874  protected boolean parseClaimResponseAddedItemComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.AddedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6875    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
6876      res.getItemSequence().add(parsePositiveInt(xpp));
6877    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
6878      res.getDetailSequence().add(parsePositiveInt(xpp));
6879    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subdetailSequence")) {
6880      res.getSubdetailSequence().add(parsePositiveInt(xpp));
6881    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("traceNumber")) {
6882      res.getTraceNumber().add(parseIdentifier(xpp));
6883    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
6884      res.getProvider().add(parseReference(xpp));
6885    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
6886      res.setRevenue(parseCodeableConcept(xpp));
6887    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
6888      res.setProductOrService(parseCodeableConcept(xpp));
6889    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrServiceEnd")) {
6890      res.setProductOrServiceEnd(parseCodeableConcept(xpp));
6891    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
6892      res.getRequest().add(parseReference(xpp));
6893    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
6894      res.getModifier().add(parseCodeableConcept(xpp));
6895    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
6896      res.getProgramCode().add(parseCodeableConcept(xpp));
6897    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
6898      res.setServiced(parseType("serviced", xpp));
6899    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
6900      res.setLocation(parseType("location", xpp));
6901    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6902      res.setQuantity(parseQuantity(xpp));
6903    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
6904      res.setUnitPrice(parseMoney(xpp));
6905    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
6906      res.setFactorElement(parseDecimal(xpp));
6907    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tax")) {
6908      res.setTax(parseMoney(xpp));
6909    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
6910      res.setNet(parseMoney(xpp));
6911    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
6912      res.getBodySite().add(parseClaimResponseBodySiteComponent(xpp));
6913    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
6914      res.getNoteNumber().add(parsePositiveInt(xpp));
6915    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewOutcome")) {
6916      res.setReviewOutcome(parseClaimResponseReviewOutcomeComponent(xpp));
6917    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
6918      res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp));
6919    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
6920      res.getDetail().add(parseClaimResponseAddedItemDetailComponent(xpp));
6921    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6922      return false;
6923    }
6924    return true;
6925  }
6926
6927  protected ClaimResponse.BodySiteComponent parseClaimResponseBodySiteComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6928    ClaimResponse.BodySiteComponent res = new ClaimResponse.BodySiteComponent();
6929    parseElementAttributes(xpp, res);
6930    next(xpp);
6931    int eventType = nextNoWhitespace(xpp);
6932    while (eventType != XmlPullParser.END_TAG) {
6933    if (!parseClaimResponseBodySiteComponentContent(eventType, xpp, res))
6934        unknownContent(xpp);
6935      eventType = nextNoWhitespace(xpp);
6936    }
6937    next(xpp);
6938    parseElementClose(res);
6939    return res;
6940  }
6941
6942  protected boolean parseClaimResponseBodySiteComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.BodySiteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6943    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
6944      res.getSite().add(parseCodeableReference(xpp));
6945    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
6946      res.getSubSite().add(parseCodeableConcept(xpp));
6947    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6948      return false;
6949    }
6950    return true;
6951  }
6952
6953  protected ClaimResponse.AddedItemDetailComponent parseClaimResponseAddedItemDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6954    ClaimResponse.AddedItemDetailComponent res = new ClaimResponse.AddedItemDetailComponent();
6955    parseElementAttributes(xpp, res);
6956    next(xpp);
6957    int eventType = nextNoWhitespace(xpp);
6958    while (eventType != XmlPullParser.END_TAG) {
6959    if (!parseClaimResponseAddedItemDetailComponentContent(eventType, xpp, res))
6960        unknownContent(xpp);
6961      eventType = nextNoWhitespace(xpp);
6962    }
6963    next(xpp);
6964    parseElementClose(res);
6965    return res;
6966  }
6967
6968  protected boolean parseClaimResponseAddedItemDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.AddedItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6969    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("traceNumber")) {
6970      res.getTraceNumber().add(parseIdentifier(xpp));
6971    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
6972      res.setRevenue(parseCodeableConcept(xpp));
6973    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
6974      res.setProductOrService(parseCodeableConcept(xpp));
6975    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrServiceEnd")) {
6976      res.setProductOrServiceEnd(parseCodeableConcept(xpp));
6977    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
6978      res.getModifier().add(parseCodeableConcept(xpp));
6979    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6980      res.setQuantity(parseQuantity(xpp));
6981    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
6982      res.setUnitPrice(parseMoney(xpp));
6983    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
6984      res.setFactorElement(parseDecimal(xpp));
6985    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tax")) {
6986      res.setTax(parseMoney(xpp));
6987    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
6988      res.setNet(parseMoney(xpp));
6989    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
6990      res.getNoteNumber().add(parsePositiveInt(xpp));
6991    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewOutcome")) {
6992      res.setReviewOutcome(parseClaimResponseReviewOutcomeComponent(xpp));
6993    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
6994      res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp));
6995    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
6996      res.getSubDetail().add(parseClaimResponseAddedItemSubDetailComponent(xpp));
6997    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
6998      return false;
6999    }
7000    return true;
7001  }
7002
7003  protected ClaimResponse.AddedItemSubDetailComponent parseClaimResponseAddedItemSubDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7004    ClaimResponse.AddedItemSubDetailComponent res = new ClaimResponse.AddedItemSubDetailComponent();
7005    parseElementAttributes(xpp, res);
7006    next(xpp);
7007    int eventType = nextNoWhitespace(xpp);
7008    while (eventType != XmlPullParser.END_TAG) {
7009    if (!parseClaimResponseAddedItemSubDetailComponentContent(eventType, xpp, res))
7010        unknownContent(xpp);
7011      eventType = nextNoWhitespace(xpp);
7012    }
7013    next(xpp);
7014    parseElementClose(res);
7015    return res;
7016  }
7017
7018  protected boolean parseClaimResponseAddedItemSubDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.AddedItemSubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7019    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("traceNumber")) {
7020      res.getTraceNumber().add(parseIdentifier(xpp));
7021    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
7022      res.setRevenue(parseCodeableConcept(xpp));
7023    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
7024      res.setProductOrService(parseCodeableConcept(xpp));
7025    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrServiceEnd")) {
7026      res.setProductOrServiceEnd(parseCodeableConcept(xpp));
7027    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
7028      res.getModifier().add(parseCodeableConcept(xpp));
7029    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
7030      res.setQuantity(parseQuantity(xpp));
7031    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
7032      res.setUnitPrice(parseMoney(xpp));
7033    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
7034      res.setFactorElement(parseDecimal(xpp));
7035    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tax")) {
7036      res.setTax(parseMoney(xpp));
7037    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
7038      res.setNet(parseMoney(xpp));
7039    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
7040      res.getNoteNumber().add(parsePositiveInt(xpp));
7041    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewOutcome")) {
7042      res.setReviewOutcome(parseClaimResponseReviewOutcomeComponent(xpp));
7043    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
7044      res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp));
7045    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7046      return false;
7047    }
7048    return true;
7049  }
7050
7051  protected ClaimResponse.TotalComponent parseClaimResponseTotalComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7052    ClaimResponse.TotalComponent res = new ClaimResponse.TotalComponent();
7053    parseElementAttributes(xpp, res);
7054    next(xpp);
7055    int eventType = nextNoWhitespace(xpp);
7056    while (eventType != XmlPullParser.END_TAG) {
7057    if (!parseClaimResponseTotalComponentContent(eventType, xpp, res))
7058        unknownContent(xpp);
7059      eventType = nextNoWhitespace(xpp);
7060    }
7061    next(xpp);
7062    parseElementClose(res);
7063    return res;
7064  }
7065
7066  protected boolean parseClaimResponseTotalComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.TotalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7067    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7068      res.setCategory(parseCodeableConcept(xpp));
7069    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
7070      res.setAmount(parseMoney(xpp));
7071    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7072      return false;
7073    }
7074    return true;
7075  }
7076
7077  protected ClaimResponse.PaymentComponent parseClaimResponsePaymentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7078    ClaimResponse.PaymentComponent res = new ClaimResponse.PaymentComponent();
7079    parseElementAttributes(xpp, res);
7080    next(xpp);
7081    int eventType = nextNoWhitespace(xpp);
7082    while (eventType != XmlPullParser.END_TAG) {
7083    if (!parseClaimResponsePaymentComponentContent(eventType, xpp, res))
7084        unknownContent(xpp);
7085      eventType = nextNoWhitespace(xpp);
7086    }
7087    next(xpp);
7088    parseElementClose(res);
7089    return res;
7090  }
7091
7092  protected boolean parseClaimResponsePaymentComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.PaymentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7093    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7094      res.setType(parseCodeableConcept(xpp));
7095    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustment")) {
7096      res.setAdjustment(parseMoney(xpp));
7097    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustmentReason")) {
7098      res.setAdjustmentReason(parseCodeableConcept(xpp));
7099    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7100      res.setDateElement(parseDate(xpp));
7101    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
7102      res.setAmount(parseMoney(xpp));
7103    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7104      res.setIdentifier(parseIdentifier(xpp));
7105    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7106      return false;
7107    }
7108    return true;
7109  }
7110
7111  protected ClaimResponse.NoteComponent parseClaimResponseNoteComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7112    ClaimResponse.NoteComponent res = new ClaimResponse.NoteComponent();
7113    parseElementAttributes(xpp, res);
7114    next(xpp);
7115    int eventType = nextNoWhitespace(xpp);
7116    while (eventType != XmlPullParser.END_TAG) {
7117    if (!parseClaimResponseNoteComponentContent(eventType, xpp, res))
7118        unknownContent(xpp);
7119      eventType = nextNoWhitespace(xpp);
7120    }
7121    next(xpp);
7122    parseElementClose(res);
7123    return res;
7124  }
7125
7126  protected boolean parseClaimResponseNoteComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.NoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7127    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
7128      res.setNumberElement(parsePositiveInt(xpp));
7129    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7130      res.setType(parseCodeableConcept(xpp));
7131    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
7132      res.setTextElement(parseString(xpp));
7133    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
7134      res.setLanguage(parseCodeableConcept(xpp));
7135    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7136      return false;
7137    }
7138    return true;
7139  }
7140
7141  protected ClaimResponse.InsuranceComponent parseClaimResponseInsuranceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7142    ClaimResponse.InsuranceComponent res = new ClaimResponse.InsuranceComponent();
7143    parseElementAttributes(xpp, res);
7144    next(xpp);
7145    int eventType = nextNoWhitespace(xpp);
7146    while (eventType != XmlPullParser.END_TAG) {
7147    if (!parseClaimResponseInsuranceComponentContent(eventType, xpp, res))
7148        unknownContent(xpp);
7149      eventType = nextNoWhitespace(xpp);
7150    }
7151    next(xpp);
7152    parseElementClose(res);
7153    return res;
7154  }
7155
7156  protected boolean parseClaimResponseInsuranceComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7157    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
7158      res.setSequenceElement(parsePositiveInt(xpp));
7159    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
7160      res.setFocalElement(parseBoolean(xpp));
7161    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
7162      res.setCoverage(parseReference(xpp));
7163    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
7164      res.setBusinessArrangementElement(parseString(xpp));
7165    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
7166      res.setClaimResponse(parseReference(xpp));
7167    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7168      return false;
7169    }
7170    return true;
7171  }
7172
7173  protected ClaimResponse.ErrorComponent parseClaimResponseErrorComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7174    ClaimResponse.ErrorComponent res = new ClaimResponse.ErrorComponent();
7175    parseElementAttributes(xpp, res);
7176    next(xpp);
7177    int eventType = nextNoWhitespace(xpp);
7178    while (eventType != XmlPullParser.END_TAG) {
7179    if (!parseClaimResponseErrorComponentContent(eventType, xpp, res))
7180        unknownContent(xpp);
7181      eventType = nextNoWhitespace(xpp);
7182    }
7183    next(xpp);
7184    parseElementClose(res);
7185    return res;
7186  }
7187
7188  protected boolean parseClaimResponseErrorComponentContent(int eventType, XmlPullParser xpp, ClaimResponse.ErrorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7189    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
7190      res.setItemSequenceElement(parsePositiveInt(xpp));
7191    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
7192      res.setDetailSequenceElement(parsePositiveInt(xpp));
7193    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
7194      res.setSubDetailSequenceElement(parsePositiveInt(xpp));
7195    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7196      res.setCode(parseCodeableConcept(xpp));
7197    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
7198      res.getExpression().add(parseString(xpp));
7199    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7200      return false;
7201    }
7202    return true;
7203  }
7204
7205  protected ClinicalImpression parseClinicalImpression(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7206    ClinicalImpression res = new ClinicalImpression();
7207    parseResourceAttributes(xpp, res);
7208    next(xpp);
7209    int eventType = nextNoWhitespace(xpp);
7210    while (eventType != XmlPullParser.END_TAG) {
7211    if (!parseClinicalImpressionContent(eventType, xpp, res))
7212        unknownContent(xpp);
7213      eventType = nextNoWhitespace(xpp);
7214    }
7215    next(xpp);
7216    parseElementClose(res);
7217    return res;
7218  }
7219
7220  protected boolean parseClinicalImpressionContent(int eventType, XmlPullParser xpp, ClinicalImpression res) throws XmlPullParserException, IOException, FHIRFormatError {
7221    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7222      res.getIdentifier().add(parseIdentifier(xpp));
7223    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7224      res.setStatusElement(parseEnumeration(xpp, Enumerations.EventStatus.NULL, new Enumerations.EventStatusEnumFactory()));
7225    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
7226      res.setStatusReason(parseCodeableConcept(xpp));
7227    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7228      res.setDescriptionElement(parseString(xpp));
7229    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7230      res.setSubject(parseReference(xpp));
7231    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
7232      res.setEncounter(parseReference(xpp));
7233    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
7234      res.setEffective(parseType("effective", xpp));
7235    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7236      res.setDateElement(parseDateTime(xpp));
7237    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
7238      res.setPerformer(parseReference(xpp));
7239    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("previous")) {
7240      res.setPrevious(parseReference(xpp));
7241    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("problem")) {
7242      res.getProblem().add(parseReference(xpp));
7243    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("changePattern")) {
7244      res.setChangePattern(parseCodeableConcept(xpp));
7245    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
7246      res.getProtocol().add(parseUri(xpp));
7247    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
7248      res.setSummaryElement(parseString(xpp));
7249    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("finding")) {
7250      res.getFinding().add(parseClinicalImpressionFindingComponent(xpp));
7251    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosisCodeableConcept")) {
7252      res.getPrognosisCodeableConcept().add(parseCodeableConcept(xpp));
7253    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosisReference")) {
7254      res.getPrognosisReference().add(parseReference(xpp));
7255    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
7256      res.getSupportingInfo().add(parseReference(xpp));
7257    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7258      res.getNote().add(parseAnnotation(xpp));
7259    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
7260      return false;
7261    }
7262    return true;
7263  }
7264
7265  protected ClinicalImpression.ClinicalImpressionFindingComponent parseClinicalImpressionFindingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7266    ClinicalImpression.ClinicalImpressionFindingComponent res = new ClinicalImpression.ClinicalImpressionFindingComponent();
7267    parseElementAttributes(xpp, res);
7268    next(xpp);
7269    int eventType = nextNoWhitespace(xpp);
7270    while (eventType != XmlPullParser.END_TAG) {
7271    if (!parseClinicalImpressionFindingComponentContent(eventType, xpp, res))
7272        unknownContent(xpp);
7273      eventType = nextNoWhitespace(xpp);
7274    }
7275    next(xpp);
7276    parseElementClose(res);
7277    return res;
7278  }
7279
7280  protected boolean parseClinicalImpressionFindingComponentContent(int eventType, XmlPullParser xpp, ClinicalImpression.ClinicalImpressionFindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7281    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
7282      res.setItem(parseCodeableReference(xpp));
7283    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
7284      res.setBasisElement(parseString(xpp));
7285    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7286      return false;
7287    }
7288    return true;
7289  }
7290
7291  protected ClinicalUseDefinition parseClinicalUseDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7292    ClinicalUseDefinition res = new ClinicalUseDefinition();
7293    parseResourceAttributes(xpp, res);
7294    next(xpp);
7295    int eventType = nextNoWhitespace(xpp);
7296    while (eventType != XmlPullParser.END_TAG) {
7297    if (!parseClinicalUseDefinitionContent(eventType, xpp, res))
7298        unknownContent(xpp);
7299      eventType = nextNoWhitespace(xpp);
7300    }
7301    next(xpp);
7302    parseElementClose(res);
7303    return res;
7304  }
7305
7306  protected boolean parseClinicalUseDefinitionContent(int eventType, XmlPullParser xpp, ClinicalUseDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
7307    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7308      res.getIdentifier().add(parseIdentifier(xpp));
7309    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7310      res.setTypeElement(parseEnumeration(xpp, ClinicalUseDefinition.ClinicalUseDefinitionType.NULL, new ClinicalUseDefinition.ClinicalUseDefinitionTypeEnumFactory()));
7311    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7312      res.getCategory().add(parseCodeableConcept(xpp));
7313    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7314      res.getSubject().add(parseReference(xpp));
7315    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7316      res.setStatus(parseCodeableConcept(xpp));
7317    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contraindication")) {
7318      res.setContraindication(parseClinicalUseDefinitionContraindicationComponent(xpp));
7319    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
7320      res.setIndication(parseClinicalUseDefinitionIndicationComponent(xpp));
7321    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
7322      res.setInteraction(parseClinicalUseDefinitionInteractionComponent(xpp));
7323    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
7324      res.getPopulation().add(parseReference(xpp));
7325    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
7326      res.getLibrary().add(parseCanonical(xpp));
7327    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("undesirableEffect")) {
7328      res.setUndesirableEffect(parseClinicalUseDefinitionUndesirableEffectComponent(xpp));
7329    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("warning")) {
7330      res.setWarning(parseClinicalUseDefinitionWarningComponent(xpp));
7331    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
7332      return false;
7333    }
7334    return true;
7335  }
7336
7337  protected ClinicalUseDefinition.ClinicalUseDefinitionContraindicationComponent parseClinicalUseDefinitionContraindicationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7338    ClinicalUseDefinition.ClinicalUseDefinitionContraindicationComponent res = new ClinicalUseDefinition.ClinicalUseDefinitionContraindicationComponent();
7339    parseElementAttributes(xpp, res);
7340    next(xpp);
7341    int eventType = nextNoWhitespace(xpp);
7342    while (eventType != XmlPullParser.END_TAG) {
7343    if (!parseClinicalUseDefinitionContraindicationComponentContent(eventType, xpp, res))
7344        unknownContent(xpp);
7345      eventType = nextNoWhitespace(xpp);
7346    }
7347    next(xpp);
7348    parseElementClose(res);
7349    return res;
7350  }
7351
7352  protected boolean parseClinicalUseDefinitionContraindicationComponentContent(int eventType, XmlPullParser xpp, ClinicalUseDefinition.ClinicalUseDefinitionContraindicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7353    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseSymptomProcedure")) {
7354      res.setDiseaseSymptomProcedure(parseCodeableReference(xpp));
7355    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseStatus")) {
7356      res.setDiseaseStatus(parseCodeableReference(xpp));
7357    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comorbidity")) {
7358      res.getComorbidity().add(parseCodeableReference(xpp));
7359    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
7360      res.getIndication().add(parseReference(xpp));
7361    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
7362      res.setApplicability(parseExpression(xpp));
7363    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherTherapy")) {
7364      res.getOtherTherapy().add(parseClinicalUseDefinitionContraindicationOtherTherapyComponent(xpp));
7365    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7366      return false;
7367    }
7368    return true;
7369  }
7370
7371  protected ClinicalUseDefinition.ClinicalUseDefinitionContraindicationOtherTherapyComponent parseClinicalUseDefinitionContraindicationOtherTherapyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7372    ClinicalUseDefinition.ClinicalUseDefinitionContraindicationOtherTherapyComponent res = new ClinicalUseDefinition.ClinicalUseDefinitionContraindicationOtherTherapyComponent();
7373    parseElementAttributes(xpp, res);
7374    next(xpp);
7375    int eventType = nextNoWhitespace(xpp);
7376    while (eventType != XmlPullParser.END_TAG) {
7377    if (!parseClinicalUseDefinitionContraindicationOtherTherapyComponentContent(eventType, xpp, res))
7378        unknownContent(xpp);
7379      eventType = nextNoWhitespace(xpp);
7380    }
7381    next(xpp);
7382    parseElementClose(res);
7383    return res;
7384  }
7385
7386  protected boolean parseClinicalUseDefinitionContraindicationOtherTherapyComponentContent(int eventType, XmlPullParser xpp, ClinicalUseDefinition.ClinicalUseDefinitionContraindicationOtherTherapyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7387    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationshipType")) {
7388      res.setRelationshipType(parseCodeableConcept(xpp));
7389    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("treatment")) {
7390      res.setTreatment(parseCodeableReference(xpp));
7391    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7392      return false;
7393    }
7394    return true;
7395  }
7396
7397  protected ClinicalUseDefinition.ClinicalUseDefinitionIndicationComponent parseClinicalUseDefinitionIndicationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7398    ClinicalUseDefinition.ClinicalUseDefinitionIndicationComponent res = new ClinicalUseDefinition.ClinicalUseDefinitionIndicationComponent();
7399    parseElementAttributes(xpp, res);
7400    next(xpp);
7401    int eventType = nextNoWhitespace(xpp);
7402    while (eventType != XmlPullParser.END_TAG) {
7403    if (!parseClinicalUseDefinitionIndicationComponentContent(eventType, xpp, res))
7404        unknownContent(xpp);
7405      eventType = nextNoWhitespace(xpp);
7406    }
7407    next(xpp);
7408    parseElementClose(res);
7409    return res;
7410  }
7411
7412  protected boolean parseClinicalUseDefinitionIndicationComponentContent(int eventType, XmlPullParser xpp, ClinicalUseDefinition.ClinicalUseDefinitionIndicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7413    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseSymptomProcedure")) {
7414      res.setDiseaseSymptomProcedure(parseCodeableReference(xpp));
7415    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseStatus")) {
7416      res.setDiseaseStatus(parseCodeableReference(xpp));
7417    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comorbidity")) {
7418      res.getComorbidity().add(parseCodeableReference(xpp));
7419    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedEffect")) {
7420      res.setIntendedEffect(parseCodeableReference(xpp));
7421    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "duration")) {
7422      res.setDuration(parseType("duration", xpp));
7423    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("undesirableEffect")) {
7424      res.getUndesirableEffect().add(parseReference(xpp));
7425    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
7426      res.setApplicability(parseExpression(xpp));
7427    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherTherapy")) {
7428      res.getOtherTherapy().add(parseClinicalUseDefinitionContraindicationOtherTherapyComponent(xpp));
7429    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7430      return false;
7431    }
7432    return true;
7433  }
7434
7435  protected ClinicalUseDefinition.ClinicalUseDefinitionInteractionComponent parseClinicalUseDefinitionInteractionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7436    ClinicalUseDefinition.ClinicalUseDefinitionInteractionComponent res = new ClinicalUseDefinition.ClinicalUseDefinitionInteractionComponent();
7437    parseElementAttributes(xpp, res);
7438    next(xpp);
7439    int eventType = nextNoWhitespace(xpp);
7440    while (eventType != XmlPullParser.END_TAG) {
7441    if (!parseClinicalUseDefinitionInteractionComponentContent(eventType, xpp, res))
7442        unknownContent(xpp);
7443      eventType = nextNoWhitespace(xpp);
7444    }
7445    next(xpp);
7446    parseElementClose(res);
7447    return res;
7448  }
7449
7450  protected boolean parseClinicalUseDefinitionInteractionComponentContent(int eventType, XmlPullParser xpp, ClinicalUseDefinition.ClinicalUseDefinitionInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7451    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interactant")) {
7452      res.getInteractant().add(parseClinicalUseDefinitionInteractionInteractantComponent(xpp));
7453    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7454      res.setType(parseCodeableConcept(xpp));
7455    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effect")) {
7456      res.setEffect(parseCodeableReference(xpp));
7457    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incidence")) {
7458      res.setIncidence(parseCodeableConcept(xpp));
7459    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("management")) {
7460      res.getManagement().add(parseCodeableConcept(xpp));
7461    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7462      return false;
7463    }
7464    return true;
7465  }
7466
7467  protected ClinicalUseDefinition.ClinicalUseDefinitionInteractionInteractantComponent parseClinicalUseDefinitionInteractionInteractantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7468    ClinicalUseDefinition.ClinicalUseDefinitionInteractionInteractantComponent res = new ClinicalUseDefinition.ClinicalUseDefinitionInteractionInteractantComponent();
7469    parseElementAttributes(xpp, res);
7470    next(xpp);
7471    int eventType = nextNoWhitespace(xpp);
7472    while (eventType != XmlPullParser.END_TAG) {
7473    if (!parseClinicalUseDefinitionInteractionInteractantComponentContent(eventType, xpp, res))
7474        unknownContent(xpp);
7475      eventType = nextNoWhitespace(xpp);
7476    }
7477    next(xpp);
7478    parseElementClose(res);
7479    return res;
7480  }
7481
7482  protected boolean parseClinicalUseDefinitionInteractionInteractantComponentContent(int eventType, XmlPullParser xpp, ClinicalUseDefinition.ClinicalUseDefinitionInteractionInteractantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7483    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
7484      res.setItem(parseType("item", xpp));
7485    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7486      return false;
7487    }
7488    return true;
7489  }
7490
7491  protected ClinicalUseDefinition.ClinicalUseDefinitionUndesirableEffectComponent parseClinicalUseDefinitionUndesirableEffectComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7492    ClinicalUseDefinition.ClinicalUseDefinitionUndesirableEffectComponent res = new ClinicalUseDefinition.ClinicalUseDefinitionUndesirableEffectComponent();
7493    parseElementAttributes(xpp, res);
7494    next(xpp);
7495    int eventType = nextNoWhitespace(xpp);
7496    while (eventType != XmlPullParser.END_TAG) {
7497    if (!parseClinicalUseDefinitionUndesirableEffectComponentContent(eventType, xpp, res))
7498        unknownContent(xpp);
7499      eventType = nextNoWhitespace(xpp);
7500    }
7501    next(xpp);
7502    parseElementClose(res);
7503    return res;
7504  }
7505
7506  protected boolean parseClinicalUseDefinitionUndesirableEffectComponentContent(int eventType, XmlPullParser xpp, ClinicalUseDefinition.ClinicalUseDefinitionUndesirableEffectComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7507    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("symptomConditionEffect")) {
7508      res.setSymptomConditionEffect(parseCodeableReference(xpp));
7509    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
7510      res.setClassification(parseCodeableConcept(xpp));
7511    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyOfOccurrence")) {
7512      res.setFrequencyOfOccurrence(parseCodeableConcept(xpp));
7513    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7514      return false;
7515    }
7516    return true;
7517  }
7518
7519  protected ClinicalUseDefinition.ClinicalUseDefinitionWarningComponent parseClinicalUseDefinitionWarningComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7520    ClinicalUseDefinition.ClinicalUseDefinitionWarningComponent res = new ClinicalUseDefinition.ClinicalUseDefinitionWarningComponent();
7521    parseElementAttributes(xpp, res);
7522    next(xpp);
7523    int eventType = nextNoWhitespace(xpp);
7524    while (eventType != XmlPullParser.END_TAG) {
7525    if (!parseClinicalUseDefinitionWarningComponentContent(eventType, xpp, res))
7526        unknownContent(xpp);
7527      eventType = nextNoWhitespace(xpp);
7528    }
7529    next(xpp);
7530    parseElementClose(res);
7531    return res;
7532  }
7533
7534  protected boolean parseClinicalUseDefinitionWarningComponentContent(int eventType, XmlPullParser xpp, ClinicalUseDefinition.ClinicalUseDefinitionWarningComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7535    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7536      res.setDescriptionElement(parseMarkdown(xpp));
7537    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7538      res.setCode(parseCodeableConcept(xpp));
7539    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7540      return false;
7541    }
7542    return true;
7543  }
7544
7545  protected CodeSystem parseCodeSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7546    CodeSystem res = new CodeSystem();
7547    parseResourceAttributes(xpp, res);
7548    next(xpp);
7549    int eventType = nextNoWhitespace(xpp);
7550    while (eventType != XmlPullParser.END_TAG) {
7551    if (!parseCodeSystemContent(eventType, xpp, res))
7552        unknownContent(xpp);
7553      eventType = nextNoWhitespace(xpp);
7554    }
7555    next(xpp);
7556    parseElementClose(res);
7557    return res;
7558  }
7559
7560  protected boolean parseCodeSystemContent(int eventType, XmlPullParser xpp, CodeSystem res) throws XmlPullParserException, IOException, FHIRFormatError {
7561    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7562      res.setUrlElement(parseUri(xpp));
7563    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7564      res.getIdentifier().add(parseIdentifier(xpp));
7565    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7566      res.setVersionElement(parseString(xpp));
7567    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
7568      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
7569    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7570      res.setNameElement(parseString(xpp));
7571    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
7572      res.setTitleElement(parseString(xpp));
7573    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7574      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
7575    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
7576      res.setExperimentalElement(parseBoolean(xpp));
7577    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7578      res.setDateElement(parseDateTime(xpp));
7579    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
7580      res.setPublisherElement(parseString(xpp));
7581    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7582      res.getContact().add(parseContactDetail(xpp));
7583    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7584      res.setDescriptionElement(parseMarkdown(xpp));
7585    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
7586      res.getUseContext().add(parseUsageContext(xpp));
7587    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
7588      res.getJurisdiction().add(parseCodeableConcept(xpp));
7589    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
7590      res.setPurposeElement(parseMarkdown(xpp));
7591    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
7592      res.setCopyrightElement(parseMarkdown(xpp));
7593    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
7594      res.setCopyrightLabelElement(parseString(xpp));
7595    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
7596      res.setApprovalDateElement(parseDate(xpp));
7597    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
7598      res.setLastReviewDateElement(parseDate(xpp));
7599    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
7600      res.setEffectivePeriod(parsePeriod(xpp));
7601    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
7602      res.getTopic().add(parseCodeableConcept(xpp));
7603    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
7604      res.getAuthor().add(parseContactDetail(xpp));
7605    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
7606      res.getEditor().add(parseContactDetail(xpp));
7607    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
7608      res.getReviewer().add(parseContactDetail(xpp));
7609    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
7610      res.getEndorser().add(parseContactDetail(xpp));
7611    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
7612      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
7613    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caseSensitive")) {
7614      res.setCaseSensitiveElement(parseBoolean(xpp));
7615    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
7616      res.setValueSetElement(parseCanonical(xpp));
7617    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hierarchyMeaning")) {
7618      res.setHierarchyMeaningElement(parseEnumeration(xpp, CodeSystem.CodeSystemHierarchyMeaning.NULL, new CodeSystem.CodeSystemHierarchyMeaningEnumFactory()));
7619    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositional")) {
7620      res.setCompositionalElement(parseBoolean(xpp));
7621    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionNeeded")) {
7622      res.setVersionNeededElement(parseBoolean(xpp));
7623    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
7624      res.setContentElement(parseEnumeration(xpp, Enumerations.CodeSystemContentMode.NULL, new Enumerations.CodeSystemContentModeEnumFactory()));
7625    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplements")) {
7626      res.setSupplementsElement(parseCanonical(xpp));
7627    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
7628      res.setCountElement(parseUnsignedInt(xpp));
7629    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
7630      res.getFilter().add(parseCodeSystemFilterComponent(xpp));
7631    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
7632      res.getProperty().add(parseCodeSystemPropertyComponent(xpp));
7633    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
7634      res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp));
7635    } else if (!parseMetadataResourceContent(eventType, xpp, res)){ 
7636      return false;
7637    }
7638    return true;
7639  }
7640
7641  protected CodeSystem.CodeSystemFilterComponent parseCodeSystemFilterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7642    CodeSystem.CodeSystemFilterComponent res = new CodeSystem.CodeSystemFilterComponent();
7643    parseElementAttributes(xpp, res);
7644    next(xpp);
7645    int eventType = nextNoWhitespace(xpp);
7646    while (eventType != XmlPullParser.END_TAG) {
7647    if (!parseCodeSystemFilterComponentContent(eventType, xpp, res))
7648        unknownContent(xpp);
7649      eventType = nextNoWhitespace(xpp);
7650    }
7651    next(xpp);
7652    parseElementClose(res);
7653    return res;
7654  }
7655
7656  protected boolean parseCodeSystemFilterComponentContent(int eventType, XmlPullParser xpp, CodeSystem.CodeSystemFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7657    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7658      res.setCodeElement(parseCode(xpp));
7659    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7660      res.setDescriptionElement(parseString(xpp));
7661    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
7662      res.getOperator().add(parseEnumeration(xpp, Enumerations.FilterOperator.NULL, new Enumerations.FilterOperatorEnumFactory()));
7663    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
7664      res.setValueElement(parseString(xpp));
7665    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7666      return false;
7667    }
7668    return true;
7669  }
7670
7671  protected CodeSystem.PropertyComponent parseCodeSystemPropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7672    CodeSystem.PropertyComponent res = new CodeSystem.PropertyComponent();
7673    parseElementAttributes(xpp, res);
7674    next(xpp);
7675    int eventType = nextNoWhitespace(xpp);
7676    while (eventType != XmlPullParser.END_TAG) {
7677    if (!parseCodeSystemPropertyComponentContent(eventType, xpp, res))
7678        unknownContent(xpp);
7679      eventType = nextNoWhitespace(xpp);
7680    }
7681    next(xpp);
7682    parseElementClose(res);
7683    return res;
7684  }
7685
7686  protected boolean parseCodeSystemPropertyComponentContent(int eventType, XmlPullParser xpp, CodeSystem.PropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7687    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7688      res.setCodeElement(parseCode(xpp));
7689    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
7690      res.setUriElement(parseUri(xpp));
7691    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7692      res.setDescriptionElement(parseString(xpp));
7693    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7694      res.setTypeElement(parseEnumeration(xpp, CodeSystem.PropertyType.NULL, new CodeSystem.PropertyTypeEnumFactory()));
7695    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7696      return false;
7697    }
7698    return true;
7699  }
7700
7701  protected CodeSystem.ConceptDefinitionComponent parseCodeSystemConceptDefinitionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7702    CodeSystem.ConceptDefinitionComponent res = new CodeSystem.ConceptDefinitionComponent();
7703    parseElementAttributes(xpp, res);
7704    next(xpp);
7705    int eventType = nextNoWhitespace(xpp);
7706    while (eventType != XmlPullParser.END_TAG) {
7707    if (!parseCodeSystemConceptDefinitionComponentContent(eventType, xpp, res))
7708        unknownContent(xpp);
7709      eventType = nextNoWhitespace(xpp);
7710    }
7711    next(xpp);
7712    parseElementClose(res);
7713    return res;
7714  }
7715
7716  protected boolean parseCodeSystemConceptDefinitionComponentContent(int eventType, XmlPullParser xpp, CodeSystem.ConceptDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7717    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7718      res.setCodeElement(parseCode(xpp));
7719    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
7720      res.setDisplayElement(parseString(xpp));
7721    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
7722      res.setDefinitionElement(parseString(xpp));
7723    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
7724      res.getDesignation().add(parseCodeSystemConceptDefinitionDesignationComponent(xpp));
7725    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
7726      res.getProperty().add(parseCodeSystemConceptPropertyComponent(xpp));
7727    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
7728      res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp));
7729    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7730      return false;
7731    }
7732    return true;
7733  }
7734
7735  protected CodeSystem.ConceptDefinitionDesignationComponent parseCodeSystemConceptDefinitionDesignationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7736    CodeSystem.ConceptDefinitionDesignationComponent res = new CodeSystem.ConceptDefinitionDesignationComponent();
7737    parseElementAttributes(xpp, res);
7738    next(xpp);
7739    int eventType = nextNoWhitespace(xpp);
7740    while (eventType != XmlPullParser.END_TAG) {
7741    if (!parseCodeSystemConceptDefinitionDesignationComponentContent(eventType, xpp, res))
7742        unknownContent(xpp);
7743      eventType = nextNoWhitespace(xpp);
7744    }
7745    next(xpp);
7746    parseElementClose(res);
7747    return res;
7748  }
7749
7750  protected boolean parseCodeSystemConceptDefinitionDesignationComponentContent(int eventType, XmlPullParser xpp, CodeSystem.ConceptDefinitionDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7751    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
7752      res.setLanguageElement(parseCode(xpp));
7753    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
7754      res.setUse(parseCoding(xpp));
7755    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalUse")) {
7756      res.getAdditionalUse().add(parseCoding(xpp));
7757    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
7758      res.setValueElement(parseString(xpp));
7759    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7760      return false;
7761    }
7762    return true;
7763  }
7764
7765  protected CodeSystem.ConceptPropertyComponent parseCodeSystemConceptPropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7766    CodeSystem.ConceptPropertyComponent res = new CodeSystem.ConceptPropertyComponent();
7767    parseElementAttributes(xpp, res);
7768    next(xpp);
7769    int eventType = nextNoWhitespace(xpp);
7770    while (eventType != XmlPullParser.END_TAG) {
7771    if (!parseCodeSystemConceptPropertyComponentContent(eventType, xpp, res))
7772        unknownContent(xpp);
7773      eventType = nextNoWhitespace(xpp);
7774    }
7775    next(xpp);
7776    parseElementClose(res);
7777    return res;
7778  }
7779
7780  protected boolean parseCodeSystemConceptPropertyComponentContent(int eventType, XmlPullParser xpp, CodeSystem.ConceptPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7781    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7782      res.setCodeElement(parseCode(xpp));
7783    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
7784      res.setValue(parseType("value", xpp));
7785    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7786      return false;
7787    }
7788    return true;
7789  }
7790
7791  protected Communication parseCommunication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7792    Communication res = new Communication();
7793    parseResourceAttributes(xpp, res);
7794    next(xpp);
7795    int eventType = nextNoWhitespace(xpp);
7796    while (eventType != XmlPullParser.END_TAG) {
7797    if (!parseCommunicationContent(eventType, xpp, res))
7798        unknownContent(xpp);
7799      eventType = nextNoWhitespace(xpp);
7800    }
7801    next(xpp);
7802    parseElementClose(res);
7803    return res;
7804  }
7805
7806  protected boolean parseCommunicationContent(int eventType, XmlPullParser xpp, Communication res) throws XmlPullParserException, IOException, FHIRFormatError {
7807    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7808      res.getIdentifier().add(parseIdentifier(xpp));
7809    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
7810      res.getInstantiatesCanonical().add(parseCanonical(xpp));
7811    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
7812      res.getInstantiatesUri().add(parseUri(xpp));
7813    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
7814      res.getBasedOn().add(parseReference(xpp));
7815    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
7816      res.getPartOf().add(parseReference(xpp));
7817    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inResponseTo")) {
7818      res.getInResponseTo().add(parseReference(xpp));
7819    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7820      res.setStatusElement(parseEnumeration(xpp, Enumerations.EventStatus.NULL, new Enumerations.EventStatusEnumFactory()));
7821    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
7822      res.setStatusReason(parseCodeableConcept(xpp));
7823    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7824      res.getCategory().add(parseCodeableConcept(xpp));
7825    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
7826      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
7827    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
7828      res.getMedium().add(parseCodeableConcept(xpp));
7829    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7830      res.setSubject(parseReference(xpp));
7831    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
7832      res.setTopic(parseCodeableConcept(xpp));
7833    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("about")) {
7834      res.getAbout().add(parseReference(xpp));
7835    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
7836      res.setEncounter(parseReference(xpp));
7837    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sent")) {
7838      res.setSentElement(parseDateTime(xpp));
7839    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("received")) {
7840      res.setReceivedElement(parseDateTime(xpp));
7841    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
7842      res.getRecipient().add(parseReference(xpp));
7843    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
7844      res.setSender(parseReference(xpp));
7845    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
7846      res.getReason().add(parseCodeableReference(xpp));
7847    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
7848      res.getPayload().add(parseCommunicationPayloadComponent(xpp));
7849    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7850      res.getNote().add(parseAnnotation(xpp));
7851    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
7852      return false;
7853    }
7854    return true;
7855  }
7856
7857  protected Communication.CommunicationPayloadComponent parseCommunicationPayloadComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7858    Communication.CommunicationPayloadComponent res = new Communication.CommunicationPayloadComponent();
7859    parseElementAttributes(xpp, res);
7860    next(xpp);
7861    int eventType = nextNoWhitespace(xpp);
7862    while (eventType != XmlPullParser.END_TAG) {
7863    if (!parseCommunicationPayloadComponentContent(eventType, xpp, res))
7864        unknownContent(xpp);
7865      eventType = nextNoWhitespace(xpp);
7866    }
7867    next(xpp);
7868    parseElementClose(res);
7869    return res;
7870  }
7871
7872  protected boolean parseCommunicationPayloadComponentContent(int eventType, XmlPullParser xpp, Communication.CommunicationPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7873    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
7874      res.setContent(parseType("content", xpp));
7875    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7876      return false;
7877    }
7878    return true;
7879  }
7880
7881  protected CommunicationRequest parseCommunicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7882    CommunicationRequest res = new CommunicationRequest();
7883    parseResourceAttributes(xpp, res);
7884    next(xpp);
7885    int eventType = nextNoWhitespace(xpp);
7886    while (eventType != XmlPullParser.END_TAG) {
7887    if (!parseCommunicationRequestContent(eventType, xpp, res))
7888        unknownContent(xpp);
7889      eventType = nextNoWhitespace(xpp);
7890    }
7891    next(xpp);
7892    parseElementClose(res);
7893    return res;
7894  }
7895
7896  protected boolean parseCommunicationRequestContent(int eventType, XmlPullParser xpp, CommunicationRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
7897    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7898      res.getIdentifier().add(parseIdentifier(xpp));
7899    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
7900      res.getBasedOn().add(parseReference(xpp));
7901    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
7902      res.getReplaces().add(parseReference(xpp));
7903    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
7904      res.setGroupIdentifier(parseIdentifier(xpp));
7905    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7906      res.setStatusElement(parseEnumeration(xpp, Enumerations.RequestStatus.NULL, new Enumerations.RequestStatusEnumFactory()));
7907    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
7908      res.setStatusReason(parseCodeableConcept(xpp));
7909    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
7910      res.setIntentElement(parseEnumeration(xpp, Enumerations.RequestIntent.NULL, new Enumerations.RequestIntentEnumFactory()));
7911    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7912      res.getCategory().add(parseCodeableConcept(xpp));
7913    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
7914      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
7915    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
7916      res.setDoNotPerformElement(parseBoolean(xpp));
7917    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
7918      res.getMedium().add(parseCodeableConcept(xpp));
7919    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
7920      res.setSubject(parseReference(xpp));
7921    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("about")) {
7922      res.getAbout().add(parseReference(xpp));
7923    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
7924      res.setEncounter(parseReference(xpp));
7925    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
7926      res.getPayload().add(parseCommunicationRequestPayloadComponent(xpp));
7927    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
7928      res.setOccurrence(parseType("occurrence", xpp));
7929    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
7930      res.setAuthoredOnElement(parseDateTime(xpp));
7931    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
7932      res.setRequester(parseReference(xpp));
7933    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
7934      res.getRecipient().add(parseReference(xpp));
7935    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationProvider")) {
7936      res.getInformationProvider().add(parseReference(xpp));
7937    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
7938      res.getReason().add(parseCodeableReference(xpp));
7939    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7940      res.getNote().add(parseAnnotation(xpp));
7941    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
7942      return false;
7943    }
7944    return true;
7945  }
7946
7947  protected CommunicationRequest.CommunicationRequestPayloadComponent parseCommunicationRequestPayloadComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7948    CommunicationRequest.CommunicationRequestPayloadComponent res = new CommunicationRequest.CommunicationRequestPayloadComponent();
7949    parseElementAttributes(xpp, res);
7950    next(xpp);
7951    int eventType = nextNoWhitespace(xpp);
7952    while (eventType != XmlPullParser.END_TAG) {
7953    if (!parseCommunicationRequestPayloadComponentContent(eventType, xpp, res))
7954        unknownContent(xpp);
7955      eventType = nextNoWhitespace(xpp);
7956    }
7957    next(xpp);
7958    parseElementClose(res);
7959    return res;
7960  }
7961
7962  protected boolean parseCommunicationRequestPayloadComponentContent(int eventType, XmlPullParser xpp, CommunicationRequest.CommunicationRequestPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7963    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
7964      res.setContent(parseType("content", xpp));
7965    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
7966      return false;
7967    }
7968    return true;
7969  }
7970
7971  protected CompartmentDefinition parseCompartmentDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7972    CompartmentDefinition res = new CompartmentDefinition();
7973    parseResourceAttributes(xpp, res);
7974    next(xpp);
7975    int eventType = nextNoWhitespace(xpp);
7976    while (eventType != XmlPullParser.END_TAG) {
7977    if (!parseCompartmentDefinitionContent(eventType, xpp, res))
7978        unknownContent(xpp);
7979      eventType = nextNoWhitespace(xpp);
7980    }
7981    next(xpp);
7982    parseElementClose(res);
7983    return res;
7984  }
7985
7986  protected boolean parseCompartmentDefinitionContent(int eventType, XmlPullParser xpp, CompartmentDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
7987    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7988      res.setUrlElement(parseUri(xpp));
7989    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7990      res.setVersionElement(parseString(xpp));
7991    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
7992      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
7993    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7994      res.setNameElement(parseString(xpp));
7995    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
7996      res.setTitleElement(parseString(xpp));
7997    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7998      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
7999    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
8000      res.setExperimentalElement(parseBoolean(xpp));
8001    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8002      res.setDateElement(parseDateTime(xpp));
8003    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
8004      res.setPublisherElement(parseString(xpp));
8005    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
8006      res.getContact().add(parseContactDetail(xpp));
8007    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8008      res.setDescriptionElement(parseMarkdown(xpp));
8009    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
8010      res.getUseContext().add(parseUsageContext(xpp));
8011    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
8012      res.setPurposeElement(parseMarkdown(xpp));
8013    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8014      res.setCodeElement(parseEnumeration(xpp, Enumerations.CompartmentType.NULL, new Enumerations.CompartmentTypeEnumFactory()));
8015    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
8016      res.setSearchElement(parseBoolean(xpp));
8017    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
8018      res.getResource().add(parseCompartmentDefinitionResourceComponent(xpp));
8019    } else if (!parseCanonicalResourceContent(eventType, xpp, res)){ 
8020      return false;
8021    }
8022    return true;
8023  }
8024
8025  protected CompartmentDefinition.CompartmentDefinitionResourceComponent parseCompartmentDefinitionResourceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8026    CompartmentDefinition.CompartmentDefinitionResourceComponent res = new CompartmentDefinition.CompartmentDefinitionResourceComponent();
8027    parseElementAttributes(xpp, res);
8028    next(xpp);
8029    int eventType = nextNoWhitespace(xpp);
8030    while (eventType != XmlPullParser.END_TAG) {
8031    if (!parseCompartmentDefinitionResourceComponentContent(eventType, xpp, res))
8032        unknownContent(xpp);
8033      eventType = nextNoWhitespace(xpp);
8034    }
8035    next(xpp);
8036    parseElementClose(res);
8037    return res;
8038  }
8039
8040  protected boolean parseCompartmentDefinitionResourceComponentContent(int eventType, XmlPullParser xpp, CompartmentDefinition.CompartmentDefinitionResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8041    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8042      res.setCodeElement(parseCode(xpp));
8043    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
8044      res.getParam().add(parseString(xpp));
8045    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
8046      res.setDocumentationElement(parseString(xpp));
8047    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("startParam")) {
8048      res.setStartParamElement(parseUri(xpp));
8049    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endParam")) {
8050      res.setEndParamElement(parseUri(xpp));
8051    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8052      return false;
8053    }
8054    return true;
8055  }
8056
8057  protected Composition parseComposition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8058    Composition res = new Composition();
8059    parseResourceAttributes(xpp, res);
8060    next(xpp);
8061    int eventType = nextNoWhitespace(xpp);
8062    while (eventType != XmlPullParser.END_TAG) {
8063    if (!parseCompositionContent(eventType, xpp, res))
8064        unknownContent(xpp);
8065      eventType = nextNoWhitespace(xpp);
8066    }
8067    next(xpp);
8068    parseElementClose(res);
8069    return res;
8070  }
8071
8072  protected boolean parseCompositionContent(int eventType, XmlPullParser xpp, Composition res) throws XmlPullParserException, IOException, FHIRFormatError {
8073    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
8074      res.setUrlElement(parseUri(xpp));
8075    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8076      res.getIdentifier().add(parseIdentifier(xpp));
8077    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8078      res.setVersionElement(parseString(xpp));
8079    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8080      res.setStatusElement(parseEnumeration(xpp, Enumerations.CompositionStatus.NULL, new Enumerations.CompositionStatusEnumFactory()));
8081    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8082      res.setType(parseCodeableConcept(xpp));
8083    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8084      res.getCategory().add(parseCodeableConcept(xpp));
8085    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8086      res.getSubject().add(parseReference(xpp));
8087    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8088      res.setEncounter(parseReference(xpp));
8089    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8090      res.setDateElement(parseDateTime(xpp));
8091    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
8092      res.getUseContext().add(parseUsageContext(xpp));
8093    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
8094      res.getAuthor().add(parseReference(xpp));
8095    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8096      res.setNameElement(parseString(xpp));
8097    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
8098      res.setTitleElement(parseString(xpp));
8099    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8100      res.getNote().add(parseAnnotation(xpp));
8101    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attester")) {
8102      res.getAttester().add(parseCompositionAttesterComponent(xpp));
8103    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
8104      res.setCustodian(parseReference(xpp));
8105    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
8106      res.getRelatesTo().add(parseRelatedArtifact(xpp));
8107    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
8108      res.getEvent().add(parseCompositionEventComponent(xpp));
8109    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
8110      res.getSection().add(parseCompositionSectionComponent(xpp));
8111    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
8112      return false;
8113    }
8114    return true;
8115  }
8116
8117  protected Composition.CompositionAttesterComponent parseCompositionAttesterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8118    Composition.CompositionAttesterComponent res = new Composition.CompositionAttesterComponent();
8119    parseElementAttributes(xpp, res);
8120    next(xpp);
8121    int eventType = nextNoWhitespace(xpp);
8122    while (eventType != XmlPullParser.END_TAG) {
8123    if (!parseCompositionAttesterComponentContent(eventType, xpp, res))
8124        unknownContent(xpp);
8125      eventType = nextNoWhitespace(xpp);
8126    }
8127    next(xpp);
8128    parseElementClose(res);
8129    return res;
8130  }
8131
8132  protected boolean parseCompositionAttesterComponentContent(int eventType, XmlPullParser xpp, Composition.CompositionAttesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8133    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
8134      res.setMode(parseCodeableConcept(xpp));
8135    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
8136      res.setTimeElement(parseDateTime(xpp));
8137    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
8138      res.setParty(parseReference(xpp));
8139    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8140      return false;
8141    }
8142    return true;
8143  }
8144
8145  protected Composition.CompositionEventComponent parseCompositionEventComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8146    Composition.CompositionEventComponent res = new Composition.CompositionEventComponent();
8147    parseElementAttributes(xpp, res);
8148    next(xpp);
8149    int eventType = nextNoWhitespace(xpp);
8150    while (eventType != XmlPullParser.END_TAG) {
8151    if (!parseCompositionEventComponentContent(eventType, xpp, res))
8152        unknownContent(xpp);
8153      eventType = nextNoWhitespace(xpp);
8154    }
8155    next(xpp);
8156    parseElementClose(res);
8157    return res;
8158  }
8159
8160  protected boolean parseCompositionEventComponentContent(int eventType, XmlPullParser xpp, Composition.CompositionEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8161    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8162      res.setPeriod(parsePeriod(xpp));
8163    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
8164      res.getDetail().add(parseCodeableReference(xpp));
8165    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8166      return false;
8167    }
8168    return true;
8169  }
8170
8171  protected Composition.SectionComponent parseCompositionSectionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8172    Composition.SectionComponent res = new Composition.SectionComponent();
8173    parseElementAttributes(xpp, res);
8174    next(xpp);
8175    int eventType = nextNoWhitespace(xpp);
8176    while (eventType != XmlPullParser.END_TAG) {
8177    if (!parseCompositionSectionComponentContent(eventType, xpp, res))
8178        unknownContent(xpp);
8179      eventType = nextNoWhitespace(xpp);
8180    }
8181    next(xpp);
8182    parseElementClose(res);
8183    return res;
8184  }
8185
8186  protected boolean parseCompositionSectionComponentContent(int eventType, XmlPullParser xpp, Composition.SectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8187    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
8188      res.setTitleElement(parseString(xpp));
8189    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8190      res.setCode(parseCodeableConcept(xpp));
8191    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
8192      res.getAuthor().add(parseReference(xpp));
8193    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
8194      res.setFocus(parseReference(xpp));
8195    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
8196      res.setText(parseNarrative(xpp));
8197    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
8198      res.setOrderedBy(parseCodeableConcept(xpp));
8199    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
8200      res.getEntry().add(parseReference(xpp));
8201    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
8202      res.setEmptyReason(parseCodeableConcept(xpp));
8203    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
8204      res.getSection().add(parseCompositionSectionComponent(xpp));
8205    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8206      return false;
8207    }
8208    return true;
8209  }
8210
8211  protected ConceptMap parseConceptMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8212    ConceptMap res = new ConceptMap();
8213    parseResourceAttributes(xpp, res);
8214    next(xpp);
8215    int eventType = nextNoWhitespace(xpp);
8216    while (eventType != XmlPullParser.END_TAG) {
8217    if (!parseConceptMapContent(eventType, xpp, res))
8218        unknownContent(xpp);
8219      eventType = nextNoWhitespace(xpp);
8220    }
8221    next(xpp);
8222    parseElementClose(res);
8223    return res;
8224  }
8225
8226  protected boolean parseConceptMapContent(int eventType, XmlPullParser xpp, ConceptMap res) throws XmlPullParserException, IOException, FHIRFormatError {
8227    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
8228      res.setUrlElement(parseUri(xpp));
8229    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8230      res.getIdentifier().add(parseIdentifier(xpp));
8231    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8232      res.setVersionElement(parseString(xpp));
8233    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
8234      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
8235    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8236      res.setNameElement(parseString(xpp));
8237    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
8238      res.setTitleElement(parseString(xpp));
8239    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8240      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
8241    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
8242      res.setExperimentalElement(parseBoolean(xpp));
8243    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8244      res.setDateElement(parseDateTime(xpp));
8245    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
8246      res.setPublisherElement(parseString(xpp));
8247    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
8248      res.getContact().add(parseContactDetail(xpp));
8249    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8250      res.setDescriptionElement(parseMarkdown(xpp));
8251    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
8252      res.getUseContext().add(parseUsageContext(xpp));
8253    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
8254      res.getJurisdiction().add(parseCodeableConcept(xpp));
8255    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
8256      res.setPurposeElement(parseMarkdown(xpp));
8257    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
8258      res.setCopyrightElement(parseMarkdown(xpp));
8259    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
8260      res.setCopyrightLabelElement(parseString(xpp));
8261    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
8262      res.setApprovalDateElement(parseDate(xpp));
8263    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
8264      res.setLastReviewDateElement(parseDate(xpp));
8265    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
8266      res.setEffectivePeriod(parsePeriod(xpp));
8267    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
8268      res.getTopic().add(parseCodeableConcept(xpp));
8269    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
8270      res.getAuthor().add(parseContactDetail(xpp));
8271    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
8272      res.getEditor().add(parseContactDetail(xpp));
8273    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
8274      res.getReviewer().add(parseContactDetail(xpp));
8275    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
8276      res.getEndorser().add(parseContactDetail(xpp));
8277    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
8278      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
8279    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
8280      res.getProperty().add(parseConceptMapPropertyComponent(xpp));
8281    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalAttribute")) {
8282      res.getAdditionalAttribute().add(parseConceptMapAdditionalAttributeComponent(xpp));
8283    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "sourceScope")) {
8284      res.setSourceScope(parseType("sourceScope", xpp));
8285    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "targetScope")) {
8286      res.setTargetScope(parseType("targetScope", xpp));
8287    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
8288      res.getGroup().add(parseConceptMapGroupComponent(xpp));
8289    } else if (!parseMetadataResourceContent(eventType, xpp, res)){ 
8290      return false;
8291    }
8292    return true;
8293  }
8294
8295  protected ConceptMap.PropertyComponent parseConceptMapPropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8296    ConceptMap.PropertyComponent res = new ConceptMap.PropertyComponent();
8297    parseElementAttributes(xpp, res);
8298    next(xpp);
8299    int eventType = nextNoWhitespace(xpp);
8300    while (eventType != XmlPullParser.END_TAG) {
8301    if (!parseConceptMapPropertyComponentContent(eventType, xpp, res))
8302        unknownContent(xpp);
8303      eventType = nextNoWhitespace(xpp);
8304    }
8305    next(xpp);
8306    parseElementClose(res);
8307    return res;
8308  }
8309
8310  protected boolean parseConceptMapPropertyComponentContent(int eventType, XmlPullParser xpp, ConceptMap.PropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8311    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8312      res.setCodeElement(parseCode(xpp));
8313    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
8314      res.setUriElement(parseUri(xpp));
8315    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8316      res.setDescriptionElement(parseString(xpp));
8317    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8318      res.setTypeElement(parseEnumeration(xpp, ConceptMap.ConceptMapPropertyType.NULL, new ConceptMap.ConceptMapPropertyTypeEnumFactory()));
8319    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
8320      res.setSystemElement(parseCanonical(xpp));
8321    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8322      return false;
8323    }
8324    return true;
8325  }
8326
8327  protected ConceptMap.AdditionalAttributeComponent parseConceptMapAdditionalAttributeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8328    ConceptMap.AdditionalAttributeComponent res = new ConceptMap.AdditionalAttributeComponent();
8329    parseElementAttributes(xpp, res);
8330    next(xpp);
8331    int eventType = nextNoWhitespace(xpp);
8332    while (eventType != XmlPullParser.END_TAG) {
8333    if (!parseConceptMapAdditionalAttributeComponentContent(eventType, xpp, res))
8334        unknownContent(xpp);
8335      eventType = nextNoWhitespace(xpp);
8336    }
8337    next(xpp);
8338    parseElementClose(res);
8339    return res;
8340  }
8341
8342  protected boolean parseConceptMapAdditionalAttributeComponentContent(int eventType, XmlPullParser xpp, ConceptMap.AdditionalAttributeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8343    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8344      res.setCodeElement(parseCode(xpp));
8345    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
8346      res.setUriElement(parseUri(xpp));
8347    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8348      res.setDescriptionElement(parseString(xpp));
8349    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8350      res.setTypeElement(parseEnumeration(xpp, ConceptMap.ConceptMapAttributeType.NULL, new ConceptMap.ConceptMapAttributeTypeEnumFactory()));
8351    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8352      return false;
8353    }
8354    return true;
8355  }
8356
8357  protected ConceptMap.ConceptMapGroupComponent parseConceptMapGroupComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8358    ConceptMap.ConceptMapGroupComponent res = new ConceptMap.ConceptMapGroupComponent();
8359    parseElementAttributes(xpp, res);
8360    next(xpp);
8361    int eventType = nextNoWhitespace(xpp);
8362    while (eventType != XmlPullParser.END_TAG) {
8363    if (!parseConceptMapGroupComponentContent(eventType, xpp, res))
8364        unknownContent(xpp);
8365      eventType = nextNoWhitespace(xpp);
8366    }
8367    next(xpp);
8368    parseElementClose(res);
8369    return res;
8370  }
8371
8372  protected boolean parseConceptMapGroupComponentContent(int eventType, XmlPullParser xpp, ConceptMap.ConceptMapGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8373    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
8374      res.setSourceElement(parseCanonical(xpp));
8375    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
8376      res.setTargetElement(parseCanonical(xpp));
8377    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
8378      res.getElement().add(parseConceptMapSourceElementComponent(xpp));
8379    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unmapped")) {
8380      res.setUnmapped(parseConceptMapGroupUnmappedComponent(xpp));
8381    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8382      return false;
8383    }
8384    return true;
8385  }
8386
8387  protected ConceptMap.SourceElementComponent parseConceptMapSourceElementComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8388    ConceptMap.SourceElementComponent res = new ConceptMap.SourceElementComponent();
8389    parseElementAttributes(xpp, res);
8390    next(xpp);
8391    int eventType = nextNoWhitespace(xpp);
8392    while (eventType != XmlPullParser.END_TAG) {
8393    if (!parseConceptMapSourceElementComponentContent(eventType, xpp, res))
8394        unknownContent(xpp);
8395      eventType = nextNoWhitespace(xpp);
8396    }
8397    next(xpp);
8398    parseElementClose(res);
8399    return res;
8400  }
8401
8402  protected boolean parseConceptMapSourceElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap.SourceElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8403    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8404      res.setCodeElement(parseCode(xpp));
8405    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
8406      res.setDisplayElement(parseString(xpp));
8407    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
8408      res.setValueSetElement(parseCanonical(xpp));
8409    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noMap")) {
8410      res.setNoMapElement(parseBoolean(xpp));
8411    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
8412      res.getTarget().add(parseConceptMapTargetElementComponent(xpp));
8413    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8414      return false;
8415    }
8416    return true;
8417  }
8418
8419  protected ConceptMap.TargetElementComponent parseConceptMapTargetElementComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8420    ConceptMap.TargetElementComponent res = new ConceptMap.TargetElementComponent();
8421    parseElementAttributes(xpp, res);
8422    next(xpp);
8423    int eventType = nextNoWhitespace(xpp);
8424    while (eventType != XmlPullParser.END_TAG) {
8425    if (!parseConceptMapTargetElementComponentContent(eventType, xpp, res))
8426        unknownContent(xpp);
8427      eventType = nextNoWhitespace(xpp);
8428    }
8429    next(xpp);
8430    parseElementClose(res);
8431    return res;
8432  }
8433
8434  protected boolean parseConceptMapTargetElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap.TargetElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8435    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8436      res.setCodeElement(parseCode(xpp));
8437    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
8438      res.setDisplayElement(parseString(xpp));
8439    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
8440      res.setValueSetElement(parseCanonical(xpp));
8441    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
8442      res.setRelationshipElement(parseEnumeration(xpp, Enumerations.ConceptMapRelationship.NULL, new Enumerations.ConceptMapRelationshipEnumFactory()));
8443    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
8444      res.setCommentElement(parseString(xpp));
8445    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
8446      res.getProperty().add(parseConceptMapMappingPropertyComponent(xpp));
8447    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependsOn")) {
8448      res.getDependsOn().add(parseConceptMapOtherElementComponent(xpp));
8449    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
8450      res.getProduct().add(parseConceptMapOtherElementComponent(xpp));
8451    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8452      return false;
8453    }
8454    return true;
8455  }
8456
8457  protected ConceptMap.MappingPropertyComponent parseConceptMapMappingPropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8458    ConceptMap.MappingPropertyComponent res = new ConceptMap.MappingPropertyComponent();
8459    parseElementAttributes(xpp, res);
8460    next(xpp);
8461    int eventType = nextNoWhitespace(xpp);
8462    while (eventType != XmlPullParser.END_TAG) {
8463    if (!parseConceptMapMappingPropertyComponentContent(eventType, xpp, res))
8464        unknownContent(xpp);
8465      eventType = nextNoWhitespace(xpp);
8466    }
8467    next(xpp);
8468    parseElementClose(res);
8469    return res;
8470  }
8471
8472  protected boolean parseConceptMapMappingPropertyComponentContent(int eventType, XmlPullParser xpp, ConceptMap.MappingPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8473    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8474      res.setCodeElement(parseCode(xpp));
8475    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
8476      res.setValue(parseType("value", xpp));
8477    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8478      return false;
8479    }
8480    return true;
8481  }
8482
8483  protected ConceptMap.OtherElementComponent parseConceptMapOtherElementComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8484    ConceptMap.OtherElementComponent res = new ConceptMap.OtherElementComponent();
8485    parseElementAttributes(xpp, res);
8486    next(xpp);
8487    int eventType = nextNoWhitespace(xpp);
8488    while (eventType != XmlPullParser.END_TAG) {
8489    if (!parseConceptMapOtherElementComponentContent(eventType, xpp, res))
8490        unknownContent(xpp);
8491      eventType = nextNoWhitespace(xpp);
8492    }
8493    next(xpp);
8494    parseElementClose(res);
8495    return res;
8496  }
8497
8498  protected boolean parseConceptMapOtherElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap.OtherElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8499    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attribute")) {
8500      res.setAttributeElement(parseCode(xpp));
8501    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
8502      res.setValue(parseType("value", xpp));
8503    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
8504      res.setValueSetElement(parseCanonical(xpp));
8505    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8506      return false;
8507    }
8508    return true;
8509  }
8510
8511  protected ConceptMap.ConceptMapGroupUnmappedComponent parseConceptMapGroupUnmappedComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8512    ConceptMap.ConceptMapGroupUnmappedComponent res = new ConceptMap.ConceptMapGroupUnmappedComponent();
8513    parseElementAttributes(xpp, res);
8514    next(xpp);
8515    int eventType = nextNoWhitespace(xpp);
8516    while (eventType != XmlPullParser.END_TAG) {
8517    if (!parseConceptMapGroupUnmappedComponentContent(eventType, xpp, res))
8518        unknownContent(xpp);
8519      eventType = nextNoWhitespace(xpp);
8520    }
8521    next(xpp);
8522    parseElementClose(res);
8523    return res;
8524  }
8525
8526  protected boolean parseConceptMapGroupUnmappedComponentContent(int eventType, XmlPullParser xpp, ConceptMap.ConceptMapGroupUnmappedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8527    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
8528      res.setModeElement(parseEnumeration(xpp, ConceptMap.ConceptMapGroupUnmappedMode.NULL, new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory()));
8529    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8530      res.setCodeElement(parseCode(xpp));
8531    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
8532      res.setDisplayElement(parseString(xpp));
8533    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
8534      res.setValueSetElement(parseCanonical(xpp));
8535    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
8536      res.setRelationshipElement(parseEnumeration(xpp, Enumerations.ConceptMapRelationship.NULL, new Enumerations.ConceptMapRelationshipEnumFactory()));
8537    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherMap")) {
8538      res.setOtherMapElement(parseCanonical(xpp));
8539    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8540      return false;
8541    }
8542    return true;
8543  }
8544
8545  protected Condition parseCondition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8546    Condition res = new Condition();
8547    parseResourceAttributes(xpp, res);
8548    next(xpp);
8549    int eventType = nextNoWhitespace(xpp);
8550    while (eventType != XmlPullParser.END_TAG) {
8551    if (!parseConditionContent(eventType, xpp, res))
8552        unknownContent(xpp);
8553      eventType = nextNoWhitespace(xpp);
8554    }
8555    next(xpp);
8556    parseElementClose(res);
8557    return res;
8558  }
8559
8560  protected boolean parseConditionContent(int eventType, XmlPullParser xpp, Condition res) throws XmlPullParserException, IOException, FHIRFormatError {
8561    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8562      res.getIdentifier().add(parseIdentifier(xpp));
8563    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
8564      res.setClinicalStatus(parseCodeableConcept(xpp));
8565    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
8566      res.setVerificationStatus(parseCodeableConcept(xpp));
8567    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8568      res.getCategory().add(parseCodeableConcept(xpp));
8569    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
8570      res.setSeverity(parseCodeableConcept(xpp));
8571    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8572      res.setCode(parseCodeableConcept(xpp));
8573    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
8574      res.getBodySite().add(parseCodeableConcept(xpp));
8575    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8576      res.setSubject(parseReference(xpp));
8577    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8578      res.setEncounter(parseReference(xpp));
8579    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
8580      res.setOnset(parseType("onset", xpp));
8581    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "abatement")) {
8582      res.setAbatement(parseType("abatement", xpp));
8583    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
8584      res.setRecordedDateElement(parseDateTime(xpp));
8585    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
8586      res.getParticipant().add(parseConditionParticipantComponent(xpp));
8587    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stage")) {
8588      res.getStage().add(parseConditionStageComponent(xpp));
8589    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evidence")) {
8590      res.getEvidence().add(parseCodeableReference(xpp));
8591    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8592      res.getNote().add(parseAnnotation(xpp));
8593    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
8594      return false;
8595    }
8596    return true;
8597  }
8598
8599  protected Condition.ConditionParticipantComponent parseConditionParticipantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8600    Condition.ConditionParticipantComponent res = new Condition.ConditionParticipantComponent();
8601    parseElementAttributes(xpp, res);
8602    next(xpp);
8603    int eventType = nextNoWhitespace(xpp);
8604    while (eventType != XmlPullParser.END_TAG) {
8605    if (!parseConditionParticipantComponentContent(eventType, xpp, res))
8606        unknownContent(xpp);
8607      eventType = nextNoWhitespace(xpp);
8608    }
8609    next(xpp);
8610    parseElementClose(res);
8611    return res;
8612  }
8613
8614  protected boolean parseConditionParticipantComponentContent(int eventType, XmlPullParser xpp, Condition.ConditionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8615    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
8616      res.setFunction(parseCodeableConcept(xpp));
8617    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
8618      res.setActor(parseReference(xpp));
8619    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8620      return false;
8621    }
8622    return true;
8623  }
8624
8625  protected Condition.ConditionStageComponent parseConditionStageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8626    Condition.ConditionStageComponent res = new Condition.ConditionStageComponent();
8627    parseElementAttributes(xpp, res);
8628    next(xpp);
8629    int eventType = nextNoWhitespace(xpp);
8630    while (eventType != XmlPullParser.END_TAG) {
8631    if (!parseConditionStageComponentContent(eventType, xpp, res))
8632        unknownContent(xpp);
8633      eventType = nextNoWhitespace(xpp);
8634    }
8635    next(xpp);
8636    parseElementClose(res);
8637    return res;
8638  }
8639
8640  protected boolean parseConditionStageComponentContent(int eventType, XmlPullParser xpp, Condition.ConditionStageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8641    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
8642      res.setSummary(parseCodeableConcept(xpp));
8643    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessment")) {
8644      res.getAssessment().add(parseReference(xpp));
8645    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8646      res.setType(parseCodeableConcept(xpp));
8647    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8648      return false;
8649    }
8650    return true;
8651  }
8652
8653  protected ConditionDefinition parseConditionDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8654    ConditionDefinition res = new ConditionDefinition();
8655    parseResourceAttributes(xpp, res);
8656    next(xpp);
8657    int eventType = nextNoWhitespace(xpp);
8658    while (eventType != XmlPullParser.END_TAG) {
8659    if (!parseConditionDefinitionContent(eventType, xpp, res))
8660        unknownContent(xpp);
8661      eventType = nextNoWhitespace(xpp);
8662    }
8663    next(xpp);
8664    parseElementClose(res);
8665    return res;
8666  }
8667
8668  protected boolean parseConditionDefinitionContent(int eventType, XmlPullParser xpp, ConditionDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
8669    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
8670      res.setUrlElement(parseUri(xpp));
8671    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8672      res.getIdentifier().add(parseIdentifier(xpp));
8673    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8674      res.setVersionElement(parseString(xpp));
8675    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
8676      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
8677    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8678      res.setNameElement(parseString(xpp));
8679    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
8680      res.setTitleElement(parseString(xpp));
8681    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
8682      res.setSubtitleElement(parseString(xpp));
8683    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8684      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
8685    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
8686      res.setExperimentalElement(parseBoolean(xpp));
8687    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8688      res.setDateElement(parseDateTime(xpp));
8689    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
8690      res.setPublisherElement(parseString(xpp));
8691    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
8692      res.getContact().add(parseContactDetail(xpp));
8693    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8694      res.setDescriptionElement(parseMarkdown(xpp));
8695    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
8696      res.getUseContext().add(parseUsageContext(xpp));
8697    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
8698      res.getJurisdiction().add(parseCodeableConcept(xpp));
8699    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8700      res.setCode(parseCodeableConcept(xpp));
8701    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
8702      res.setSeverity(parseCodeableConcept(xpp));
8703    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
8704      res.setBodySite(parseCodeableConcept(xpp));
8705    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stage")) {
8706      res.setStage(parseCodeableConcept(xpp));
8707    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hasSeverity")) {
8708      res.setHasSeverityElement(parseBoolean(xpp));
8709    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hasBodySite")) {
8710      res.setHasBodySiteElement(parseBoolean(xpp));
8711    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hasStage")) {
8712      res.setHasStageElement(parseBoolean(xpp));
8713    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
8714      res.getDefinition().add(parseUri(xpp));
8715    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observation")) {
8716      res.getObservation().add(parseConditionDefinitionObservationComponent(xpp));
8717    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medication")) {
8718      res.getMedication().add(parseConditionDefinitionMedicationComponent(xpp));
8719    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precondition")) {
8720      res.getPrecondition().add(parseConditionDefinitionPreconditionComponent(xpp));
8721    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("team")) {
8722      res.getTeam().add(parseReference(xpp));
8723    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("questionnaire")) {
8724      res.getQuestionnaire().add(parseConditionDefinitionQuestionnaireComponent(xpp));
8725    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plan")) {
8726      res.getPlan().add(parseConditionDefinitionPlanComponent(xpp));
8727    } else if (!parseMetadataResourceContent(eventType, xpp, res)){ 
8728      return false;
8729    }
8730    return true;
8731  }
8732
8733  protected ConditionDefinition.ConditionDefinitionObservationComponent parseConditionDefinitionObservationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8734    ConditionDefinition.ConditionDefinitionObservationComponent res = new ConditionDefinition.ConditionDefinitionObservationComponent();
8735    parseElementAttributes(xpp, res);
8736    next(xpp);
8737    int eventType = nextNoWhitespace(xpp);
8738    while (eventType != XmlPullParser.END_TAG) {
8739    if (!parseConditionDefinitionObservationComponentContent(eventType, xpp, res))
8740        unknownContent(xpp);
8741      eventType = nextNoWhitespace(xpp);
8742    }
8743    next(xpp);
8744    parseElementClose(res);
8745    return res;
8746  }
8747
8748  protected boolean parseConditionDefinitionObservationComponentContent(int eventType, XmlPullParser xpp, ConditionDefinition.ConditionDefinitionObservationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8749    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8750      res.setCategory(parseCodeableConcept(xpp));
8751    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8752      res.setCode(parseCodeableConcept(xpp));
8753    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8754      return false;
8755    }
8756    return true;
8757  }
8758
8759  protected ConditionDefinition.ConditionDefinitionMedicationComponent parseConditionDefinitionMedicationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8760    ConditionDefinition.ConditionDefinitionMedicationComponent res = new ConditionDefinition.ConditionDefinitionMedicationComponent();
8761    parseElementAttributes(xpp, res);
8762    next(xpp);
8763    int eventType = nextNoWhitespace(xpp);
8764    while (eventType != XmlPullParser.END_TAG) {
8765    if (!parseConditionDefinitionMedicationComponentContent(eventType, xpp, res))
8766        unknownContent(xpp);
8767      eventType = nextNoWhitespace(xpp);
8768    }
8769    next(xpp);
8770    parseElementClose(res);
8771    return res;
8772  }
8773
8774  protected boolean parseConditionDefinitionMedicationComponentContent(int eventType, XmlPullParser xpp, ConditionDefinition.ConditionDefinitionMedicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8775    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8776      res.setCategory(parseCodeableConcept(xpp));
8777    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8778      res.setCode(parseCodeableConcept(xpp));
8779    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8780      return false;
8781    }
8782    return true;
8783  }
8784
8785  protected ConditionDefinition.ConditionDefinitionPreconditionComponent parseConditionDefinitionPreconditionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8786    ConditionDefinition.ConditionDefinitionPreconditionComponent res = new ConditionDefinition.ConditionDefinitionPreconditionComponent();
8787    parseElementAttributes(xpp, res);
8788    next(xpp);
8789    int eventType = nextNoWhitespace(xpp);
8790    while (eventType != XmlPullParser.END_TAG) {
8791    if (!parseConditionDefinitionPreconditionComponentContent(eventType, xpp, res))
8792        unknownContent(xpp);
8793      eventType = nextNoWhitespace(xpp);
8794    }
8795    next(xpp);
8796    parseElementClose(res);
8797    return res;
8798  }
8799
8800  protected boolean parseConditionDefinitionPreconditionComponentContent(int eventType, XmlPullParser xpp, ConditionDefinition.ConditionDefinitionPreconditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8801    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8802      res.setTypeElement(parseEnumeration(xpp, ConditionDefinition.ConditionPreconditionType.NULL, new ConditionDefinition.ConditionPreconditionTypeEnumFactory()));
8803    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8804      res.setCode(parseCodeableConcept(xpp));
8805    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
8806      res.setValue(parseType("value", xpp));
8807    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8808      return false;
8809    }
8810    return true;
8811  }
8812
8813  protected ConditionDefinition.ConditionDefinitionQuestionnaireComponent parseConditionDefinitionQuestionnaireComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8814    ConditionDefinition.ConditionDefinitionQuestionnaireComponent res = new ConditionDefinition.ConditionDefinitionQuestionnaireComponent();
8815    parseElementAttributes(xpp, res);
8816    next(xpp);
8817    int eventType = nextNoWhitespace(xpp);
8818    while (eventType != XmlPullParser.END_TAG) {
8819    if (!parseConditionDefinitionQuestionnaireComponentContent(eventType, xpp, res))
8820        unknownContent(xpp);
8821      eventType = nextNoWhitespace(xpp);
8822    }
8823    next(xpp);
8824    parseElementClose(res);
8825    return res;
8826  }
8827
8828  protected boolean parseConditionDefinitionQuestionnaireComponentContent(int eventType, XmlPullParser xpp, ConditionDefinition.ConditionDefinitionQuestionnaireComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8829    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
8830      res.setPurposeElement(parseEnumeration(xpp, ConditionDefinition.ConditionQuestionnairePurpose.NULL, new ConditionDefinition.ConditionQuestionnairePurposeEnumFactory()));
8831    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
8832      res.setReference(parseReference(xpp));
8833    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8834      return false;
8835    }
8836    return true;
8837  }
8838
8839  protected ConditionDefinition.ConditionDefinitionPlanComponent parseConditionDefinitionPlanComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8840    ConditionDefinition.ConditionDefinitionPlanComponent res = new ConditionDefinition.ConditionDefinitionPlanComponent();
8841    parseElementAttributes(xpp, res);
8842    next(xpp);
8843    int eventType = nextNoWhitespace(xpp);
8844    while (eventType != XmlPullParser.END_TAG) {
8845    if (!parseConditionDefinitionPlanComponentContent(eventType, xpp, res))
8846        unknownContent(xpp);
8847      eventType = nextNoWhitespace(xpp);
8848    }
8849    next(xpp);
8850    parseElementClose(res);
8851    return res;
8852  }
8853
8854  protected boolean parseConditionDefinitionPlanComponentContent(int eventType, XmlPullParser xpp, ConditionDefinition.ConditionDefinitionPlanComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8855    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
8856      res.setRole(parseCodeableConcept(xpp));
8857    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
8858      res.setReference(parseReference(xpp));
8859    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8860      return false;
8861    }
8862    return true;
8863  }
8864
8865  protected Consent parseConsent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8866    Consent res = new Consent();
8867    parseResourceAttributes(xpp, res);
8868    next(xpp);
8869    int eventType = nextNoWhitespace(xpp);
8870    while (eventType != XmlPullParser.END_TAG) {
8871    if (!parseConsentContent(eventType, xpp, res))
8872        unknownContent(xpp);
8873      eventType = nextNoWhitespace(xpp);
8874    }
8875    next(xpp);
8876    parseElementClose(res);
8877    return res;
8878  }
8879
8880  protected boolean parseConsentContent(int eventType, XmlPullParser xpp, Consent res) throws XmlPullParserException, IOException, FHIRFormatError {
8881    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8882      res.getIdentifier().add(parseIdentifier(xpp));
8883    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8884      res.setStatusElement(parseEnumeration(xpp, Consent.ConsentState.NULL, new Consent.ConsentStateEnumFactory()));
8885    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8886      res.getCategory().add(parseCodeableConcept(xpp));
8887    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8888      res.setSubject(parseReference(xpp));
8889    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8890      res.setDateElement(parseDate(xpp));
8891    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8892      res.setPeriod(parsePeriod(xpp));
8893    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("grantor")) {
8894      res.getGrantor().add(parseReference(xpp));
8895    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("grantee")) {
8896      res.getGrantee().add(parseReference(xpp));
8897    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manager")) {
8898      res.getManager().add(parseReference(xpp));
8899    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("controller")) {
8900      res.getController().add(parseReference(xpp));
8901    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceAttachment")) {
8902      res.getSourceAttachment().add(parseAttachment(xpp));
8903    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceReference")) {
8904      res.getSourceReference().add(parseReference(xpp));
8905    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulatoryBasis")) {
8906      res.getRegulatoryBasis().add(parseCodeableConcept(xpp));
8907    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyBasis")) {
8908      res.setPolicyBasis(parseConsentPolicyBasisComponent(xpp));
8909    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyText")) {
8910      res.getPolicyText().add(parseReference(xpp));
8911    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verification")) {
8912      res.getVerification().add(parseConsentVerificationComponent(xpp));
8913    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decision")) {
8914      res.setDecisionElement(parseEnumeration(xpp, Enumerations.ConsentProvisionType.NULL, new Enumerations.ConsentProvisionTypeEnumFactory()));
8915    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provision")) {
8916      res.getProvision().add(parseConsentProvisionComponent(xpp));
8917    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
8918      return false;
8919    }
8920    return true;
8921  }
8922
8923  protected Consent.ConsentPolicyBasisComponent parseConsentPolicyBasisComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8924    Consent.ConsentPolicyBasisComponent res = new Consent.ConsentPolicyBasisComponent();
8925    parseElementAttributes(xpp, res);
8926    next(xpp);
8927    int eventType = nextNoWhitespace(xpp);
8928    while (eventType != XmlPullParser.END_TAG) {
8929    if (!parseConsentPolicyBasisComponentContent(eventType, xpp, res))
8930        unknownContent(xpp);
8931      eventType = nextNoWhitespace(xpp);
8932    }
8933    next(xpp);
8934    parseElementClose(res);
8935    return res;
8936  }
8937
8938  protected boolean parseConsentPolicyBasisComponentContent(int eventType, XmlPullParser xpp, Consent.ConsentPolicyBasisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8939    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
8940      res.setReference(parseReference(xpp));
8941    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
8942      res.setUrlElement(parseUrl(xpp));
8943    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8944      return false;
8945    }
8946    return true;
8947  }
8948
8949  protected Consent.ConsentVerificationComponent parseConsentVerificationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8950    Consent.ConsentVerificationComponent res = new Consent.ConsentVerificationComponent();
8951    parseElementAttributes(xpp, res);
8952    next(xpp);
8953    int eventType = nextNoWhitespace(xpp);
8954    while (eventType != XmlPullParser.END_TAG) {
8955    if (!parseConsentVerificationComponentContent(eventType, xpp, res))
8956        unknownContent(xpp);
8957      eventType = nextNoWhitespace(xpp);
8958    }
8959    next(xpp);
8960    parseElementClose(res);
8961    return res;
8962  }
8963
8964  protected boolean parseConsentVerificationComponentContent(int eventType, XmlPullParser xpp, Consent.ConsentVerificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8965    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verified")) {
8966      res.setVerifiedElement(parseBoolean(xpp));
8967    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationType")) {
8968      res.setVerificationType(parseCodeableConcept(xpp));
8969    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verifiedBy")) {
8970      res.setVerifiedBy(parseReference(xpp));
8971    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verifiedWith")) {
8972      res.setVerifiedWith(parseReference(xpp));
8973    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationDate")) {
8974      res.getVerificationDate().add(parseDateTime(xpp));
8975    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
8976      return false;
8977    }
8978    return true;
8979  }
8980
8981  protected Consent.ProvisionComponent parseConsentProvisionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8982    Consent.ProvisionComponent res = new Consent.ProvisionComponent();
8983    parseElementAttributes(xpp, res);
8984    next(xpp);
8985    int eventType = nextNoWhitespace(xpp);
8986    while (eventType != XmlPullParser.END_TAG) {
8987    if (!parseConsentProvisionComponentContent(eventType, xpp, res))
8988        unknownContent(xpp);
8989      eventType = nextNoWhitespace(xpp);
8990    }
8991    next(xpp);
8992    parseElementClose(res);
8993    return res;
8994  }
8995
8996  protected boolean parseConsentProvisionComponentContent(int eventType, XmlPullParser xpp, Consent.ProvisionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8997    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8998      res.setPeriod(parsePeriod(xpp));
8999    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
9000      res.getActor().add(parseConsentProvisionActorComponent(xpp));
9001    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
9002      res.getAction().add(parseCodeableConcept(xpp));
9003    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
9004      res.getSecurityLabel().add(parseCoding(xpp));
9005    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
9006      res.getPurpose().add(parseCoding(xpp));
9007    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentType")) {
9008      res.getDocumentType().add(parseCoding(xpp));
9009    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceType")) {
9010      res.getResourceType().add(parseCoding(xpp));
9011    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9012      res.getCode().add(parseCodeableConcept(xpp));
9013    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataPeriod")) {
9014      res.setDataPeriod(parsePeriod(xpp));
9015    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
9016      res.getData().add(parseConsentProvisionDataComponent(xpp));
9017    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
9018      res.setExpression(parseExpression(xpp));
9019    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provision")) {
9020      res.getProvision().add(parseConsentProvisionComponent(xpp));
9021    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9022      return false;
9023    }
9024    return true;
9025  }
9026
9027  protected Consent.ProvisionActorComponent parseConsentProvisionActorComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9028    Consent.ProvisionActorComponent res = new Consent.ProvisionActorComponent();
9029    parseElementAttributes(xpp, res);
9030    next(xpp);
9031    int eventType = nextNoWhitespace(xpp);
9032    while (eventType != XmlPullParser.END_TAG) {
9033    if (!parseConsentProvisionActorComponentContent(eventType, xpp, res))
9034        unknownContent(xpp);
9035      eventType = nextNoWhitespace(xpp);
9036    }
9037    next(xpp);
9038    parseElementClose(res);
9039    return res;
9040  }
9041
9042  protected boolean parseConsentProvisionActorComponentContent(int eventType, XmlPullParser xpp, Consent.ProvisionActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9043    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
9044      res.setRole(parseCodeableConcept(xpp));
9045    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
9046      res.setReference(parseReference(xpp));
9047    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9048      return false;
9049    }
9050    return true;
9051  }
9052
9053  protected Consent.ProvisionDataComponent parseConsentProvisionDataComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9054    Consent.ProvisionDataComponent res = new Consent.ProvisionDataComponent();
9055    parseElementAttributes(xpp, res);
9056    next(xpp);
9057    int eventType = nextNoWhitespace(xpp);
9058    while (eventType != XmlPullParser.END_TAG) {
9059    if (!parseConsentProvisionDataComponentContent(eventType, xpp, res))
9060        unknownContent(xpp);
9061      eventType = nextNoWhitespace(xpp);
9062    }
9063    next(xpp);
9064    parseElementClose(res);
9065    return res;
9066  }
9067
9068  protected boolean parseConsentProvisionDataComponentContent(int eventType, XmlPullParser xpp, Consent.ProvisionDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9069    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaning")) {
9070      res.setMeaningElement(parseEnumeration(xpp, Enumerations.ConsentDataMeaning.NULL, new Enumerations.ConsentDataMeaningEnumFactory()));
9071    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
9072      res.setReference(parseReference(xpp));
9073    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9074      return false;
9075    }
9076    return true;
9077  }
9078
9079  protected Contract parseContract(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9080    Contract res = new Contract();
9081    parseResourceAttributes(xpp, res);
9082    next(xpp);
9083    int eventType = nextNoWhitespace(xpp);
9084    while (eventType != XmlPullParser.END_TAG) {
9085    if (!parseContractContent(eventType, xpp, res))
9086        unknownContent(xpp);
9087      eventType = nextNoWhitespace(xpp);
9088    }
9089    next(xpp);
9090    parseElementClose(res);
9091    return res;
9092  }
9093
9094  protected boolean parseContractContent(int eventType, XmlPullParser xpp, Contract res) throws XmlPullParserException, IOException, FHIRFormatError {
9095    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9096      res.getIdentifier().add(parseIdentifier(xpp));
9097    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9098      res.setUrlElement(parseUri(xpp));
9099    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9100      res.setVersionElement(parseString(xpp));
9101    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9102      res.setStatusElement(parseEnumeration(xpp, Contract.ContractResourceStatusCodes.NULL, new Contract.ContractResourceStatusCodesEnumFactory()));
9103    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalState")) {
9104      res.setLegalState(parseCodeableConcept(xpp));
9105    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
9106      res.setInstantiatesCanonical(parseReference(xpp));
9107    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
9108      res.setInstantiatesUriElement(parseUri(xpp));
9109    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentDerivative")) {
9110      res.setContentDerivative(parseCodeableConcept(xpp));
9111    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
9112      res.setIssuedElement(parseDateTime(xpp));
9113    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
9114      res.setApplies(parsePeriod(xpp));
9115    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationType")) {
9116      res.setExpirationType(parseCodeableConcept(xpp));
9117    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
9118      res.getSubject().add(parseReference(xpp));
9119    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
9120      res.getAuthority().add(parseReference(xpp));
9121    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
9122      res.getDomain().add(parseReference(xpp));
9123    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
9124      res.getSite().add(parseReference(xpp));
9125    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9126      res.setNameElement(parseString(xpp));
9127    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9128      res.setTitleElement(parseString(xpp));
9129    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
9130      res.setSubtitleElement(parseString(xpp));
9131    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
9132      res.getAlias().add(parseString(xpp));
9133    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
9134      res.setAuthor(parseReference(xpp));
9135    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
9136      res.setScope(parseCodeableConcept(xpp));
9137    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "topic")) {
9138      res.setTopic(parseType("topic", xpp));
9139    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9140      res.setType(parseCodeableConcept(xpp));
9141    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
9142      res.getSubType().add(parseCodeableConcept(xpp));
9143    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentDefinition")) {
9144      res.setContentDefinition(parseContractContentDefinitionComponent(xpp));
9145    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
9146      res.getTerm().add(parseContractTermComponent(xpp));
9147    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
9148      res.getSupportingInfo().add(parseReference(xpp));
9149    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
9150      res.getRelevantHistory().add(parseReference(xpp));
9151    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signer")) {
9152      res.getSigner().add(parseContractSignatoryComponent(xpp));
9153    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("friendly")) {
9154      res.getFriendly().add(parseContractFriendlyLanguageComponent(xpp));
9155    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legal")) {
9156      res.getLegal().add(parseContractLegalLanguageComponent(xpp));
9157    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
9158      res.getRule().add(parseContractComputableLanguageComponent(xpp));
9159    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "legallyBinding")) {
9160      res.setLegallyBinding(parseType("legallyBinding", xpp));
9161    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
9162      return false;
9163    }
9164    return true;
9165  }
9166
9167  protected Contract.ContentDefinitionComponent parseContractContentDefinitionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9168    Contract.ContentDefinitionComponent res = new Contract.ContentDefinitionComponent();
9169    parseElementAttributes(xpp, res);
9170    next(xpp);
9171    int eventType = nextNoWhitespace(xpp);
9172    while (eventType != XmlPullParser.END_TAG) {
9173    if (!parseContractContentDefinitionComponentContent(eventType, xpp, res))
9174        unknownContent(xpp);
9175      eventType = nextNoWhitespace(xpp);
9176    }
9177    next(xpp);
9178    parseElementClose(res);
9179    return res;
9180  }
9181
9182  protected boolean parseContractContentDefinitionComponentContent(int eventType, XmlPullParser xpp, Contract.ContentDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9183    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9184      res.setType(parseCodeableConcept(xpp));
9185    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
9186      res.setSubType(parseCodeableConcept(xpp));
9187    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9188      res.setPublisher(parseReference(xpp));
9189    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationDate")) {
9190      res.setPublicationDateElement(parseDateTime(xpp));
9191    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationStatus")) {
9192      res.setPublicationStatusElement(parseEnumeration(xpp, Contract.ContractResourcePublicationStatusCodes.NULL, new Contract.ContractResourcePublicationStatusCodesEnumFactory()));
9193    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9194      res.setCopyrightElement(parseMarkdown(xpp));
9195    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9196      return false;
9197    }
9198    return true;
9199  }
9200
9201  protected Contract.TermComponent parseContractTermComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9202    Contract.TermComponent res = new Contract.TermComponent();
9203    parseElementAttributes(xpp, res);
9204    next(xpp);
9205    int eventType = nextNoWhitespace(xpp);
9206    while (eventType != XmlPullParser.END_TAG) {
9207    if (!parseContractTermComponentContent(eventType, xpp, res))
9208        unknownContent(xpp);
9209      eventType = nextNoWhitespace(xpp);
9210    }
9211    next(xpp);
9212    parseElementClose(res);
9213    return res;
9214  }
9215
9216  protected boolean parseContractTermComponentContent(int eventType, XmlPullParser xpp, Contract.TermComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9217    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9218      res.setIdentifier(parseIdentifier(xpp));
9219    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
9220      res.setIssuedElement(parseDateTime(xpp));
9221    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
9222      res.setApplies(parsePeriod(xpp));
9223    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "topic")) {
9224      res.setTopic(parseType("topic", xpp));
9225    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9226      res.setType(parseCodeableConcept(xpp));
9227    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
9228      res.setSubType(parseCodeableConcept(xpp));
9229    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
9230      res.setTextElement(parseString(xpp));
9231    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
9232      res.getSecurityLabel().add(parseContractSecurityLabelComponent(xpp));
9233    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offer")) {
9234      res.setOffer(parseContractOfferComponent(xpp));
9235    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asset")) {
9236      res.getAsset().add(parseContractAssetComponent(xpp));
9237    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
9238      res.getAction().add(parseContractActionComponent(xpp));
9239    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
9240      res.getGroup().add(parseContractTermComponent(xpp));
9241    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9242      return false;
9243    }
9244    return true;
9245  }
9246
9247  protected Contract.SecurityLabelComponent parseContractSecurityLabelComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9248    Contract.SecurityLabelComponent res = new Contract.SecurityLabelComponent();
9249    parseElementAttributes(xpp, res);
9250    next(xpp);
9251    int eventType = nextNoWhitespace(xpp);
9252    while (eventType != XmlPullParser.END_TAG) {
9253    if (!parseContractSecurityLabelComponentContent(eventType, xpp, res))
9254        unknownContent(xpp);
9255      eventType = nextNoWhitespace(xpp);
9256    }
9257    next(xpp);
9258    parseElementClose(res);
9259    return res;
9260  }
9261
9262  protected boolean parseContractSecurityLabelComponentContent(int eventType, XmlPullParser xpp, Contract.SecurityLabelComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9263    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
9264      res.getNumber().add(parseUnsignedInt(xpp));
9265    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
9266      res.setClassification(parseCoding(xpp));
9267    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9268      res.getCategory().add(parseCoding(xpp));
9269    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("control")) {
9270      res.getControl().add(parseCoding(xpp));
9271    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9272      return false;
9273    }
9274    return true;
9275  }
9276
9277  protected Contract.ContractOfferComponent parseContractOfferComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9278    Contract.ContractOfferComponent res = new Contract.ContractOfferComponent();
9279    parseElementAttributes(xpp, res);
9280    next(xpp);
9281    int eventType = nextNoWhitespace(xpp);
9282    while (eventType != XmlPullParser.END_TAG) {
9283    if (!parseContractOfferComponentContent(eventType, xpp, res))
9284        unknownContent(xpp);
9285      eventType = nextNoWhitespace(xpp);
9286    }
9287    next(xpp);
9288    parseElementClose(res);
9289    return res;
9290  }
9291
9292  protected boolean parseContractOfferComponentContent(int eventType, XmlPullParser xpp, Contract.ContractOfferComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9293    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9294      res.getIdentifier().add(parseIdentifier(xpp));
9295    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
9296      res.getParty().add(parseContractPartyComponent(xpp));
9297    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
9298      res.setTopic(parseReference(xpp));
9299    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9300      res.setType(parseCodeableConcept(xpp));
9301    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decision")) {
9302      res.setDecision(parseCodeableConcept(xpp));
9303    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decisionMode")) {
9304      res.getDecisionMode().add(parseCodeableConcept(xpp));
9305    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
9306      res.getAnswer().add(parseContractAnswerComponent(xpp));
9307    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
9308      res.setTextElement(parseString(xpp));
9309    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
9310      res.getLinkId().add(parseString(xpp));
9311    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
9312      res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
9313    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9314      return false;
9315    }
9316    return true;
9317  }
9318
9319  protected Contract.ContractPartyComponent parseContractPartyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9320    Contract.ContractPartyComponent res = new Contract.ContractPartyComponent();
9321    parseElementAttributes(xpp, res);
9322    next(xpp);
9323    int eventType = nextNoWhitespace(xpp);
9324    while (eventType != XmlPullParser.END_TAG) {
9325    if (!parseContractPartyComponentContent(eventType, xpp, res))
9326        unknownContent(xpp);
9327      eventType = nextNoWhitespace(xpp);
9328    }
9329    next(xpp);
9330    parseElementClose(res);
9331    return res;
9332  }
9333
9334  protected boolean parseContractPartyComponentContent(int eventType, XmlPullParser xpp, Contract.ContractPartyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9335    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
9336      res.getReference().add(parseReference(xpp));
9337    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
9338      res.setRole(parseCodeableConcept(xpp));
9339    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9340      return false;
9341    }
9342    return true;
9343  }
9344
9345  protected Contract.AnswerComponent parseContractAnswerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9346    Contract.AnswerComponent res = new Contract.AnswerComponent();
9347    parseElementAttributes(xpp, res);
9348    next(xpp);
9349    int eventType = nextNoWhitespace(xpp);
9350    while (eventType != XmlPullParser.END_TAG) {
9351    if (!parseContractAnswerComponentContent(eventType, xpp, res))
9352        unknownContent(xpp);
9353      eventType = nextNoWhitespace(xpp);
9354    }
9355    next(xpp);
9356    parseElementClose(res);
9357    return res;
9358  }
9359
9360  protected boolean parseContractAnswerComponentContent(int eventType, XmlPullParser xpp, Contract.AnswerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9361    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
9362      res.setValue(parseType("value", xpp));
9363    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9364      return false;
9365    }
9366    return true;
9367  }
9368
9369  protected Contract.ContractAssetComponent parseContractAssetComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9370    Contract.ContractAssetComponent res = new Contract.ContractAssetComponent();
9371    parseElementAttributes(xpp, res);
9372    next(xpp);
9373    int eventType = nextNoWhitespace(xpp);
9374    while (eventType != XmlPullParser.END_TAG) {
9375    if (!parseContractAssetComponentContent(eventType, xpp, res))
9376        unknownContent(xpp);
9377      eventType = nextNoWhitespace(xpp);
9378    }
9379    next(xpp);
9380    parseElementClose(res);
9381    return res;
9382  }
9383
9384  protected boolean parseContractAssetComponentContent(int eventType, XmlPullParser xpp, Contract.ContractAssetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9385    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
9386      res.setScope(parseCodeableConcept(xpp));
9387    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9388      res.getType().add(parseCodeableConcept(xpp));
9389    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeReference")) {
9390      res.getTypeReference().add(parseReference(xpp));
9391    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
9392      res.getSubtype().add(parseCodeableConcept(xpp));
9393    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
9394      res.setRelationship(parseCoding(xpp));
9395    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
9396      res.getContext().add(parseContractAssetContextComponent(xpp));
9397    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
9398      res.setConditionElement(parseString(xpp));
9399    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodType")) {
9400      res.getPeriodType().add(parseCodeableConcept(xpp));
9401    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9402      res.getPeriod().add(parsePeriod(xpp));
9403    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usePeriod")) {
9404      res.getUsePeriod().add(parsePeriod(xpp));
9405    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
9406      res.setTextElement(parseString(xpp));
9407    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
9408      res.getLinkId().add(parseString(xpp));
9409    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
9410      res.getAnswer().add(parseContractAnswerComponent(xpp));
9411    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
9412      res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
9413    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valuedItem")) {
9414      res.getValuedItem().add(parseContractValuedItemComponent(xpp));
9415    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9416      return false;
9417    }
9418    return true;
9419  }
9420
9421  protected Contract.AssetContextComponent parseContractAssetContextComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9422    Contract.AssetContextComponent res = new Contract.AssetContextComponent();
9423    parseElementAttributes(xpp, res);
9424    next(xpp);
9425    int eventType = nextNoWhitespace(xpp);
9426    while (eventType != XmlPullParser.END_TAG) {
9427    if (!parseContractAssetContextComponentContent(eventType, xpp, res))
9428        unknownContent(xpp);
9429      eventType = nextNoWhitespace(xpp);
9430    }
9431    next(xpp);
9432    parseElementClose(res);
9433    return res;
9434  }
9435
9436  protected boolean parseContractAssetContextComponentContent(int eventType, XmlPullParser xpp, Contract.AssetContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9437    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
9438      res.setReference(parseReference(xpp));
9439    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
9440      res.getCode().add(parseCodeableConcept(xpp));
9441    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
9442      res.setTextElement(parseString(xpp));
9443    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9444      return false;
9445    }
9446    return true;
9447  }
9448
9449  protected Contract.ValuedItemComponent parseContractValuedItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9450    Contract.ValuedItemComponent res = new Contract.ValuedItemComponent();
9451    parseElementAttributes(xpp, res);
9452    next(xpp);
9453    int eventType = nextNoWhitespace(xpp);
9454    while (eventType != XmlPullParser.END_TAG) {
9455    if (!parseContractValuedItemComponentContent(eventType, xpp, res))
9456        unknownContent(xpp);
9457      eventType = nextNoWhitespace(xpp);
9458    }
9459    next(xpp);
9460    parseElementClose(res);
9461    return res;
9462  }
9463
9464  protected boolean parseContractValuedItemComponentContent(int eventType, XmlPullParser xpp, Contract.ValuedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9465    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "entity")) {
9466      res.setEntity(parseType("entity", xpp));
9467    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9468      res.setIdentifier(parseIdentifier(xpp));
9469    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveTime")) {
9470      res.setEffectiveTimeElement(parseDateTime(xpp));
9471    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
9472      res.setQuantity(parseQuantity(xpp));
9473    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
9474      res.setUnitPrice(parseMoney(xpp));
9475    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
9476      res.setFactorElement(parseDecimal(xpp));
9477    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
9478      res.setPointsElement(parseDecimal(xpp));
9479    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
9480      res.setNet(parseMoney(xpp));
9481    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
9482      res.setPaymentElement(parseString(xpp));
9483    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentDate")) {
9484      res.setPaymentDateElement(parseDateTime(xpp));
9485    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
9486      res.setResponsible(parseReference(xpp));
9487    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
9488      res.setRecipient(parseReference(xpp));
9489    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
9490      res.getLinkId().add(parseString(xpp));
9491    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
9492      res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
9493    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9494      return false;
9495    }
9496    return true;
9497  }
9498
9499  protected Contract.ActionComponent parseContractActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9500    Contract.ActionComponent res = new Contract.ActionComponent();
9501    parseElementAttributes(xpp, res);
9502    next(xpp);
9503    int eventType = nextNoWhitespace(xpp);
9504    while (eventType != XmlPullParser.END_TAG) {
9505    if (!parseContractActionComponentContent(eventType, xpp, res))
9506        unknownContent(xpp);
9507      eventType = nextNoWhitespace(xpp);
9508    }
9509    next(xpp);
9510    parseElementClose(res);
9511    return res;
9512  }
9513
9514  protected boolean parseContractActionComponentContent(int eventType, XmlPullParser xpp, Contract.ActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9515    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
9516      res.setDoNotPerformElement(parseBoolean(xpp));
9517    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9518      res.setType(parseCodeableConcept(xpp));
9519    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
9520      res.getSubject().add(parseContractActionSubjectComponent(xpp));
9521    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
9522      res.setIntent(parseCodeableConcept(xpp));
9523    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
9524      res.getLinkId().add(parseString(xpp));
9525    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9526      res.setStatus(parseCodeableConcept(xpp));
9527    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
9528      res.setContext(parseReference(xpp));
9529    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextLinkId")) {
9530      res.getContextLinkId().add(parseString(xpp));
9531    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
9532      res.setOccurrence(parseType("occurrence", xpp));
9533    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
9534      res.getRequester().add(parseReference(xpp));
9535    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requesterLinkId")) {
9536      res.getRequesterLinkId().add(parseString(xpp));
9537    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
9538      res.getPerformerType().add(parseCodeableConcept(xpp));
9539    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerRole")) {
9540      res.setPerformerRole(parseCodeableConcept(xpp));
9541    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
9542      res.setPerformer(parseReference(xpp));
9543    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerLinkId")) {
9544      res.getPerformerLinkId().add(parseString(xpp));
9545    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
9546      res.getReason().add(parseCodeableReference(xpp));
9547    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonLinkId")) {
9548      res.getReasonLinkId().add(parseString(xpp));
9549    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9550      res.getNote().add(parseAnnotation(xpp));
9551    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
9552      res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
9553    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9554      return false;
9555    }
9556    return true;
9557  }
9558
9559  protected Contract.ActionSubjectComponent parseContractActionSubjectComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9560    Contract.ActionSubjectComponent res = new Contract.ActionSubjectComponent();
9561    parseElementAttributes(xpp, res);
9562    next(xpp);
9563    int eventType = nextNoWhitespace(xpp);
9564    while (eventType != XmlPullParser.END_TAG) {
9565    if (!parseContractActionSubjectComponentContent(eventType, xpp, res))
9566        unknownContent(xpp);
9567      eventType = nextNoWhitespace(xpp);
9568    }
9569    next(xpp);
9570    parseElementClose(res);
9571    return res;
9572  }
9573
9574  protected boolean parseContractActionSubjectComponentContent(int eventType, XmlPullParser xpp, Contract.ActionSubjectComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9575    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
9576      res.getReference().add(parseReference(xpp));
9577    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
9578      res.setRole(parseCodeableConcept(xpp));
9579    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9580      return false;
9581    }
9582    return true;
9583  }
9584
9585  protected Contract.SignatoryComponent parseContractSignatoryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9586    Contract.SignatoryComponent res = new Contract.SignatoryComponent();
9587    parseElementAttributes(xpp, res);
9588    next(xpp);
9589    int eventType = nextNoWhitespace(xpp);
9590    while (eventType != XmlPullParser.END_TAG) {
9591    if (!parseContractSignatoryComponentContent(eventType, xpp, res))
9592        unknownContent(xpp);
9593      eventType = nextNoWhitespace(xpp);
9594    }
9595    next(xpp);
9596    parseElementClose(res);
9597    return res;
9598  }
9599
9600  protected boolean parseContractSignatoryComponentContent(int eventType, XmlPullParser xpp, Contract.SignatoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9601    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9602      res.setType(parseCoding(xpp));
9603    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
9604      res.setParty(parseReference(xpp));
9605    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
9606      res.getSignature().add(parseSignature(xpp));
9607    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9608      return false;
9609    }
9610    return true;
9611  }
9612
9613  protected Contract.FriendlyLanguageComponent parseContractFriendlyLanguageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9614    Contract.FriendlyLanguageComponent res = new Contract.FriendlyLanguageComponent();
9615    parseElementAttributes(xpp, res);
9616    next(xpp);
9617    int eventType = nextNoWhitespace(xpp);
9618    while (eventType != XmlPullParser.END_TAG) {
9619    if (!parseContractFriendlyLanguageComponentContent(eventType, xpp, res))
9620        unknownContent(xpp);
9621      eventType = nextNoWhitespace(xpp);
9622    }
9623    next(xpp);
9624    parseElementClose(res);
9625    return res;
9626  }
9627
9628  protected boolean parseContractFriendlyLanguageComponentContent(int eventType, XmlPullParser xpp, Contract.FriendlyLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9629    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
9630      res.setContent(parseType("content", xpp));
9631    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9632      return false;
9633    }
9634    return true;
9635  }
9636
9637  protected Contract.LegalLanguageComponent parseContractLegalLanguageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9638    Contract.LegalLanguageComponent res = new Contract.LegalLanguageComponent();
9639    parseElementAttributes(xpp, res);
9640    next(xpp);
9641    int eventType = nextNoWhitespace(xpp);
9642    while (eventType != XmlPullParser.END_TAG) {
9643    if (!parseContractLegalLanguageComponentContent(eventType, xpp, res))
9644        unknownContent(xpp);
9645      eventType = nextNoWhitespace(xpp);
9646    }
9647    next(xpp);
9648    parseElementClose(res);
9649    return res;
9650  }
9651
9652  protected boolean parseContractLegalLanguageComponentContent(int eventType, XmlPullParser xpp, Contract.LegalLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9653    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
9654      res.setContent(parseType("content", xpp));
9655    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9656      return false;
9657    }
9658    return true;
9659  }
9660
9661  protected Contract.ComputableLanguageComponent parseContractComputableLanguageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9662    Contract.ComputableLanguageComponent res = new Contract.ComputableLanguageComponent();
9663    parseElementAttributes(xpp, res);
9664    next(xpp);
9665    int eventType = nextNoWhitespace(xpp);
9666    while (eventType != XmlPullParser.END_TAG) {
9667    if (!parseContractComputableLanguageComponentContent(eventType, xpp, res))
9668        unknownContent(xpp);
9669      eventType = nextNoWhitespace(xpp);
9670    }
9671    next(xpp);
9672    parseElementClose(res);
9673    return res;
9674  }
9675
9676  protected boolean parseContractComputableLanguageComponentContent(int eventType, XmlPullParser xpp, Contract.ComputableLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9677    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
9678      res.setContent(parseType("content", xpp));
9679    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9680      return false;
9681    }
9682    return true;
9683  }
9684
9685  protected Coverage parseCoverage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9686    Coverage res = new Coverage();
9687    parseResourceAttributes(xpp, res);
9688    next(xpp);
9689    int eventType = nextNoWhitespace(xpp);
9690    while (eventType != XmlPullParser.END_TAG) {
9691    if (!parseCoverageContent(eventType, xpp, res))
9692        unknownContent(xpp);
9693      eventType = nextNoWhitespace(xpp);
9694    }
9695    next(xpp);
9696    parseElementClose(res);
9697    return res;
9698  }
9699
9700  protected boolean parseCoverageContent(int eventType, XmlPullParser xpp, Coverage res) throws XmlPullParserException, IOException, FHIRFormatError {
9701    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9702      res.getIdentifier().add(parseIdentifier(xpp));
9703    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9704      res.setStatusElement(parseEnumeration(xpp, Enumerations.FinancialResourceStatusCodes.NULL, new Enumerations.FinancialResourceStatusCodesEnumFactory()));
9705    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
9706      res.setKindElement(parseEnumeration(xpp, Coverage.Kind.NULL, new Coverage.KindEnumFactory()));
9707    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentBy")) {
9708      res.getPaymentBy().add(parseCoveragePaymentByComponent(xpp));
9709    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9710      res.setType(parseCodeableConcept(xpp));
9711    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyHolder")) {
9712      res.setPolicyHolder(parseReference(xpp));
9713    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriber")) {
9714      res.setSubscriber(parseReference(xpp));
9715    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriberId")) {
9716      res.getSubscriberId().add(parseIdentifier(xpp));
9717    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("beneficiary")) {
9718      res.setBeneficiary(parseReference(xpp));
9719    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
9720      res.setDependentElement(parseString(xpp));
9721    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
9722      res.setRelationship(parseCodeableConcept(xpp));
9723    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9724      res.setPeriod(parsePeriod(xpp));
9725    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
9726      res.setInsurer(parseReference(xpp));
9727    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
9728      res.getClass_().add(parseCoverageClassComponent(xpp));
9729    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("order")) {
9730      res.setOrderElement(parsePositiveInt(xpp));
9731    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
9732      res.setNetworkElement(parseString(xpp));
9733    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("costToBeneficiary")) {
9734      res.getCostToBeneficiary().add(parseCoverageCostToBeneficiaryComponent(xpp));
9735    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subrogation")) {
9736      res.setSubrogationElement(parseBoolean(xpp));
9737    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contract")) {
9738      res.getContract().add(parseReference(xpp));
9739    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurancePlan")) {
9740      res.setInsurancePlan(parseReference(xpp));
9741    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
9742      return false;
9743    }
9744    return true;
9745  }
9746
9747  protected Coverage.CoveragePaymentByComponent parseCoveragePaymentByComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9748    Coverage.CoveragePaymentByComponent res = new Coverage.CoveragePaymentByComponent();
9749    parseElementAttributes(xpp, res);
9750    next(xpp);
9751    int eventType = nextNoWhitespace(xpp);
9752    while (eventType != XmlPullParser.END_TAG) {
9753    if (!parseCoveragePaymentByComponentContent(eventType, xpp, res))
9754        unknownContent(xpp);
9755      eventType = nextNoWhitespace(xpp);
9756    }
9757    next(xpp);
9758    parseElementClose(res);
9759    return res;
9760  }
9761
9762  protected boolean parseCoveragePaymentByComponentContent(int eventType, XmlPullParser xpp, Coverage.CoveragePaymentByComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9763    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
9764      res.setParty(parseReference(xpp));
9765    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsibility")) {
9766      res.setResponsibilityElement(parseString(xpp));
9767    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9768      return false;
9769    }
9770    return true;
9771  }
9772
9773  protected Coverage.ClassComponent parseCoverageClassComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9774    Coverage.ClassComponent res = new Coverage.ClassComponent();
9775    parseElementAttributes(xpp, res);
9776    next(xpp);
9777    int eventType = nextNoWhitespace(xpp);
9778    while (eventType != XmlPullParser.END_TAG) {
9779    if (!parseCoverageClassComponentContent(eventType, xpp, res))
9780        unknownContent(xpp);
9781      eventType = nextNoWhitespace(xpp);
9782    }
9783    next(xpp);
9784    parseElementClose(res);
9785    return res;
9786  }
9787
9788  protected boolean parseCoverageClassComponentContent(int eventType, XmlPullParser xpp, Coverage.ClassComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9789    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9790      res.setType(parseCodeableConcept(xpp));
9791    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
9792      res.setValue(parseIdentifier(xpp));
9793    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9794      res.setNameElement(parseString(xpp));
9795    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9796      return false;
9797    }
9798    return true;
9799  }
9800
9801  protected Coverage.CostToBeneficiaryComponent parseCoverageCostToBeneficiaryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9802    Coverage.CostToBeneficiaryComponent res = new Coverage.CostToBeneficiaryComponent();
9803    parseElementAttributes(xpp, res);
9804    next(xpp);
9805    int eventType = nextNoWhitespace(xpp);
9806    while (eventType != XmlPullParser.END_TAG) {
9807    if (!parseCoverageCostToBeneficiaryComponentContent(eventType, xpp, res))
9808        unknownContent(xpp);
9809      eventType = nextNoWhitespace(xpp);
9810    }
9811    next(xpp);
9812    parseElementClose(res);
9813    return res;
9814  }
9815
9816  protected boolean parseCoverageCostToBeneficiaryComponentContent(int eventType, XmlPullParser xpp, Coverage.CostToBeneficiaryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9817    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9818      res.setType(parseCodeableConcept(xpp));
9819    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
9820      res.setCategory(parseCodeableConcept(xpp));
9821    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
9822      res.setNetwork(parseCodeableConcept(xpp));
9823    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
9824      res.setUnit(parseCodeableConcept(xpp));
9825    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
9826      res.setTerm(parseCodeableConcept(xpp));
9827    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
9828      res.setValue(parseType("value", xpp));
9829    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exception")) {
9830      res.getException().add(parseCoverageExemptionComponent(xpp));
9831    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9832      return false;
9833    }
9834    return true;
9835  }
9836
9837  protected Coverage.ExemptionComponent parseCoverageExemptionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9838    Coverage.ExemptionComponent res = new Coverage.ExemptionComponent();
9839    parseElementAttributes(xpp, res);
9840    next(xpp);
9841    int eventType = nextNoWhitespace(xpp);
9842    while (eventType != XmlPullParser.END_TAG) {
9843    if (!parseCoverageExemptionComponentContent(eventType, xpp, res))
9844        unknownContent(xpp);
9845      eventType = nextNoWhitespace(xpp);
9846    }
9847    next(xpp);
9848    parseElementClose(res);
9849    return res;
9850  }
9851
9852  protected boolean parseCoverageExemptionComponentContent(int eventType, XmlPullParser xpp, Coverage.ExemptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9853    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9854      res.setType(parseCodeableConcept(xpp));
9855    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9856      res.setPeriod(parsePeriod(xpp));
9857    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9858      return false;
9859    }
9860    return true;
9861  }
9862
9863  protected CoverageEligibilityRequest parseCoverageEligibilityRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9864    CoverageEligibilityRequest res = new CoverageEligibilityRequest();
9865    parseResourceAttributes(xpp, res);
9866    next(xpp);
9867    int eventType = nextNoWhitespace(xpp);
9868    while (eventType != XmlPullParser.END_TAG) {
9869    if (!parseCoverageEligibilityRequestContent(eventType, xpp, res))
9870        unknownContent(xpp);
9871      eventType = nextNoWhitespace(xpp);
9872    }
9873    next(xpp);
9874    parseElementClose(res);
9875    return res;
9876  }
9877
9878  protected boolean parseCoverageEligibilityRequestContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
9879    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9880      res.getIdentifier().add(parseIdentifier(xpp));
9881    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9882      res.setStatusElement(parseEnumeration(xpp, Enumerations.FinancialResourceStatusCodes.NULL, new Enumerations.FinancialResourceStatusCodesEnumFactory()));
9883    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
9884      res.setPriority(parseCodeableConcept(xpp));
9885    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
9886      res.getPurpose().add(parseEnumeration(xpp, CoverageEligibilityRequest.EligibilityRequestPurpose.NULL, new CoverageEligibilityRequest.EligibilityRequestPurposeEnumFactory()));
9887    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9888      res.setPatient(parseReference(xpp));
9889    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
9890      res.getEvent().add(parseCoverageEligibilityRequestEventComponent(xpp));
9891    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
9892      res.setServiced(parseType("serviced", xpp));
9893    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
9894      res.setCreatedElement(parseDateTime(xpp));
9895    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
9896      res.setEnterer(parseReference(xpp));
9897    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
9898      res.setProvider(parseReference(xpp));
9899    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
9900      res.setInsurer(parseReference(xpp));
9901    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
9902      res.setFacility(parseReference(xpp));
9903    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
9904      res.getSupportingInfo().add(parseCoverageEligibilityRequestSupportingInformationComponent(xpp));
9905    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
9906      res.getInsurance().add(parseCoverageEligibilityRequestInsuranceComponent(xpp));
9907    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
9908      res.getItem().add(parseCoverageEligibilityRequestDetailsComponent(xpp));
9909    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
9910      return false;
9911    }
9912    return true;
9913  }
9914
9915  protected CoverageEligibilityRequest.CoverageEligibilityRequestEventComponent parseCoverageEligibilityRequestEventComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9916    CoverageEligibilityRequest.CoverageEligibilityRequestEventComponent res = new CoverageEligibilityRequest.CoverageEligibilityRequestEventComponent();
9917    parseElementAttributes(xpp, res);
9918    next(xpp);
9919    int eventType = nextNoWhitespace(xpp);
9920    while (eventType != XmlPullParser.END_TAG) {
9921    if (!parseCoverageEligibilityRequestEventComponentContent(eventType, xpp, res))
9922        unknownContent(xpp);
9923      eventType = nextNoWhitespace(xpp);
9924    }
9925    next(xpp);
9926    parseElementClose(res);
9927    return res;
9928  }
9929
9930  protected boolean parseCoverageEligibilityRequestEventComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest.CoverageEligibilityRequestEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9931    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9932      res.setType(parseCodeableConcept(xpp));
9933    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "when")) {
9934      res.setWhen(parseType("when", xpp));
9935    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9936      return false;
9937    }
9938    return true;
9939  }
9940
9941  protected CoverageEligibilityRequest.SupportingInformationComponent parseCoverageEligibilityRequestSupportingInformationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9942    CoverageEligibilityRequest.SupportingInformationComponent res = new CoverageEligibilityRequest.SupportingInformationComponent();
9943    parseElementAttributes(xpp, res);
9944    next(xpp);
9945    int eventType = nextNoWhitespace(xpp);
9946    while (eventType != XmlPullParser.END_TAG) {
9947    if (!parseCoverageEligibilityRequestSupportingInformationComponentContent(eventType, xpp, res))
9948        unknownContent(xpp);
9949      eventType = nextNoWhitespace(xpp);
9950    }
9951    next(xpp);
9952    parseElementClose(res);
9953    return res;
9954  }
9955
9956  protected boolean parseCoverageEligibilityRequestSupportingInformationComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest.SupportingInformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9957    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
9958      res.setSequenceElement(parsePositiveInt(xpp));
9959    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("information")) {
9960      res.setInformation(parseReference(xpp));
9961    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesToAll")) {
9962      res.setAppliesToAllElement(parseBoolean(xpp));
9963    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9964      return false;
9965    }
9966    return true;
9967  }
9968
9969  protected CoverageEligibilityRequest.InsuranceComponent parseCoverageEligibilityRequestInsuranceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9970    CoverageEligibilityRequest.InsuranceComponent res = new CoverageEligibilityRequest.InsuranceComponent();
9971    parseElementAttributes(xpp, res);
9972    next(xpp);
9973    int eventType = nextNoWhitespace(xpp);
9974    while (eventType != XmlPullParser.END_TAG) {
9975    if (!parseCoverageEligibilityRequestInsuranceComponentContent(eventType, xpp, res))
9976        unknownContent(xpp);
9977      eventType = nextNoWhitespace(xpp);
9978    }
9979    next(xpp);
9980    parseElementClose(res);
9981    return res;
9982  }
9983
9984  protected boolean parseCoverageEligibilityRequestInsuranceComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9985    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
9986      res.setFocalElement(parseBoolean(xpp));
9987    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
9988      res.setCoverage(parseReference(xpp));
9989    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
9990      res.setBusinessArrangementElement(parseString(xpp));
9991    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
9992      return false;
9993    }
9994    return true;
9995  }
9996
9997  protected CoverageEligibilityRequest.DetailsComponent parseCoverageEligibilityRequestDetailsComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9998    CoverageEligibilityRequest.DetailsComponent res = new CoverageEligibilityRequest.DetailsComponent();
9999    parseElementAttributes(xpp, res);
10000    next(xpp);
10001    int eventType = nextNoWhitespace(xpp);
10002    while (eventType != XmlPullParser.END_TAG) {
10003    if (!parseCoverageEligibilityRequestDetailsComponentContent(eventType, xpp, res))
10004        unknownContent(xpp);
10005      eventType = nextNoWhitespace(xpp);
10006    }
10007    next(xpp);
10008    parseElementClose(res);
10009    return res;
10010  }
10011
10012  protected boolean parseCoverageEligibilityRequestDetailsComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest.DetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10013    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfoSequence")) {
10014      res.getSupportingInfoSequence().add(parsePositiveInt(xpp));
10015    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10016      res.setCategory(parseCodeableConcept(xpp));
10017    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
10018      res.setProductOrService(parseCodeableConcept(xpp));
10019    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10020      res.getModifier().add(parseCodeableConcept(xpp));
10021    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
10022      res.setProvider(parseReference(xpp));
10023    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10024      res.setQuantity(parseQuantity(xpp));
10025    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10026      res.setUnitPrice(parseMoney(xpp));
10027    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
10028      res.setFacility(parseReference(xpp));
10029    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
10030      res.getDiagnosis().add(parseCoverageEligibilityRequestDiagnosisComponent(xpp));
10031    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
10032      res.getDetail().add(parseReference(xpp));
10033    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10034      return false;
10035    }
10036    return true;
10037  }
10038
10039  protected CoverageEligibilityRequest.DiagnosisComponent parseCoverageEligibilityRequestDiagnosisComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10040    CoverageEligibilityRequest.DiagnosisComponent res = new CoverageEligibilityRequest.DiagnosisComponent();
10041    parseElementAttributes(xpp, res);
10042    next(xpp);
10043    int eventType = nextNoWhitespace(xpp);
10044    while (eventType != XmlPullParser.END_TAG) {
10045    if (!parseCoverageEligibilityRequestDiagnosisComponentContent(eventType, xpp, res))
10046        unknownContent(xpp);
10047      eventType = nextNoWhitespace(xpp);
10048    }
10049    next(xpp);
10050    parseElementClose(res);
10051    return res;
10052  }
10053
10054  protected boolean parseCoverageEligibilityRequestDiagnosisComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10055    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
10056      res.setDiagnosis(parseType("diagnosis", xpp));
10057    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10058      return false;
10059    }
10060    return true;
10061  }
10062
10063  protected CoverageEligibilityResponse parseCoverageEligibilityResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10064    CoverageEligibilityResponse res = new CoverageEligibilityResponse();
10065    parseResourceAttributes(xpp, res);
10066    next(xpp);
10067    int eventType = nextNoWhitespace(xpp);
10068    while (eventType != XmlPullParser.END_TAG) {
10069    if (!parseCoverageEligibilityResponseContent(eventType, xpp, res))
10070        unknownContent(xpp);
10071      eventType = nextNoWhitespace(xpp);
10072    }
10073    next(xpp);
10074    parseElementClose(res);
10075    return res;
10076  }
10077
10078  protected boolean parseCoverageEligibilityResponseContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
10079    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10080      res.getIdentifier().add(parseIdentifier(xpp));
10081    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10082      res.setStatusElement(parseEnumeration(xpp, Enumerations.FinancialResourceStatusCodes.NULL, new Enumerations.FinancialResourceStatusCodesEnumFactory()));
10083    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
10084      res.getPurpose().add(parseEnumeration(xpp, CoverageEligibilityResponse.EligibilityResponsePurpose.NULL, new CoverageEligibilityResponse.EligibilityResponsePurposeEnumFactory()));
10085    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
10086      res.setPatient(parseReference(xpp));
10087    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
10088      res.getEvent().add(parseCoverageEligibilityResponseEventComponent(xpp));
10089    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
10090      res.setServiced(parseType("serviced", xpp));
10091    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
10092      res.setCreatedElement(parseDateTime(xpp));
10093    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
10094      res.setRequestor(parseReference(xpp));
10095    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
10096      res.setRequest(parseReference(xpp));
10097    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
10098      res.setOutcomeElement(parseEnumeration(xpp, CoverageEligibilityResponse.EligibilityOutcome.NULL, new CoverageEligibilityResponse.EligibilityOutcomeEnumFactory()));
10099    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
10100      res.setDispositionElement(parseString(xpp));
10101    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
10102      res.setInsurer(parseReference(xpp));
10103    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
10104      res.getInsurance().add(parseCoverageEligibilityResponseInsuranceComponent(xpp));
10105    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
10106      res.setPreAuthRefElement(parseString(xpp));
10107    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
10108      res.setForm(parseCodeableConcept(xpp));
10109    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
10110      res.getError().add(parseCoverageEligibilityResponseErrorsComponent(xpp));
10111    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
10112      return false;
10113    }
10114    return true;
10115  }
10116
10117  protected CoverageEligibilityResponse.CoverageEligibilityResponseEventComponent parseCoverageEligibilityResponseEventComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10118    CoverageEligibilityResponse.CoverageEligibilityResponseEventComponent res = new CoverageEligibilityResponse.CoverageEligibilityResponseEventComponent();
10119    parseElementAttributes(xpp, res);
10120    next(xpp);
10121    int eventType = nextNoWhitespace(xpp);
10122    while (eventType != XmlPullParser.END_TAG) {
10123    if (!parseCoverageEligibilityResponseEventComponentContent(eventType, xpp, res))
10124        unknownContent(xpp);
10125      eventType = nextNoWhitespace(xpp);
10126    }
10127    next(xpp);
10128    parseElementClose(res);
10129    return res;
10130  }
10131
10132  protected boolean parseCoverageEligibilityResponseEventComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse.CoverageEligibilityResponseEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10133    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10134      res.setType(parseCodeableConcept(xpp));
10135    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "when")) {
10136      res.setWhen(parseType("when", xpp));
10137    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10138      return false;
10139    }
10140    return true;
10141  }
10142
10143  protected CoverageEligibilityResponse.InsuranceComponent parseCoverageEligibilityResponseInsuranceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10144    CoverageEligibilityResponse.InsuranceComponent res = new CoverageEligibilityResponse.InsuranceComponent();
10145    parseElementAttributes(xpp, res);
10146    next(xpp);
10147    int eventType = nextNoWhitespace(xpp);
10148    while (eventType != XmlPullParser.END_TAG) {
10149    if (!parseCoverageEligibilityResponseInsuranceComponentContent(eventType, xpp, res))
10150        unknownContent(xpp);
10151      eventType = nextNoWhitespace(xpp);
10152    }
10153    next(xpp);
10154    parseElementClose(res);
10155    return res;
10156  }
10157
10158  protected boolean parseCoverageEligibilityResponseInsuranceComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10159    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
10160      res.setCoverage(parseReference(xpp));
10161    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inforce")) {
10162      res.setInforceElement(parseBoolean(xpp));
10163    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitPeriod")) {
10164      res.setBenefitPeriod(parsePeriod(xpp));
10165    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
10166      res.getItem().add(parseCoverageEligibilityResponseItemsComponent(xpp));
10167    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10168      return false;
10169    }
10170    return true;
10171  }
10172
10173  protected CoverageEligibilityResponse.ItemsComponent parseCoverageEligibilityResponseItemsComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10174    CoverageEligibilityResponse.ItemsComponent res = new CoverageEligibilityResponse.ItemsComponent();
10175    parseElementAttributes(xpp, res);
10176    next(xpp);
10177    int eventType = nextNoWhitespace(xpp);
10178    while (eventType != XmlPullParser.END_TAG) {
10179    if (!parseCoverageEligibilityResponseItemsComponentContent(eventType, xpp, res))
10180        unknownContent(xpp);
10181      eventType = nextNoWhitespace(xpp);
10182    }
10183    next(xpp);
10184    parseElementClose(res);
10185    return res;
10186  }
10187
10188  protected boolean parseCoverageEligibilityResponseItemsComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse.ItemsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10189    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10190      res.setCategory(parseCodeableConcept(xpp));
10191    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
10192      res.setProductOrService(parseCodeableConcept(xpp));
10193    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10194      res.getModifier().add(parseCodeableConcept(xpp));
10195    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
10196      res.setProvider(parseReference(xpp));
10197    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excluded")) {
10198      res.setExcludedElement(parseBoolean(xpp));
10199    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10200      res.setNameElement(parseString(xpp));
10201    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10202      res.setDescriptionElement(parseString(xpp));
10203    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
10204      res.setNetwork(parseCodeableConcept(xpp));
10205    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
10206      res.setUnit(parseCodeableConcept(xpp));
10207    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
10208      res.setTerm(parseCodeableConcept(xpp));
10209    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefit")) {
10210      res.getBenefit().add(parseCoverageEligibilityResponseBenefitComponent(xpp));
10211    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizationRequired")) {
10212      res.setAuthorizationRequiredElement(parseBoolean(xpp));
10213    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizationSupporting")) {
10214      res.getAuthorizationSupporting().add(parseCodeableConcept(xpp));
10215    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizationUrl")) {
10216      res.setAuthorizationUrlElement(parseUri(xpp));
10217    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10218      return false;
10219    }
10220    return true;
10221  }
10222
10223  protected CoverageEligibilityResponse.BenefitComponent parseCoverageEligibilityResponseBenefitComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10224    CoverageEligibilityResponse.BenefitComponent res = new CoverageEligibilityResponse.BenefitComponent();
10225    parseElementAttributes(xpp, res);
10226    next(xpp);
10227    int eventType = nextNoWhitespace(xpp);
10228    while (eventType != XmlPullParser.END_TAG) {
10229    if (!parseCoverageEligibilityResponseBenefitComponentContent(eventType, xpp, res))
10230        unknownContent(xpp);
10231      eventType = nextNoWhitespace(xpp);
10232    }
10233    next(xpp);
10234    parseElementClose(res);
10235    return res;
10236  }
10237
10238  protected boolean parseCoverageEligibilityResponseBenefitComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse.BenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10239    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10240      res.setType(parseCodeableConcept(xpp));
10241    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
10242      res.setAllowed(parseType("allowed", xpp));
10243    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "used")) {
10244      res.setUsed(parseType("used", xpp));
10245    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10246      return false;
10247    }
10248    return true;
10249  }
10250
10251  protected CoverageEligibilityResponse.ErrorsComponent parseCoverageEligibilityResponseErrorsComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10252    CoverageEligibilityResponse.ErrorsComponent res = new CoverageEligibilityResponse.ErrorsComponent();
10253    parseElementAttributes(xpp, res);
10254    next(xpp);
10255    int eventType = nextNoWhitespace(xpp);
10256    while (eventType != XmlPullParser.END_TAG) {
10257    if (!parseCoverageEligibilityResponseErrorsComponentContent(eventType, xpp, res))
10258        unknownContent(xpp);
10259      eventType = nextNoWhitespace(xpp);
10260    }
10261    next(xpp);
10262    parseElementClose(res);
10263    return res;
10264  }
10265
10266  protected boolean parseCoverageEligibilityResponseErrorsComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse.ErrorsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10267    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10268      res.setCode(parseCodeableConcept(xpp));
10269    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
10270      res.getExpression().add(parseString(xpp));
10271    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10272      return false;
10273    }
10274    return true;
10275  }
10276
10277  protected DetectedIssue parseDetectedIssue(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10278    DetectedIssue res = new DetectedIssue();
10279    parseResourceAttributes(xpp, res);
10280    next(xpp);
10281    int eventType = nextNoWhitespace(xpp);
10282    while (eventType != XmlPullParser.END_TAG) {
10283    if (!parseDetectedIssueContent(eventType, xpp, res))
10284        unknownContent(xpp);
10285      eventType = nextNoWhitespace(xpp);
10286    }
10287    next(xpp);
10288    parseElementClose(res);
10289    return res;
10290  }
10291
10292  protected boolean parseDetectedIssueContent(int eventType, XmlPullParser xpp, DetectedIssue res) throws XmlPullParserException, IOException, FHIRFormatError {
10293    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10294      res.getIdentifier().add(parseIdentifier(xpp));
10295    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10296      res.setStatusElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueStatus.NULL, new DetectedIssue.DetectedIssueStatusEnumFactory()));
10297    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10298      res.getCategory().add(parseCodeableConcept(xpp));
10299    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10300      res.setCode(parseCodeableConcept(xpp));
10301    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
10302      res.setSeverityElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueSeverity.NULL, new DetectedIssue.DetectedIssueSeverityEnumFactory()));
10303    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10304      res.setSubject(parseReference(xpp));
10305    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
10306      res.setEncounter(parseReference(xpp));
10307    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "identified")) {
10308      res.setIdentified(parseType("identified", xpp));
10309    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
10310      res.setAuthor(parseReference(xpp));
10311    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicated")) {
10312      res.getImplicated().add(parseReference(xpp));
10313    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evidence")) {
10314      res.getEvidence().add(parseDetectedIssueEvidenceComponent(xpp));
10315    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
10316      res.setDetailElement(parseMarkdown(xpp));
10317    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
10318      res.setReferenceElement(parseUri(xpp));
10319    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
10320      res.getMitigation().add(parseDetectedIssueMitigationComponent(xpp));
10321    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
10322      return false;
10323    }
10324    return true;
10325  }
10326
10327  protected DetectedIssue.DetectedIssueEvidenceComponent parseDetectedIssueEvidenceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10328    DetectedIssue.DetectedIssueEvidenceComponent res = new DetectedIssue.DetectedIssueEvidenceComponent();
10329    parseElementAttributes(xpp, res);
10330    next(xpp);
10331    int eventType = nextNoWhitespace(xpp);
10332    while (eventType != XmlPullParser.END_TAG) {
10333    if (!parseDetectedIssueEvidenceComponentContent(eventType, xpp, res))
10334        unknownContent(xpp);
10335      eventType = nextNoWhitespace(xpp);
10336    }
10337    next(xpp);
10338    parseElementClose(res);
10339    return res;
10340  }
10341
10342  protected boolean parseDetectedIssueEvidenceComponentContent(int eventType, XmlPullParser xpp, DetectedIssue.DetectedIssueEvidenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10343    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10344      res.getCode().add(parseCodeableConcept(xpp));
10345    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
10346      res.getDetail().add(parseReference(xpp));
10347    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10348      return false;
10349    }
10350    return true;
10351  }
10352
10353  protected DetectedIssue.DetectedIssueMitigationComponent parseDetectedIssueMitigationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10354    DetectedIssue.DetectedIssueMitigationComponent res = new DetectedIssue.DetectedIssueMitigationComponent();
10355    parseElementAttributes(xpp, res);
10356    next(xpp);
10357    int eventType = nextNoWhitespace(xpp);
10358    while (eventType != XmlPullParser.END_TAG) {
10359    if (!parseDetectedIssueMitigationComponentContent(eventType, xpp, res))
10360        unknownContent(xpp);
10361      eventType = nextNoWhitespace(xpp);
10362    }
10363    next(xpp);
10364    parseElementClose(res);
10365    return res;
10366  }
10367
10368  protected boolean parseDetectedIssueMitigationComponentContent(int eventType, XmlPullParser xpp, DetectedIssue.DetectedIssueMitigationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10369    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
10370      res.setAction(parseCodeableConcept(xpp));
10371    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10372      res.setDateElement(parseDateTime(xpp));
10373    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
10374      res.setAuthor(parseReference(xpp));
10375    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10376      res.getNote().add(parseAnnotation(xpp));
10377    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10378      return false;
10379    }
10380    return true;
10381  }
10382
10383  protected Device parseDevice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10384    Device res = new Device();
10385    parseResourceAttributes(xpp, res);
10386    next(xpp);
10387    int eventType = nextNoWhitespace(xpp);
10388    while (eventType != XmlPullParser.END_TAG) {
10389    if (!parseDeviceContent(eventType, xpp, res))
10390        unknownContent(xpp);
10391      eventType = nextNoWhitespace(xpp);
10392    }
10393    next(xpp);
10394    parseElementClose(res);
10395    return res;
10396  }
10397
10398  protected boolean parseDeviceContent(int eventType, XmlPullParser xpp, Device res) throws XmlPullParserException, IOException, FHIRFormatError {
10399    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("displayName")) {
10402      res.setDisplayNameElement(parseString(xpp));
10403    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
10404      res.setDefinition(parseCodeableReference(xpp));
10405    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udiCarrier")) {
10406      res.getUdiCarrier().add(parseDeviceUdiCarrierComponent(xpp));
10407    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10408      res.setStatusElement(parseEnumeration(xpp, Device.FHIRDeviceStatus.NULL, new Device.FHIRDeviceStatusEnumFactory()));
10409    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityStatus")) {
10410      res.setAvailabilityStatus(parseCodeableConcept(xpp));
10411    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("biologicalSourceEvent")) {
10412      res.setBiologicalSourceEvent(parseIdentifier(xpp));
10413    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
10414      res.setManufacturerElement(parseString(xpp));
10415    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufactureDate")) {
10416      res.setManufactureDateElement(parseDateTime(xpp));
10417    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
10418      res.setExpirationDateElement(parseDateTime(xpp));
10419    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
10420      res.setLotNumberElement(parseString(xpp));
10421    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serialNumber")) {
10422      res.setSerialNumberElement(parseString(xpp));
10423    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10424      res.getName().add(parseDeviceNameComponent(xpp));
10425    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modelNumber")) {
10426      res.setModelNumberElement(parseString(xpp));
10427    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partNumber")) {
10428      res.setPartNumberElement(parseString(xpp));
10429    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10430      res.getCategory().add(parseCodeableConcept(xpp));
10431    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10432      res.getType().add(parseCodeableConcept(xpp));
10433    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10434      res.getVersion().add(parseDeviceVersionComponent(xpp));
10435    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conformsTo")) {
10436      res.getConformsTo().add(parseDeviceConformsToComponent(xpp));
10437    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
10438      res.getProperty().add(parseDevicePropertyComponent(xpp));
10439    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
10440      res.setMode(parseCodeableConcept(xpp));
10441    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cycle")) {
10442      res.setCycle(parseCount(xpp));
10443    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
10444      res.setDuration(parseDuration(xpp));
10445    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
10446      res.setOwner(parseReference(xpp));
10447    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10448      res.getContact().add(parseContactPoint(xpp));
10449    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
10450      res.setLocation(parseReference(xpp));
10451    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
10452      res.setUrlElement(parseUri(xpp));
10453    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
10454      res.getEndpoint().add(parseReference(xpp));
10455    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gateway")) {
10456      res.getGateway().add(parseCodeableReference(xpp));
10457    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10458      res.getNote().add(parseAnnotation(xpp));
10459    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("safety")) {
10460      res.getSafety().add(parseCodeableConcept(xpp));
10461    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
10462      res.setParent(parseReference(xpp));
10463    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
10464      return false;
10465    }
10466    return true;
10467  }
10468
10469  protected Device.DeviceUdiCarrierComponent parseDeviceUdiCarrierComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10470    Device.DeviceUdiCarrierComponent res = new Device.DeviceUdiCarrierComponent();
10471    parseElementAttributes(xpp, res);
10472    next(xpp);
10473    int eventType = nextNoWhitespace(xpp);
10474    while (eventType != XmlPullParser.END_TAG) {
10475    if (!parseDeviceUdiCarrierComponentContent(eventType, xpp, res))
10476        unknownContent(xpp);
10477      eventType = nextNoWhitespace(xpp);
10478    }
10479    next(xpp);
10480    parseElementClose(res);
10481    return res;
10482  }
10483
10484  protected boolean parseDeviceUdiCarrierComponentContent(int eventType, XmlPullParser xpp, Device.DeviceUdiCarrierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10485    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceIdentifier")) {
10486      res.setDeviceIdentifierElement(parseString(xpp));
10487    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
10488      res.setIssuerElement(parseUri(xpp));
10489    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
10490      res.setJurisdictionElement(parseUri(xpp));
10491    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierAIDC")) {
10492      res.setCarrierAIDCElement(parseBase64Binary(xpp));
10493    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierHRF")) {
10494      res.setCarrierHRFElement(parseString(xpp));
10495    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entryType")) {
10496      res.setEntryTypeElement(parseEnumeration(xpp, Device.UDIEntryType.NULL, new Device.UDIEntryTypeEnumFactory()));
10497    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10498      return false;
10499    }
10500    return true;
10501  }
10502
10503  protected Device.DeviceNameComponent parseDeviceNameComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10504    Device.DeviceNameComponent res = new Device.DeviceNameComponent();
10505    parseElementAttributes(xpp, res);
10506    next(xpp);
10507    int eventType = nextNoWhitespace(xpp);
10508    while (eventType != XmlPullParser.END_TAG) {
10509    if (!parseDeviceNameComponentContent(eventType, xpp, res))
10510        unknownContent(xpp);
10511      eventType = nextNoWhitespace(xpp);
10512    }
10513    next(xpp);
10514    parseElementClose(res);
10515    return res;
10516  }
10517
10518  protected boolean parseDeviceNameComponentContent(int eventType, XmlPullParser xpp, Device.DeviceNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10519    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
10520      res.setValueElement(parseString(xpp));
10521    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10522      res.setTypeElement(parseEnumeration(xpp, Enumerations.DeviceNameType.NULL, new Enumerations.DeviceNameTypeEnumFactory()));
10523    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
10524      res.setDisplayElement(parseBoolean(xpp));
10525    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10526      return false;
10527    }
10528    return true;
10529  }
10530
10531  protected Device.DeviceVersionComponent parseDeviceVersionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10532    Device.DeviceVersionComponent res = new Device.DeviceVersionComponent();
10533    parseElementAttributes(xpp, res);
10534    next(xpp);
10535    int eventType = nextNoWhitespace(xpp);
10536    while (eventType != XmlPullParser.END_TAG) {
10537    if (!parseDeviceVersionComponentContent(eventType, xpp, res))
10538        unknownContent(xpp);
10539      eventType = nextNoWhitespace(xpp);
10540    }
10541    next(xpp);
10542    parseElementClose(res);
10543    return res;
10544  }
10545
10546  protected boolean parseDeviceVersionComponentContent(int eventType, XmlPullParser xpp, Device.DeviceVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10547    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10548      res.setType(parseCodeableConcept(xpp));
10549    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
10550      res.setComponent(parseIdentifier(xpp));
10551    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("installDate")) {
10552      res.setInstallDateElement(parseDateTime(xpp));
10553    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
10554      res.setValueElement(parseString(xpp));
10555    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10556      return false;
10557    }
10558    return true;
10559  }
10560
10561  protected Device.DeviceConformsToComponent parseDeviceConformsToComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10562    Device.DeviceConformsToComponent res = new Device.DeviceConformsToComponent();
10563    parseElementAttributes(xpp, res);
10564    next(xpp);
10565    int eventType = nextNoWhitespace(xpp);
10566    while (eventType != XmlPullParser.END_TAG) {
10567    if (!parseDeviceConformsToComponentContent(eventType, xpp, res))
10568        unknownContent(xpp);
10569      eventType = nextNoWhitespace(xpp);
10570    }
10571    next(xpp);
10572    parseElementClose(res);
10573    return res;
10574  }
10575
10576  protected boolean parseDeviceConformsToComponentContent(int eventType, XmlPullParser xpp, Device.DeviceConformsToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10577    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10578      res.setCategory(parseCodeableConcept(xpp));
10579    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specification")) {
10580      res.setSpecification(parseCodeableConcept(xpp));
10581    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10582      res.setVersionElement(parseString(xpp));
10583    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10584      return false;
10585    }
10586    return true;
10587  }
10588
10589  protected Device.DevicePropertyComponent parseDevicePropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10590    Device.DevicePropertyComponent res = new Device.DevicePropertyComponent();
10591    parseElementAttributes(xpp, res);
10592    next(xpp);
10593    int eventType = nextNoWhitespace(xpp);
10594    while (eventType != XmlPullParser.END_TAG) {
10595    if (!parseDevicePropertyComponentContent(eventType, xpp, res))
10596        unknownContent(xpp);
10597      eventType = nextNoWhitespace(xpp);
10598    }
10599    next(xpp);
10600    parseElementClose(res);
10601    return res;
10602  }
10603
10604  protected boolean parseDevicePropertyComponentContent(int eventType, XmlPullParser xpp, Device.DevicePropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10605    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10606      res.setType(parseCodeableConcept(xpp));
10607    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
10608      res.setValue(parseType("value", xpp));
10609    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10610      return false;
10611    }
10612    return true;
10613  }
10614
10615  protected DeviceAssociation parseDeviceAssociation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10616    DeviceAssociation res = new DeviceAssociation();
10617    parseResourceAttributes(xpp, res);
10618    next(xpp);
10619    int eventType = nextNoWhitespace(xpp);
10620    while (eventType != XmlPullParser.END_TAG) {
10621    if (!parseDeviceAssociationContent(eventType, xpp, res))
10622        unknownContent(xpp);
10623      eventType = nextNoWhitespace(xpp);
10624    }
10625    next(xpp);
10626    parseElementClose(res);
10627    return res;
10628  }
10629
10630  protected boolean parseDeviceAssociationContent(int eventType, XmlPullParser xpp, DeviceAssociation res) throws XmlPullParserException, IOException, FHIRFormatError {
10631    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10632      res.getIdentifier().add(parseIdentifier(xpp));
10633    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
10634      res.setDevice(parseReference(xpp));
10635    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10636      res.getCategory().add(parseCodeableConcept(xpp));
10637    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10638      res.setStatus(parseCodeableConcept(xpp));
10639    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
10640      res.getStatusReason().add(parseCodeableConcept(xpp));
10641    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10642      res.setSubject(parseReference(xpp));
10643    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodyStructure")) {
10644      res.setBodyStructure(parseReference(xpp));
10645    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10646      res.setPeriod(parsePeriod(xpp));
10647    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
10648      res.getOperation().add(parseDeviceAssociationOperationComponent(xpp));
10649    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
10650      return false;
10651    }
10652    return true;
10653  }
10654
10655  protected DeviceAssociation.DeviceAssociationOperationComponent parseDeviceAssociationOperationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10656    DeviceAssociation.DeviceAssociationOperationComponent res = new DeviceAssociation.DeviceAssociationOperationComponent();
10657    parseElementAttributes(xpp, res);
10658    next(xpp);
10659    int eventType = nextNoWhitespace(xpp);
10660    while (eventType != XmlPullParser.END_TAG) {
10661    if (!parseDeviceAssociationOperationComponentContent(eventType, xpp, res))
10662        unknownContent(xpp);
10663      eventType = nextNoWhitespace(xpp);
10664    }
10665    next(xpp);
10666    parseElementClose(res);
10667    return res;
10668  }
10669
10670  protected boolean parseDeviceAssociationOperationComponentContent(int eventType, XmlPullParser xpp, DeviceAssociation.DeviceAssociationOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10671    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10672      res.setStatus(parseCodeableConcept(xpp));
10673    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
10674      res.getOperator().add(parseReference(xpp));
10675    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10676      res.setPeriod(parsePeriod(xpp));
10677    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10678      return false;
10679    }
10680    return true;
10681  }
10682
10683  protected DeviceDefinition parseDeviceDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10684    DeviceDefinition res = new DeviceDefinition();
10685    parseResourceAttributes(xpp, res);
10686    next(xpp);
10687    int eventType = nextNoWhitespace(xpp);
10688    while (eventType != XmlPullParser.END_TAG) {
10689    if (!parseDeviceDefinitionContent(eventType, xpp, res))
10690        unknownContent(xpp);
10691      eventType = nextNoWhitespace(xpp);
10692    }
10693    next(xpp);
10694    parseElementClose(res);
10695    return res;
10696  }
10697
10698  protected boolean parseDeviceDefinitionContent(int eventType, XmlPullParser xpp, DeviceDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
10699    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10700      res.setDescriptionElement(parseMarkdown(xpp));
10701    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10702      res.getIdentifier().add(parseIdentifier(xpp));
10703    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udiDeviceIdentifier")) {
10704      res.getUdiDeviceIdentifier().add(parseDeviceDefinitionUdiDeviceIdentifierComponent(xpp));
10705    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulatoryIdentifier")) {
10706      res.getRegulatoryIdentifier().add(parseDeviceDefinitionRegulatoryIdentifierComponent(xpp));
10707    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partNumber")) {
10708      res.setPartNumberElement(parseString(xpp));
10709    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
10710      res.setManufacturer(parseReference(xpp));
10711    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceName")) {
10712      res.getDeviceName().add(parseDeviceDefinitionDeviceNameComponent(xpp));
10713    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modelNumber")) {
10714      res.setModelNumberElement(parseString(xpp));
10715    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
10716      res.getClassification().add(parseDeviceDefinitionClassificationComponent(xpp));
10717    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conformsTo")) {
10718      res.getConformsTo().add(parseDeviceDefinitionConformsToComponent(xpp));
10719    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hasPart")) {
10720      res.getHasPart().add(parseDeviceDefinitionHasPartComponent(xpp));
10721    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packaging")) {
10722      res.getPackaging().add(parseDeviceDefinitionPackagingComponent(xpp));
10723    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10724      res.getVersion().add(parseDeviceDefinitionVersionComponent(xpp));
10725    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("safety")) {
10726      res.getSafety().add(parseCodeableConcept(xpp));
10727    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shelfLifeStorage")) {
10728      res.getShelfLifeStorage().add(parseProductShelfLife(xpp));
10729    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("languageCode")) {
10730      res.getLanguageCode().add(parseCodeableConcept(xpp));
10731    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
10732      res.getProperty().add(parseDeviceDefinitionPropertyComponent(xpp));
10733    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
10734      res.setOwner(parseReference(xpp));
10735    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10736      res.getContact().add(parseContactPoint(xpp));
10737    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
10738      res.getLink().add(parseDeviceDefinitionLinkComponent(xpp));
10739    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10740      res.getNote().add(parseAnnotation(xpp));
10741    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
10742      res.getMaterial().add(parseDeviceDefinitionMaterialComponent(xpp));
10743    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productionIdentifierInUDI")) {
10744      res.getProductionIdentifierInUDI().add(parseEnumeration(xpp, DeviceDefinition.DeviceProductionIdentifierInUDI.NULL, new DeviceDefinition.DeviceProductionIdentifierInUDIEnumFactory()));
10745    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guideline")) {
10746      res.setGuideline(parseDeviceDefinitionGuidelineComponent(xpp));
10747    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("correctiveAction")) {
10748      res.setCorrectiveAction(parseDeviceDefinitionCorrectiveActionComponent(xpp));
10749    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chargeItem")) {
10750      res.getChargeItem().add(parseDeviceDefinitionChargeItemComponent(xpp));
10751    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
10752      return false;
10753    }
10754    return true;
10755  }
10756
10757  protected DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent parseDeviceDefinitionUdiDeviceIdentifierComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10758    DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent res = new DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent();
10759    parseElementAttributes(xpp, res);
10760    next(xpp);
10761    int eventType = nextNoWhitespace(xpp);
10762    while (eventType != XmlPullParser.END_TAG) {
10763    if (!parseDeviceDefinitionUdiDeviceIdentifierComponentContent(eventType, xpp, res))
10764        unknownContent(xpp);
10765      eventType = nextNoWhitespace(xpp);
10766    }
10767    next(xpp);
10768    parseElementClose(res);
10769    return res;
10770  }
10771
10772  protected boolean parseDeviceDefinitionUdiDeviceIdentifierComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10773    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceIdentifier")) {
10774      res.setDeviceIdentifierElement(parseString(xpp));
10775    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
10776      res.setIssuerElement(parseUri(xpp));
10777    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
10778      res.setJurisdictionElement(parseUri(xpp));
10779    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketDistribution")) {
10780      res.getMarketDistribution().add(parseDeviceDefinitionUdiDeviceIdentifierMarketDistributionComponent(xpp));
10781    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10782      return false;
10783    }
10784    return true;
10785  }
10786
10787  protected DeviceDefinition.UdiDeviceIdentifierMarketDistributionComponent parseDeviceDefinitionUdiDeviceIdentifierMarketDistributionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10788    DeviceDefinition.UdiDeviceIdentifierMarketDistributionComponent res = new DeviceDefinition.UdiDeviceIdentifierMarketDistributionComponent();
10789    parseElementAttributes(xpp, res);
10790    next(xpp);
10791    int eventType = nextNoWhitespace(xpp);
10792    while (eventType != XmlPullParser.END_TAG) {
10793    if (!parseDeviceDefinitionUdiDeviceIdentifierMarketDistributionComponentContent(eventType, xpp, res))
10794        unknownContent(xpp);
10795      eventType = nextNoWhitespace(xpp);
10796    }
10797    next(xpp);
10798    parseElementClose(res);
10799    return res;
10800  }
10801
10802  protected boolean parseDeviceDefinitionUdiDeviceIdentifierMarketDistributionComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.UdiDeviceIdentifierMarketDistributionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10803    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketPeriod")) {
10804      res.setMarketPeriod(parsePeriod(xpp));
10805    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subJurisdiction")) {
10806      res.setSubJurisdictionElement(parseUri(xpp));
10807    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10808      return false;
10809    }
10810    return true;
10811  }
10812
10813  protected DeviceDefinition.DeviceDefinitionRegulatoryIdentifierComponent parseDeviceDefinitionRegulatoryIdentifierComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10814    DeviceDefinition.DeviceDefinitionRegulatoryIdentifierComponent res = new DeviceDefinition.DeviceDefinitionRegulatoryIdentifierComponent();
10815    parseElementAttributes(xpp, res);
10816    next(xpp);
10817    int eventType = nextNoWhitespace(xpp);
10818    while (eventType != XmlPullParser.END_TAG) {
10819    if (!parseDeviceDefinitionRegulatoryIdentifierComponentContent(eventType, xpp, res))
10820        unknownContent(xpp);
10821      eventType = nextNoWhitespace(xpp);
10822    }
10823    next(xpp);
10824    parseElementClose(res);
10825    return res;
10826  }
10827
10828  protected boolean parseDeviceDefinitionRegulatoryIdentifierComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.DeviceDefinitionRegulatoryIdentifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10829    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10830      res.setTypeElement(parseEnumeration(xpp, DeviceDefinition.DeviceDefinitionRegulatoryIdentifierType.NULL, new DeviceDefinition.DeviceDefinitionRegulatoryIdentifierTypeEnumFactory()));
10831    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceIdentifier")) {
10832      res.setDeviceIdentifierElement(parseString(xpp));
10833    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
10834      res.setIssuerElement(parseUri(xpp));
10835    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
10836      res.setJurisdictionElement(parseUri(xpp));
10837    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10838      return false;
10839    }
10840    return true;
10841  }
10842
10843  protected DeviceDefinition.DeviceDefinitionDeviceNameComponent parseDeviceDefinitionDeviceNameComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10844    DeviceDefinition.DeviceDefinitionDeviceNameComponent res = new DeviceDefinition.DeviceDefinitionDeviceNameComponent();
10845    parseElementAttributes(xpp, res);
10846    next(xpp);
10847    int eventType = nextNoWhitespace(xpp);
10848    while (eventType != XmlPullParser.END_TAG) {
10849    if (!parseDeviceDefinitionDeviceNameComponentContent(eventType, xpp, res))
10850        unknownContent(xpp);
10851      eventType = nextNoWhitespace(xpp);
10852    }
10853    next(xpp);
10854    parseElementClose(res);
10855    return res;
10856  }
10857
10858  protected boolean parseDeviceDefinitionDeviceNameComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.DeviceDefinitionDeviceNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10859    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10860      res.setNameElement(parseString(xpp));
10861    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10862      res.setTypeElement(parseEnumeration(xpp, Enumerations.DeviceNameType.NULL, new Enumerations.DeviceNameTypeEnumFactory()));
10863    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10864      return false;
10865    }
10866    return true;
10867  }
10868
10869  protected DeviceDefinition.DeviceDefinitionClassificationComponent parseDeviceDefinitionClassificationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10870    DeviceDefinition.DeviceDefinitionClassificationComponent res = new DeviceDefinition.DeviceDefinitionClassificationComponent();
10871    parseElementAttributes(xpp, res);
10872    next(xpp);
10873    int eventType = nextNoWhitespace(xpp);
10874    while (eventType != XmlPullParser.END_TAG) {
10875    if (!parseDeviceDefinitionClassificationComponentContent(eventType, xpp, res))
10876        unknownContent(xpp);
10877      eventType = nextNoWhitespace(xpp);
10878    }
10879    next(xpp);
10880    parseElementClose(res);
10881    return res;
10882  }
10883
10884  protected boolean parseDeviceDefinitionClassificationComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.DeviceDefinitionClassificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10885    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10886      res.setType(parseCodeableConcept(xpp));
10887    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("justification")) {
10888      res.getJustification().add(parseRelatedArtifact(xpp));
10889    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10890      return false;
10891    }
10892    return true;
10893  }
10894
10895  protected DeviceDefinition.DeviceDefinitionConformsToComponent parseDeviceDefinitionConformsToComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10896    DeviceDefinition.DeviceDefinitionConformsToComponent res = new DeviceDefinition.DeviceDefinitionConformsToComponent();
10897    parseElementAttributes(xpp, res);
10898    next(xpp);
10899    int eventType = nextNoWhitespace(xpp);
10900    while (eventType != XmlPullParser.END_TAG) {
10901    if (!parseDeviceDefinitionConformsToComponentContent(eventType, xpp, res))
10902        unknownContent(xpp);
10903      eventType = nextNoWhitespace(xpp);
10904    }
10905    next(xpp);
10906    parseElementClose(res);
10907    return res;
10908  }
10909
10910  protected boolean parseDeviceDefinitionConformsToComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.DeviceDefinitionConformsToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10911    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10912      res.setCategory(parseCodeableConcept(xpp));
10913    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specification")) {
10914      res.setSpecification(parseCodeableConcept(xpp));
10915    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10916      res.getVersion().add(parseString(xpp));
10917    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
10918      res.getSource().add(parseRelatedArtifact(xpp));
10919    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10920      return false;
10921    }
10922    return true;
10923  }
10924
10925  protected DeviceDefinition.DeviceDefinitionHasPartComponent parseDeviceDefinitionHasPartComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10926    DeviceDefinition.DeviceDefinitionHasPartComponent res = new DeviceDefinition.DeviceDefinitionHasPartComponent();
10927    parseElementAttributes(xpp, res);
10928    next(xpp);
10929    int eventType = nextNoWhitespace(xpp);
10930    while (eventType != XmlPullParser.END_TAG) {
10931    if (!parseDeviceDefinitionHasPartComponentContent(eventType, xpp, res))
10932        unknownContent(xpp);
10933      eventType = nextNoWhitespace(xpp);
10934    }
10935    next(xpp);
10936    parseElementClose(res);
10937    return res;
10938  }
10939
10940  protected boolean parseDeviceDefinitionHasPartComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.DeviceDefinitionHasPartComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10941    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
10942      res.setReference(parseReference(xpp));
10943    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
10944      res.setCountElement(parseInteger(xpp));
10945    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10946      return false;
10947    }
10948    return true;
10949  }
10950
10951  protected DeviceDefinition.DeviceDefinitionPackagingComponent parseDeviceDefinitionPackagingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10952    DeviceDefinition.DeviceDefinitionPackagingComponent res = new DeviceDefinition.DeviceDefinitionPackagingComponent();
10953    parseElementAttributes(xpp, res);
10954    next(xpp);
10955    int eventType = nextNoWhitespace(xpp);
10956    while (eventType != XmlPullParser.END_TAG) {
10957    if (!parseDeviceDefinitionPackagingComponentContent(eventType, xpp, res))
10958        unknownContent(xpp);
10959      eventType = nextNoWhitespace(xpp);
10960    }
10961    next(xpp);
10962    parseElementClose(res);
10963    return res;
10964  }
10965
10966  protected boolean parseDeviceDefinitionPackagingComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.DeviceDefinitionPackagingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10967    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10968      res.setIdentifier(parseIdentifier(xpp));
10969    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10970      res.setType(parseCodeableConcept(xpp));
10971    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
10972      res.setCountElement(parseInteger(xpp));
10973    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("distributor")) {
10974      res.getDistributor().add(parseDeviceDefinitionPackagingDistributorComponent(xpp));
10975    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udiDeviceIdentifier")) {
10976      res.getUdiDeviceIdentifier().add(parseDeviceDefinitionUdiDeviceIdentifierComponent(xpp));
10977    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packaging")) {
10978      res.getPackaging().add(parseDeviceDefinitionPackagingComponent(xpp));
10979    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
10980      return false;
10981    }
10982    return true;
10983  }
10984
10985  protected DeviceDefinition.PackagingDistributorComponent parseDeviceDefinitionPackagingDistributorComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10986    DeviceDefinition.PackagingDistributorComponent res = new DeviceDefinition.PackagingDistributorComponent();
10987    parseElementAttributes(xpp, res);
10988    next(xpp);
10989    int eventType = nextNoWhitespace(xpp);
10990    while (eventType != XmlPullParser.END_TAG) {
10991    if (!parseDeviceDefinitionPackagingDistributorComponentContent(eventType, xpp, res))
10992        unknownContent(xpp);
10993      eventType = nextNoWhitespace(xpp);
10994    }
10995    next(xpp);
10996    parseElementClose(res);
10997    return res;
10998  }
10999
11000  protected boolean parseDeviceDefinitionPackagingDistributorComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.PackagingDistributorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11001    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11002      res.setNameElement(parseString(xpp));
11003    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organizationReference")) {
11004      res.getOrganizationReference().add(parseReference(xpp));
11005    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11006      return false;
11007    }
11008    return true;
11009  }
11010
11011  protected DeviceDefinition.DeviceDefinitionVersionComponent parseDeviceDefinitionVersionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11012    DeviceDefinition.DeviceDefinitionVersionComponent res = new DeviceDefinition.DeviceDefinitionVersionComponent();
11013    parseElementAttributes(xpp, res);
11014    next(xpp);
11015    int eventType = nextNoWhitespace(xpp);
11016    while (eventType != XmlPullParser.END_TAG) {
11017    if (!parseDeviceDefinitionVersionComponentContent(eventType, xpp, res))
11018        unknownContent(xpp);
11019      eventType = nextNoWhitespace(xpp);
11020    }
11021    next(xpp);
11022    parseElementClose(res);
11023    return res;
11024  }
11025
11026  protected boolean parseDeviceDefinitionVersionComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.DeviceDefinitionVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11027    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11028      res.setType(parseCodeableConcept(xpp));
11029    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
11030      res.setComponent(parseIdentifier(xpp));
11031    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
11032      res.setValueElement(parseString(xpp));
11033    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11034      return false;
11035    }
11036    return true;
11037  }
11038
11039  protected DeviceDefinition.DeviceDefinitionPropertyComponent parseDeviceDefinitionPropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11040    DeviceDefinition.DeviceDefinitionPropertyComponent res = new DeviceDefinition.DeviceDefinitionPropertyComponent();
11041    parseElementAttributes(xpp, res);
11042    next(xpp);
11043    int eventType = nextNoWhitespace(xpp);
11044    while (eventType != XmlPullParser.END_TAG) {
11045    if (!parseDeviceDefinitionPropertyComponentContent(eventType, xpp, res))
11046        unknownContent(xpp);
11047      eventType = nextNoWhitespace(xpp);
11048    }
11049    next(xpp);
11050    parseElementClose(res);
11051    return res;
11052  }
11053
11054  protected boolean parseDeviceDefinitionPropertyComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.DeviceDefinitionPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11055    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11056      res.setType(parseCodeableConcept(xpp));
11057    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
11058      res.setValue(parseType("value", xpp));
11059    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11060      return false;
11061    }
11062    return true;
11063  }
11064
11065  protected DeviceDefinition.DeviceDefinitionLinkComponent parseDeviceDefinitionLinkComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11066    DeviceDefinition.DeviceDefinitionLinkComponent res = new DeviceDefinition.DeviceDefinitionLinkComponent();
11067    parseElementAttributes(xpp, res);
11068    next(xpp);
11069    int eventType = nextNoWhitespace(xpp);
11070    while (eventType != XmlPullParser.END_TAG) {
11071    if (!parseDeviceDefinitionLinkComponentContent(eventType, xpp, res))
11072        unknownContent(xpp);
11073      eventType = nextNoWhitespace(xpp);
11074    }
11075    next(xpp);
11076    parseElementClose(res);
11077    return res;
11078  }
11079
11080  protected boolean parseDeviceDefinitionLinkComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.DeviceDefinitionLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11081    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relation")) {
11082      res.setRelation(parseCoding(xpp));
11083    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedDevice")) {
11084      res.setRelatedDevice(parseCodeableReference(xpp));
11085    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11086      return false;
11087    }
11088    return true;
11089  }
11090
11091  protected DeviceDefinition.DeviceDefinitionMaterialComponent parseDeviceDefinitionMaterialComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11092    DeviceDefinition.DeviceDefinitionMaterialComponent res = new DeviceDefinition.DeviceDefinitionMaterialComponent();
11093    parseElementAttributes(xpp, res);
11094    next(xpp);
11095    int eventType = nextNoWhitespace(xpp);
11096    while (eventType != XmlPullParser.END_TAG) {
11097    if (!parseDeviceDefinitionMaterialComponentContent(eventType, xpp, res))
11098        unknownContent(xpp);
11099      eventType = nextNoWhitespace(xpp);
11100    }
11101    next(xpp);
11102    parseElementClose(res);
11103    return res;
11104  }
11105
11106  protected boolean parseDeviceDefinitionMaterialComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.DeviceDefinitionMaterialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11107    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
11108      res.setSubstance(parseCodeableConcept(xpp));
11109    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternate")) {
11110      res.setAlternateElement(parseBoolean(xpp));
11111    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergenicIndicator")) {
11112      res.setAllergenicIndicatorElement(parseBoolean(xpp));
11113    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11114      return false;
11115    }
11116    return true;
11117  }
11118
11119  protected DeviceDefinition.DeviceDefinitionGuidelineComponent parseDeviceDefinitionGuidelineComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11120    DeviceDefinition.DeviceDefinitionGuidelineComponent res = new DeviceDefinition.DeviceDefinitionGuidelineComponent();
11121    parseElementAttributes(xpp, res);
11122    next(xpp);
11123    int eventType = nextNoWhitespace(xpp);
11124    while (eventType != XmlPullParser.END_TAG) {
11125    if (!parseDeviceDefinitionGuidelineComponentContent(eventType, xpp, res))
11126        unknownContent(xpp);
11127      eventType = nextNoWhitespace(xpp);
11128    }
11129    next(xpp);
11130    parseElementClose(res);
11131    return res;
11132  }
11133
11134  protected boolean parseDeviceDefinitionGuidelineComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.DeviceDefinitionGuidelineComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11135    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
11136      res.getUseContext().add(parseUsageContext(xpp));
11137    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usageInstruction")) {
11138      res.setUsageInstructionElement(parseMarkdown(xpp));
11139    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
11140      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
11141    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
11142      res.getIndication().add(parseCodeableConcept(xpp));
11143    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contraindication")) {
11144      res.getContraindication().add(parseCodeableConcept(xpp));
11145    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("warning")) {
11146      res.getWarning().add(parseCodeableConcept(xpp));
11147    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedUse")) {
11148      res.setIntendedUseElement(parseString(xpp));
11149    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11150      return false;
11151    }
11152    return true;
11153  }
11154
11155  protected DeviceDefinition.DeviceDefinitionCorrectiveActionComponent parseDeviceDefinitionCorrectiveActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11156    DeviceDefinition.DeviceDefinitionCorrectiveActionComponent res = new DeviceDefinition.DeviceDefinitionCorrectiveActionComponent();
11157    parseElementAttributes(xpp, res);
11158    next(xpp);
11159    int eventType = nextNoWhitespace(xpp);
11160    while (eventType != XmlPullParser.END_TAG) {
11161    if (!parseDeviceDefinitionCorrectiveActionComponentContent(eventType, xpp, res))
11162        unknownContent(xpp);
11163      eventType = nextNoWhitespace(xpp);
11164    }
11165    next(xpp);
11166    parseElementClose(res);
11167    return res;
11168  }
11169
11170  protected boolean parseDeviceDefinitionCorrectiveActionComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.DeviceDefinitionCorrectiveActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11171    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recall")) {
11172      res.setRecallElement(parseBoolean(xpp));
11173    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
11174      res.setScopeElement(parseEnumeration(xpp, DeviceDefinition.DeviceCorrectiveActionScope.NULL, new DeviceDefinition.DeviceCorrectiveActionScopeEnumFactory()));
11175    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
11176      res.setPeriod(parsePeriod(xpp));
11177    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11178      return false;
11179    }
11180    return true;
11181  }
11182
11183  protected DeviceDefinition.DeviceDefinitionChargeItemComponent parseDeviceDefinitionChargeItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11184    DeviceDefinition.DeviceDefinitionChargeItemComponent res = new DeviceDefinition.DeviceDefinitionChargeItemComponent();
11185    parseElementAttributes(xpp, res);
11186    next(xpp);
11187    int eventType = nextNoWhitespace(xpp);
11188    while (eventType != XmlPullParser.END_TAG) {
11189    if (!parseDeviceDefinitionChargeItemComponentContent(eventType, xpp, res))
11190        unknownContent(xpp);
11191      eventType = nextNoWhitespace(xpp);
11192    }
11193    next(xpp);
11194    parseElementClose(res);
11195    return res;
11196  }
11197
11198  protected boolean parseDeviceDefinitionChargeItemComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition.DeviceDefinitionChargeItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11199    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chargeItemCode")) {
11200      res.setChargeItemCode(parseCodeableReference(xpp));
11201    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
11202      res.setCount(parseQuantity(xpp));
11203    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
11204      res.setEffectivePeriod(parsePeriod(xpp));
11205    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
11206      res.getUseContext().add(parseUsageContext(xpp));
11207    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11208      return false;
11209    }
11210    return true;
11211  }
11212
11213  protected DeviceDispense parseDeviceDispense(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11214    DeviceDispense res = new DeviceDispense();
11215    parseResourceAttributes(xpp, res);
11216    next(xpp);
11217    int eventType = nextNoWhitespace(xpp);
11218    while (eventType != XmlPullParser.END_TAG) {
11219    if (!parseDeviceDispenseContent(eventType, xpp, res))
11220        unknownContent(xpp);
11221      eventType = nextNoWhitespace(xpp);
11222    }
11223    next(xpp);
11224    parseElementClose(res);
11225    return res;
11226  }
11227
11228  protected boolean parseDeviceDispenseContent(int eventType, XmlPullParser xpp, DeviceDispense res) throws XmlPullParserException, IOException, FHIRFormatError {
11229    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11230      res.getIdentifier().add(parseIdentifier(xpp));
11231    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
11232      res.getBasedOn().add(parseReference(xpp));
11233    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
11234      res.getPartOf().add(parseReference(xpp));
11235    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11236      res.setStatusElement(parseEnumeration(xpp, DeviceDispense.DeviceDispenseStatusCodes.NULL, new DeviceDispense.DeviceDispenseStatusCodesEnumFactory()));
11237    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
11238      res.setStatusReason(parseCodeableReference(xpp));
11239    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11240      res.getCategory().add(parseCodeableConcept(xpp));
11241    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
11242      res.setDevice(parseCodeableReference(xpp));
11243    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11244      res.setSubject(parseReference(xpp));
11245    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
11246      res.setReceiver(parseReference(xpp));
11247    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
11248      res.setEncounter(parseReference(xpp));
11249    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
11250      res.getSupportingInformation().add(parseReference(xpp));
11251    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11252      res.getPerformer().add(parseDeviceDispensePerformerComponent(xpp));
11253    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
11254      res.setLocation(parseReference(xpp));
11255    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11256      res.setType(parseCodeableConcept(xpp));
11257    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11258      res.setQuantity(parseQuantity(xpp));
11259    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preparedDate")) {
11260      res.setPreparedDateElement(parseDateTime(xpp));
11261    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenHandedOver")) {
11262      res.setWhenHandedOverElement(parseDateTime(xpp));
11263    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
11264      res.setDestination(parseReference(xpp));
11265    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11266      res.getNote().add(parseAnnotation(xpp));
11267    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usageInstruction")) {
11268      res.setUsageInstructionElement(parseMarkdown(xpp));
11269    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
11270      res.getEventHistory().add(parseReference(xpp));
11271    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
11272      return false;
11273    }
11274    return true;
11275  }
11276
11277  protected DeviceDispense.DeviceDispensePerformerComponent parseDeviceDispensePerformerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11278    DeviceDispense.DeviceDispensePerformerComponent res = new DeviceDispense.DeviceDispensePerformerComponent();
11279    parseElementAttributes(xpp, res);
11280    next(xpp);
11281    int eventType = nextNoWhitespace(xpp);
11282    while (eventType != XmlPullParser.END_TAG) {
11283    if (!parseDeviceDispensePerformerComponentContent(eventType, xpp, res))
11284        unknownContent(xpp);
11285      eventType = nextNoWhitespace(xpp);
11286    }
11287    next(xpp);
11288    parseElementClose(res);
11289    return res;
11290  }
11291
11292  protected boolean parseDeviceDispensePerformerComponentContent(int eventType, XmlPullParser xpp, DeviceDispense.DeviceDispensePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11293    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
11294      res.setFunction(parseCodeableConcept(xpp));
11295    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
11296      res.setActor(parseReference(xpp));
11297    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11298      return false;
11299    }
11300    return true;
11301  }
11302
11303  protected DeviceMetric parseDeviceMetric(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11304    DeviceMetric res = new DeviceMetric();
11305    parseResourceAttributes(xpp, res);
11306    next(xpp);
11307    int eventType = nextNoWhitespace(xpp);
11308    while (eventType != XmlPullParser.END_TAG) {
11309    if (!parseDeviceMetricContent(eventType, xpp, res))
11310        unknownContent(xpp);
11311      eventType = nextNoWhitespace(xpp);
11312    }
11313    next(xpp);
11314    parseElementClose(res);
11315    return res;
11316  }
11317
11318  protected boolean parseDeviceMetricContent(int eventType, XmlPullParser xpp, DeviceMetric res) throws XmlPullParserException, IOException, FHIRFormatError {
11319    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11320      res.getIdentifier().add(parseIdentifier(xpp));
11321    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11322      res.setType(parseCodeableConcept(xpp));
11323    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
11324      res.setUnit(parseCodeableConcept(xpp));
11325    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
11326      res.setDevice(parseReference(xpp));
11327    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
11328      res.setOperationalStatusElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricOperationalStatus.NULL, new DeviceMetric.DeviceMetricOperationalStatusEnumFactory()));
11329    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
11330      res.setColorElement(parseCode(xpp));
11331    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11332      res.setCategoryElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCategory.NULL, new DeviceMetric.DeviceMetricCategoryEnumFactory()));
11333    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementFrequency")) {
11334      res.setMeasurementFrequency(parseQuantity(xpp));
11335    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("calibration")) {
11336      res.getCalibration().add(parseDeviceMetricCalibrationComponent(xpp));
11337    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
11338      return false;
11339    }
11340    return true;
11341  }
11342
11343  protected DeviceMetric.DeviceMetricCalibrationComponent parseDeviceMetricCalibrationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11344    DeviceMetric.DeviceMetricCalibrationComponent res = new DeviceMetric.DeviceMetricCalibrationComponent();
11345    parseElementAttributes(xpp, res);
11346    next(xpp);
11347    int eventType = nextNoWhitespace(xpp);
11348    while (eventType != XmlPullParser.END_TAG) {
11349    if (!parseDeviceMetricCalibrationComponentContent(eventType, xpp, res))
11350        unknownContent(xpp);
11351      eventType = nextNoWhitespace(xpp);
11352    }
11353    next(xpp);
11354    parseElementClose(res);
11355    return res;
11356  }
11357
11358  protected boolean parseDeviceMetricCalibrationComponentContent(int eventType, XmlPullParser xpp, DeviceMetric.DeviceMetricCalibrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11359    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11360      res.setTypeElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationType.NULL, new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory()));
11361    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
11362      res.setStateElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationState.NULL, new DeviceMetric.DeviceMetricCalibrationStateEnumFactory()));
11363    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
11364      res.setTimeElement(parseInstant(xpp));
11365    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11366      return false;
11367    }
11368    return true;
11369  }
11370
11371  protected DeviceRequest parseDeviceRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11372    DeviceRequest res = new DeviceRequest();
11373    parseResourceAttributes(xpp, res);
11374    next(xpp);
11375    int eventType = nextNoWhitespace(xpp);
11376    while (eventType != XmlPullParser.END_TAG) {
11377    if (!parseDeviceRequestContent(eventType, xpp, res))
11378        unknownContent(xpp);
11379      eventType = nextNoWhitespace(xpp);
11380    }
11381    next(xpp);
11382    parseElementClose(res);
11383    return res;
11384  }
11385
11386  protected boolean parseDeviceRequestContent(int eventType, XmlPullParser xpp, DeviceRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
11387    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11388      res.getIdentifier().add(parseIdentifier(xpp));
11389    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
11390      res.getInstantiatesCanonical().add(parseCanonical(xpp));
11391    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
11392      res.getInstantiatesUri().add(parseUri(xpp));
11393    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
11394      res.getBasedOn().add(parseReference(xpp));
11395    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
11396      res.getReplaces().add(parseReference(xpp));
11397    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
11398      res.setGroupIdentifier(parseIdentifier(xpp));
11399    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11400      res.setStatusElement(parseEnumeration(xpp, Enumerations.RequestStatus.NULL, new Enumerations.RequestStatusEnumFactory()));
11401    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
11402      res.setIntentElement(parseEnumeration(xpp, Enumerations.RequestIntent.NULL, new Enumerations.RequestIntentEnumFactory()));
11403    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
11404      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
11405    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
11406      res.setDoNotPerformElement(parseBoolean(xpp));
11407    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11408      res.setCode(parseCodeableReference(xpp));
11409    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11410      res.setQuantityElement(parseInteger(xpp));
11411    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
11412      res.getParameter().add(parseDeviceRequestParameterComponent(xpp));
11413    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11414      res.setSubject(parseReference(xpp));
11415    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
11416      res.setEncounter(parseReference(xpp));
11417    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
11418      res.setOccurrence(parseType("occurrence", xpp));
11419    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
11420      res.setAuthoredOnElement(parseDateTime(xpp));
11421    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
11422      res.setRequester(parseReference(xpp));
11423    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11424      res.setPerformer(parseCodeableReference(xpp));
11425    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
11426      res.getReason().add(parseCodeableReference(xpp));
11427    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asNeeded")) {
11428      res.setAsNeededElement(parseBoolean(xpp));
11429    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asNeededFor")) {
11430      res.setAsNeededFor(parseCodeableConcept(xpp));
11431    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
11432      res.getInsurance().add(parseReference(xpp));
11433    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
11434      res.getSupportingInfo().add(parseReference(xpp));
11435    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11436      res.getNote().add(parseAnnotation(xpp));
11437    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
11438      res.getRelevantHistory().add(parseReference(xpp));
11439    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
11440      return false;
11441    }
11442    return true;
11443  }
11444
11445  protected DeviceRequest.DeviceRequestParameterComponent parseDeviceRequestParameterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11446    DeviceRequest.DeviceRequestParameterComponent res = new DeviceRequest.DeviceRequestParameterComponent();
11447    parseElementAttributes(xpp, res);
11448    next(xpp);
11449    int eventType = nextNoWhitespace(xpp);
11450    while (eventType != XmlPullParser.END_TAG) {
11451    if (!parseDeviceRequestParameterComponentContent(eventType, xpp, res))
11452        unknownContent(xpp);
11453      eventType = nextNoWhitespace(xpp);
11454    }
11455    next(xpp);
11456    parseElementClose(res);
11457    return res;
11458  }
11459
11460  protected boolean parseDeviceRequestParameterComponentContent(int eventType, XmlPullParser xpp, DeviceRequest.DeviceRequestParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11461    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11462      res.setCode(parseCodeableConcept(xpp));
11463    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
11464      res.setValue(parseType("value", xpp));
11465    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11466      return false;
11467    }
11468    return true;
11469  }
11470
11471  protected DeviceUsage parseDeviceUsage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11472    DeviceUsage res = new DeviceUsage();
11473    parseResourceAttributes(xpp, res);
11474    next(xpp);
11475    int eventType = nextNoWhitespace(xpp);
11476    while (eventType != XmlPullParser.END_TAG) {
11477    if (!parseDeviceUsageContent(eventType, xpp, res))
11478        unknownContent(xpp);
11479      eventType = nextNoWhitespace(xpp);
11480    }
11481    next(xpp);
11482    parseElementClose(res);
11483    return res;
11484  }
11485
11486  protected boolean parseDeviceUsageContent(int eventType, XmlPullParser xpp, DeviceUsage res) throws XmlPullParserException, IOException, FHIRFormatError {
11487    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11488      res.getIdentifier().add(parseIdentifier(xpp));
11489    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
11490      res.getBasedOn().add(parseReference(xpp));
11491    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11492      res.setStatusElement(parseEnumeration(xpp, DeviceUsage.DeviceUsageStatus.NULL, new DeviceUsage.DeviceUsageStatusEnumFactory()));
11493    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11494      res.getCategory().add(parseCodeableConcept(xpp));
11495    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
11496      res.setPatient(parseReference(xpp));
11497    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
11498      res.getDerivedFrom().add(parseReference(xpp));
11499    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
11500      res.setContext(parseReference(xpp));
11501    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
11502      res.setTiming(parseType("timing", xpp));
11503    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateAsserted")) {
11504      res.setDateAssertedElement(parseDateTime(xpp));
11505    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usageStatus")) {
11506      res.setUsageStatus(parseCodeableConcept(xpp));
11507    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usageReason")) {
11508      res.getUsageReason().add(parseCodeableConcept(xpp));
11509    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adherence")) {
11510      res.setAdherence(parseDeviceUsageAdherenceComponent(xpp));
11511    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSource")) {
11512      res.setInformationSource(parseReference(xpp));
11513    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
11514      res.setDevice(parseCodeableReference(xpp));
11515    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
11516      res.getReason().add(parseCodeableReference(xpp));
11517    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
11518      res.setBodySite(parseCodeableReference(xpp));
11519    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11520      res.getNote().add(parseAnnotation(xpp));
11521    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
11522      return false;
11523    }
11524    return true;
11525  }
11526
11527  protected DeviceUsage.DeviceUsageAdherenceComponent parseDeviceUsageAdherenceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11528    DeviceUsage.DeviceUsageAdherenceComponent res = new DeviceUsage.DeviceUsageAdherenceComponent();
11529    parseElementAttributes(xpp, res);
11530    next(xpp);
11531    int eventType = nextNoWhitespace(xpp);
11532    while (eventType != XmlPullParser.END_TAG) {
11533    if (!parseDeviceUsageAdherenceComponentContent(eventType, xpp, res))
11534        unknownContent(xpp);
11535      eventType = nextNoWhitespace(xpp);
11536    }
11537    next(xpp);
11538    parseElementClose(res);
11539    return res;
11540  }
11541
11542  protected boolean parseDeviceUsageAdherenceComponentContent(int eventType, XmlPullParser xpp, DeviceUsage.DeviceUsageAdherenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11543    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11544      res.setCode(parseCodeableConcept(xpp));
11545    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
11546      res.getReason().add(parseCodeableConcept(xpp));
11547    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11548      return false;
11549    }
11550    return true;
11551  }
11552
11553  protected DiagnosticReport parseDiagnosticReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11554    DiagnosticReport res = new DiagnosticReport();
11555    parseResourceAttributes(xpp, res);
11556    next(xpp);
11557    int eventType = nextNoWhitespace(xpp);
11558    while (eventType != XmlPullParser.END_TAG) {
11559    if (!parseDiagnosticReportContent(eventType, xpp, res))
11560        unknownContent(xpp);
11561      eventType = nextNoWhitespace(xpp);
11562    }
11563    next(xpp);
11564    parseElementClose(res);
11565    return res;
11566  }
11567
11568  protected boolean parseDiagnosticReportContent(int eventType, XmlPullParser xpp, DiagnosticReport res) throws XmlPullParserException, IOException, FHIRFormatError {
11569    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11570      res.getIdentifier().add(parseIdentifier(xpp));
11571    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
11572      res.getBasedOn().add(parseReference(xpp));
11573    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11574      res.setStatusElement(parseEnumeration(xpp, DiagnosticReport.DiagnosticReportStatus.NULL, new DiagnosticReport.DiagnosticReportStatusEnumFactory()));
11575    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11576      res.getCategory().add(parseCodeableConcept(xpp));
11577    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11578      res.setCode(parseCodeableConcept(xpp));
11579    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11580      res.setSubject(parseReference(xpp));
11581    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
11582      res.setEncounter(parseReference(xpp));
11583    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
11584      res.setEffective(parseType("effective", xpp));
11585    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
11586      res.setIssuedElement(parseInstant(xpp));
11587    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11588      res.getPerformer().add(parseReference(xpp));
11589    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultsInterpreter")) {
11590      res.getResultsInterpreter().add(parseReference(xpp));
11591    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
11592      res.getSpecimen().add(parseReference(xpp));
11593    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
11594      res.getResult().add(parseReference(xpp));
11595    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11596      res.getNote().add(parseAnnotation(xpp));
11597    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
11598      res.getStudy().add(parseReference(xpp));
11599    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
11600      res.getSupportingInfo().add(parseDiagnosticReportSupportingInfoComponent(xpp));
11601    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("media")) {
11602      res.getMedia().add(parseDiagnosticReportMediaComponent(xpp));
11603    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("composition")) {
11604      res.setComposition(parseReference(xpp));
11605    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conclusion")) {
11606      res.setConclusionElement(parseMarkdown(xpp));
11607    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conclusionCode")) {
11608      res.getConclusionCode().add(parseCodeableConcept(xpp));
11609    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentedForm")) {
11610      res.getPresentedForm().add(parseAttachment(xpp));
11611    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
11612      return false;
11613    }
11614    return true;
11615  }
11616
11617  protected DiagnosticReport.DiagnosticReportSupportingInfoComponent parseDiagnosticReportSupportingInfoComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11618    DiagnosticReport.DiagnosticReportSupportingInfoComponent res = new DiagnosticReport.DiagnosticReportSupportingInfoComponent();
11619    parseElementAttributes(xpp, res);
11620    next(xpp);
11621    int eventType = nextNoWhitespace(xpp);
11622    while (eventType != XmlPullParser.END_TAG) {
11623    if (!parseDiagnosticReportSupportingInfoComponentContent(eventType, xpp, res))
11624        unknownContent(xpp);
11625      eventType = nextNoWhitespace(xpp);
11626    }
11627    next(xpp);
11628    parseElementClose(res);
11629    return res;
11630  }
11631
11632  protected boolean parseDiagnosticReportSupportingInfoComponentContent(int eventType, XmlPullParser xpp, DiagnosticReport.DiagnosticReportSupportingInfoComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11633    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11634      res.setType(parseCodeableConcept(xpp));
11635    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
11636      res.setReference(parseReference(xpp));
11637    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11638      return false;
11639    }
11640    return true;
11641  }
11642
11643  protected DiagnosticReport.DiagnosticReportMediaComponent parseDiagnosticReportMediaComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11644    DiagnosticReport.DiagnosticReportMediaComponent res = new DiagnosticReport.DiagnosticReportMediaComponent();
11645    parseElementAttributes(xpp, res);
11646    next(xpp);
11647    int eventType = nextNoWhitespace(xpp);
11648    while (eventType != XmlPullParser.END_TAG) {
11649    if (!parseDiagnosticReportMediaComponentContent(eventType, xpp, res))
11650        unknownContent(xpp);
11651      eventType = nextNoWhitespace(xpp);
11652    }
11653    next(xpp);
11654    parseElementClose(res);
11655    return res;
11656  }
11657
11658  protected boolean parseDiagnosticReportMediaComponentContent(int eventType, XmlPullParser xpp, DiagnosticReport.DiagnosticReportMediaComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11659    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
11660      res.setCommentElement(parseString(xpp));
11661    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
11662      res.setLink(parseReference(xpp));
11663    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11664      return false;
11665    }
11666    return true;
11667  }
11668
11669  protected DocumentReference parseDocumentReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11670    DocumentReference res = new DocumentReference();
11671    parseResourceAttributes(xpp, res);
11672    next(xpp);
11673    int eventType = nextNoWhitespace(xpp);
11674    while (eventType != XmlPullParser.END_TAG) {
11675    if (!parseDocumentReferenceContent(eventType, xpp, res))
11676        unknownContent(xpp);
11677      eventType = nextNoWhitespace(xpp);
11678    }
11679    next(xpp);
11680    parseElementClose(res);
11681    return res;
11682  }
11683
11684  protected boolean parseDocumentReferenceContent(int eventType, XmlPullParser xpp, DocumentReference res) throws XmlPullParserException, IOException, FHIRFormatError {
11685    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11686      res.getIdentifier().add(parseIdentifier(xpp));
11687    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11688      res.setVersionElement(parseString(xpp));
11689    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
11690      res.getBasedOn().add(parseReference(xpp));
11691    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11692      res.setStatusElement(parseEnumeration(xpp, DocumentReference.DocumentReferenceStatus.NULL, new DocumentReference.DocumentReferenceStatusEnumFactory()));
11693    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("docStatus")) {
11694      res.setDocStatusElement(parseEnumeration(xpp, Enumerations.CompositionStatus.NULL, new Enumerations.CompositionStatusEnumFactory()));
11695    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
11696      res.getModality().add(parseCodeableConcept(xpp));
11697    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11698      res.setType(parseCodeableConcept(xpp));
11699    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11700      res.getCategory().add(parseCodeableConcept(xpp));
11701    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11702      res.setSubject(parseReference(xpp));
11703    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
11704      res.getContext().add(parseReference(xpp));
11705    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
11706      res.getEvent().add(parseCodeableReference(xpp));
11707    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
11708      res.getBodySite().add(parseCodeableReference(xpp));
11709    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facilityType")) {
11710      res.setFacilityType(parseCodeableConcept(xpp));
11711    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practiceSetting")) {
11712      res.setPracticeSetting(parseCodeableConcept(xpp));
11713    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
11714      res.setPeriod(parsePeriod(xpp));
11715    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11716      res.setDateElement(parseInstant(xpp));
11717    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
11718      res.getAuthor().add(parseReference(xpp));
11719    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attester")) {
11720      res.getAttester().add(parseDocumentReferenceAttesterComponent(xpp));
11721    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
11722      res.setCustodian(parseReference(xpp));
11723    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
11724      res.getRelatesTo().add(parseDocumentReferenceRelatesToComponent(xpp));
11725    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11726      res.setDescriptionElement(parseMarkdown(xpp));
11727    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
11728      res.getSecurityLabel().add(parseCodeableConcept(xpp));
11729    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
11730      res.getContent().add(parseDocumentReferenceContentComponent(xpp));
11731    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
11732      return false;
11733    }
11734    return true;
11735  }
11736
11737  protected DocumentReference.DocumentReferenceAttesterComponent parseDocumentReferenceAttesterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11738    DocumentReference.DocumentReferenceAttesterComponent res = new DocumentReference.DocumentReferenceAttesterComponent();
11739    parseElementAttributes(xpp, res);
11740    next(xpp);
11741    int eventType = nextNoWhitespace(xpp);
11742    while (eventType != XmlPullParser.END_TAG) {
11743    if (!parseDocumentReferenceAttesterComponentContent(eventType, xpp, res))
11744        unknownContent(xpp);
11745      eventType = nextNoWhitespace(xpp);
11746    }
11747    next(xpp);
11748    parseElementClose(res);
11749    return res;
11750  }
11751
11752  protected boolean parseDocumentReferenceAttesterComponentContent(int eventType, XmlPullParser xpp, DocumentReference.DocumentReferenceAttesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11753    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
11754      res.setMode(parseCodeableConcept(xpp));
11755    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
11756      res.setTimeElement(parseDateTime(xpp));
11757    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
11758      res.setParty(parseReference(xpp));
11759    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11760      return false;
11761    }
11762    return true;
11763  }
11764
11765  protected DocumentReference.DocumentReferenceRelatesToComponent parseDocumentReferenceRelatesToComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11766    DocumentReference.DocumentReferenceRelatesToComponent res = new DocumentReference.DocumentReferenceRelatesToComponent();
11767    parseElementAttributes(xpp, res);
11768    next(xpp);
11769    int eventType = nextNoWhitespace(xpp);
11770    while (eventType != XmlPullParser.END_TAG) {
11771    if (!parseDocumentReferenceRelatesToComponentContent(eventType, xpp, res))
11772        unknownContent(xpp);
11773      eventType = nextNoWhitespace(xpp);
11774    }
11775    next(xpp);
11776    parseElementClose(res);
11777    return res;
11778  }
11779
11780  protected boolean parseDocumentReferenceRelatesToComponentContent(int eventType, XmlPullParser xpp, DocumentReference.DocumentReferenceRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11781    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11782      res.setCode(parseCodeableConcept(xpp));
11783    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
11784      res.setTarget(parseReference(xpp));
11785    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11786      return false;
11787    }
11788    return true;
11789  }
11790
11791  protected DocumentReference.DocumentReferenceContentComponent parseDocumentReferenceContentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11792    DocumentReference.DocumentReferenceContentComponent res = new DocumentReference.DocumentReferenceContentComponent();
11793    parseElementAttributes(xpp, res);
11794    next(xpp);
11795    int eventType = nextNoWhitespace(xpp);
11796    while (eventType != XmlPullParser.END_TAG) {
11797    if (!parseDocumentReferenceContentComponentContent(eventType, xpp, res))
11798        unknownContent(xpp);
11799      eventType = nextNoWhitespace(xpp);
11800    }
11801    next(xpp);
11802    parseElementClose(res);
11803    return res;
11804  }
11805
11806  protected boolean parseDocumentReferenceContentComponentContent(int eventType, XmlPullParser xpp, DocumentReference.DocumentReferenceContentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11807    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
11808      res.setAttachment(parseAttachment(xpp));
11809    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
11810      res.getProfile().add(parseDocumentReferenceContentProfileComponent(xpp));
11811    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11812      return false;
11813    }
11814    return true;
11815  }
11816
11817  protected DocumentReference.DocumentReferenceContentProfileComponent parseDocumentReferenceContentProfileComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11818    DocumentReference.DocumentReferenceContentProfileComponent res = new DocumentReference.DocumentReferenceContentProfileComponent();
11819    parseElementAttributes(xpp, res);
11820    next(xpp);
11821    int eventType = nextNoWhitespace(xpp);
11822    while (eventType != XmlPullParser.END_TAG) {
11823    if (!parseDocumentReferenceContentProfileComponentContent(eventType, xpp, res))
11824        unknownContent(xpp);
11825      eventType = nextNoWhitespace(xpp);
11826    }
11827    next(xpp);
11828    parseElementClose(res);
11829    return res;
11830  }
11831
11832  protected boolean parseDocumentReferenceContentProfileComponentContent(int eventType, XmlPullParser xpp, DocumentReference.DocumentReferenceContentProfileComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11833    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
11834      res.setValue(parseType("value", xpp));
11835    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11836      return false;
11837    }
11838    return true;
11839  }
11840
11841  protected Encounter parseEncounter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11842    Encounter res = new Encounter();
11843    parseResourceAttributes(xpp, res);
11844    next(xpp);
11845    int eventType = nextNoWhitespace(xpp);
11846    while (eventType != XmlPullParser.END_TAG) {
11847    if (!parseEncounterContent(eventType, xpp, res))
11848        unknownContent(xpp);
11849      eventType = nextNoWhitespace(xpp);
11850    }
11851    next(xpp);
11852    parseElementClose(res);
11853    return res;
11854  }
11855
11856  protected boolean parseEncounterContent(int eventType, XmlPullParser xpp, Encounter res) throws XmlPullParserException, IOException, FHIRFormatError {
11857    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11858      res.getIdentifier().add(parseIdentifier(xpp));
11859    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11860      res.setStatusElement(parseEnumeration(xpp, Enumerations.EncounterStatus.NULL, new Enumerations.EncounterStatusEnumFactory()));
11861    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
11862      res.getClass_().add(parseCodeableConcept(xpp));
11863    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
11864      res.setPriority(parseCodeableConcept(xpp));
11865    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11866      res.getType().add(parseCodeableConcept(xpp));
11867    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
11868      res.getServiceType().add(parseCodeableReference(xpp));
11869    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11870      res.setSubject(parseReference(xpp));
11871    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectStatus")) {
11872      res.setSubjectStatus(parseCodeableConcept(xpp));
11873    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("episodeOfCare")) {
11874      res.getEpisodeOfCare().add(parseReference(xpp));
11875    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
11876      res.getBasedOn().add(parseReference(xpp));
11877    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
11878      res.getCareTeam().add(parseReference(xpp));
11879    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
11880      res.setPartOf(parseReference(xpp));
11881    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvider")) {
11882      res.setServiceProvider(parseReference(xpp));
11883    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
11884      res.getParticipant().add(parseEncounterParticipantComponent(xpp));
11885    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
11886      res.getAppointment().add(parseReference(xpp));
11887    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("virtualService")) {
11888      res.getVirtualService().add(parseVirtualServiceDetail(xpp));
11889    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actualPeriod")) {
11890      res.setActualPeriod(parsePeriod(xpp));
11891    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plannedStartDate")) {
11892      res.setPlannedStartDateElement(parseDateTime(xpp));
11893    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plannedEndDate")) {
11894      res.setPlannedEndDateElement(parseDateTime(xpp));
11895    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
11896      res.setLength(parseDuration(xpp));
11897    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
11898      res.getReason().add(parseEncounterReasonComponent(xpp));
11899    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
11900      res.getDiagnosis().add(parseEncounterDiagnosisComponent(xpp));
11901    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
11902      res.getAccount().add(parseReference(xpp));
11903    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dietPreference")) {
11904      res.getDietPreference().add(parseCodeableConcept(xpp));
11905    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialArrangement")) {
11906      res.getSpecialArrangement().add(parseCodeableConcept(xpp));
11907    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialCourtesy")) {
11908      res.getSpecialCourtesy().add(parseCodeableConcept(xpp));
11909    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("admission")) {
11910      res.setAdmission(parseEncounterAdmissionComponent(xpp));
11911    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
11912      res.getLocation().add(parseEncounterLocationComponent(xpp));
11913    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
11914      return false;
11915    }
11916    return true;
11917  }
11918
11919  protected Encounter.EncounterParticipantComponent parseEncounterParticipantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11920    Encounter.EncounterParticipantComponent res = new Encounter.EncounterParticipantComponent();
11921    parseElementAttributes(xpp, res);
11922    next(xpp);
11923    int eventType = nextNoWhitespace(xpp);
11924    while (eventType != XmlPullParser.END_TAG) {
11925    if (!parseEncounterParticipantComponentContent(eventType, xpp, res))
11926        unknownContent(xpp);
11927      eventType = nextNoWhitespace(xpp);
11928    }
11929    next(xpp);
11930    parseElementClose(res);
11931    return res;
11932  }
11933
11934  protected boolean parseEncounterParticipantComponentContent(int eventType, XmlPullParser xpp, Encounter.EncounterParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11935    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11936      res.getType().add(parseCodeableConcept(xpp));
11937    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
11938      res.setPeriod(parsePeriod(xpp));
11939    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
11940      res.setActor(parseReference(xpp));
11941    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11942      return false;
11943    }
11944    return true;
11945  }
11946
11947  protected Encounter.ReasonComponent parseEncounterReasonComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11948    Encounter.ReasonComponent res = new Encounter.ReasonComponent();
11949    parseElementAttributes(xpp, res);
11950    next(xpp);
11951    int eventType = nextNoWhitespace(xpp);
11952    while (eventType != XmlPullParser.END_TAG) {
11953    if (!parseEncounterReasonComponentContent(eventType, xpp, res))
11954        unknownContent(xpp);
11955      eventType = nextNoWhitespace(xpp);
11956    }
11957    next(xpp);
11958    parseElementClose(res);
11959    return res;
11960  }
11961
11962  protected boolean parseEncounterReasonComponentContent(int eventType, XmlPullParser xpp, Encounter.ReasonComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11963    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
11964      res.getUse().add(parseCodeableConcept(xpp));
11965    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
11966      res.getValue().add(parseCodeableReference(xpp));
11967    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11968      return false;
11969    }
11970    return true;
11971  }
11972
11973  protected Encounter.DiagnosisComponent parseEncounterDiagnosisComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11974    Encounter.DiagnosisComponent res = new Encounter.DiagnosisComponent();
11975    parseElementAttributes(xpp, res);
11976    next(xpp);
11977    int eventType = nextNoWhitespace(xpp);
11978    while (eventType != XmlPullParser.END_TAG) {
11979    if (!parseEncounterDiagnosisComponentContent(eventType, xpp, res))
11980        unknownContent(xpp);
11981      eventType = nextNoWhitespace(xpp);
11982    }
11983    next(xpp);
11984    parseElementClose(res);
11985    return res;
11986  }
11987
11988  protected boolean parseEncounterDiagnosisComponentContent(int eventType, XmlPullParser xpp, Encounter.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11989    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
11990      res.getCondition().add(parseCodeableReference(xpp));
11991    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
11992      res.getUse().add(parseCodeableConcept(xpp));
11993    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
11994      return false;
11995    }
11996    return true;
11997  }
11998
11999  protected Encounter.EncounterAdmissionComponent parseEncounterAdmissionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12000    Encounter.EncounterAdmissionComponent res = new Encounter.EncounterAdmissionComponent();
12001    parseElementAttributes(xpp, res);
12002    next(xpp);
12003    int eventType = nextNoWhitespace(xpp);
12004    while (eventType != XmlPullParser.END_TAG) {
12005    if (!parseEncounterAdmissionComponentContent(eventType, xpp, res))
12006        unknownContent(xpp);
12007      eventType = nextNoWhitespace(xpp);
12008    }
12009    next(xpp);
12010    parseElementClose(res);
12011    return res;
12012  }
12013
12014  protected boolean parseEncounterAdmissionComponentContent(int eventType, XmlPullParser xpp, Encounter.EncounterAdmissionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12015    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAdmissionIdentifier")) {
12016      res.setPreAdmissionIdentifier(parseIdentifier(xpp));
12017    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
12018      res.setOrigin(parseReference(xpp));
12019    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("admitSource")) {
12020      res.setAdmitSource(parseCodeableConcept(xpp));
12021    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reAdmission")) {
12022      res.setReAdmission(parseCodeableConcept(xpp));
12023    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
12024      res.setDestination(parseReference(xpp));
12025    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dischargeDisposition")) {
12026      res.setDischargeDisposition(parseCodeableConcept(xpp));
12027    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12028      return false;
12029    }
12030    return true;
12031  }
12032
12033  protected Encounter.EncounterLocationComponent parseEncounterLocationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12034    Encounter.EncounterLocationComponent res = new Encounter.EncounterLocationComponent();
12035    parseElementAttributes(xpp, res);
12036    next(xpp);
12037    int eventType = nextNoWhitespace(xpp);
12038    while (eventType != XmlPullParser.END_TAG) {
12039    if (!parseEncounterLocationComponentContent(eventType, xpp, res))
12040        unknownContent(xpp);
12041      eventType = nextNoWhitespace(xpp);
12042    }
12043    next(xpp);
12044    parseElementClose(res);
12045    return res;
12046  }
12047
12048  protected boolean parseEncounterLocationComponentContent(int eventType, XmlPullParser xpp, Encounter.EncounterLocationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12049    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
12050      res.setLocation(parseReference(xpp));
12051    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12052      res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterLocationStatus.NULL, new Encounter.EncounterLocationStatusEnumFactory()));
12053    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
12054      res.setForm(parseCodeableConcept(xpp));
12055    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
12056      res.setPeriod(parsePeriod(xpp));
12057    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12058      return false;
12059    }
12060    return true;
12061  }
12062
12063  protected EncounterHistory parseEncounterHistory(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12064    EncounterHistory res = new EncounterHistory();
12065    parseResourceAttributes(xpp, res);
12066    next(xpp);
12067    int eventType = nextNoWhitespace(xpp);
12068    while (eventType != XmlPullParser.END_TAG) {
12069    if (!parseEncounterHistoryContent(eventType, xpp, res))
12070        unknownContent(xpp);
12071      eventType = nextNoWhitespace(xpp);
12072    }
12073    next(xpp);
12074    parseElementClose(res);
12075    return res;
12076  }
12077
12078  protected boolean parseEncounterHistoryContent(int eventType, XmlPullParser xpp, EncounterHistory res) throws XmlPullParserException, IOException, FHIRFormatError {
12079    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
12080      res.setEncounter(parseReference(xpp));
12081    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12082      res.getIdentifier().add(parseIdentifier(xpp));
12083    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12084      res.setStatusElement(parseEnumeration(xpp, Enumerations.EncounterStatus.NULL, new Enumerations.EncounterStatusEnumFactory()));
12085    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
12086      res.setClass_(parseCodeableConcept(xpp));
12087    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12088      res.getType().add(parseCodeableConcept(xpp));
12089    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
12090      res.getServiceType().add(parseCodeableReference(xpp));
12091    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12092      res.setSubject(parseReference(xpp));
12093    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectStatus")) {
12094      res.setSubjectStatus(parseCodeableConcept(xpp));
12095    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actualPeriod")) {
12096      res.setActualPeriod(parsePeriod(xpp));
12097    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plannedStartDate")) {
12098      res.setPlannedStartDateElement(parseDateTime(xpp));
12099    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plannedEndDate")) {
12100      res.setPlannedEndDateElement(parseDateTime(xpp));
12101    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
12102      res.setLength(parseDuration(xpp));
12103    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
12104      res.getLocation().add(parseEncounterHistoryLocationComponent(xpp));
12105    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
12106      return false;
12107    }
12108    return true;
12109  }
12110
12111  protected EncounterHistory.EncounterHistoryLocationComponent parseEncounterHistoryLocationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12112    EncounterHistory.EncounterHistoryLocationComponent res = new EncounterHistory.EncounterHistoryLocationComponent();
12113    parseElementAttributes(xpp, res);
12114    next(xpp);
12115    int eventType = nextNoWhitespace(xpp);
12116    while (eventType != XmlPullParser.END_TAG) {
12117    if (!parseEncounterHistoryLocationComponentContent(eventType, xpp, res))
12118        unknownContent(xpp);
12119      eventType = nextNoWhitespace(xpp);
12120    }
12121    next(xpp);
12122    parseElementClose(res);
12123    return res;
12124  }
12125
12126  protected boolean parseEncounterHistoryLocationComponentContent(int eventType, XmlPullParser xpp, EncounterHistory.EncounterHistoryLocationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12127    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
12128      res.setLocation(parseReference(xpp));
12129    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
12130      res.setForm(parseCodeableConcept(xpp));
12131    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12132      return false;
12133    }
12134    return true;
12135  }
12136
12137  protected Endpoint parseEndpoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12138    Endpoint res = new Endpoint();
12139    parseResourceAttributes(xpp, res);
12140    next(xpp);
12141    int eventType = nextNoWhitespace(xpp);
12142    while (eventType != XmlPullParser.END_TAG) {
12143    if (!parseEndpointContent(eventType, xpp, res))
12144        unknownContent(xpp);
12145      eventType = nextNoWhitespace(xpp);
12146    }
12147    next(xpp);
12148    parseElementClose(res);
12149    return res;
12150  }
12151
12152  protected boolean parseEndpointContent(int eventType, XmlPullParser xpp, Endpoint res) throws XmlPullParserException, IOException, FHIRFormatError {
12153    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12154      res.getIdentifier().add(parseIdentifier(xpp));
12155    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12156      res.setStatusElement(parseEnumeration(xpp, Endpoint.EndpointStatus.NULL, new Endpoint.EndpointStatusEnumFactory()));
12157    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("connectionType")) {
12158      res.getConnectionType().add(parseCodeableConcept(xpp));
12159    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12160      res.setNameElement(parseString(xpp));
12161    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12162      res.setDescriptionElement(parseString(xpp));
12163    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("environmentType")) {
12164      res.getEnvironmentType().add(parseCodeableConcept(xpp));
12165    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
12166      res.setManagingOrganization(parseReference(xpp));
12167    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12168      res.getContact().add(parseContactPoint(xpp));
12169    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
12170      res.setPeriod(parsePeriod(xpp));
12171    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
12172      res.getPayload().add(parseEndpointPayloadComponent(xpp));
12173    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12174      res.setAddressElement(parseUrl(xpp));
12175    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
12176      res.getHeader().add(parseString(xpp));
12177    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
12178      return false;
12179    }
12180    return true;
12181  }
12182
12183  protected Endpoint.EndpointPayloadComponent parseEndpointPayloadComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12184    Endpoint.EndpointPayloadComponent res = new Endpoint.EndpointPayloadComponent();
12185    parseElementAttributes(xpp, res);
12186    next(xpp);
12187    int eventType = nextNoWhitespace(xpp);
12188    while (eventType != XmlPullParser.END_TAG) {
12189    if (!parseEndpointPayloadComponentContent(eventType, xpp, res))
12190        unknownContent(xpp);
12191      eventType = nextNoWhitespace(xpp);
12192    }
12193    next(xpp);
12194    parseElementClose(res);
12195    return res;
12196  }
12197
12198  protected boolean parseEndpointPayloadComponentContent(int eventType, XmlPullParser xpp, Endpoint.EndpointPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12199    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12200      res.getType().add(parseCodeableConcept(xpp));
12201    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mimeType")) {
12202      res.getMimeType().add(parseCode(xpp));
12203    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12204      return false;
12205    }
12206    return true;
12207  }
12208
12209  protected EnrollmentRequest parseEnrollmentRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12210    EnrollmentRequest res = new EnrollmentRequest();
12211    parseResourceAttributes(xpp, res);
12212    next(xpp);
12213    int eventType = nextNoWhitespace(xpp);
12214    while (eventType != XmlPullParser.END_TAG) {
12215    if (!parseEnrollmentRequestContent(eventType, xpp, res))
12216        unknownContent(xpp);
12217      eventType = nextNoWhitespace(xpp);
12218    }
12219    next(xpp);
12220    parseElementClose(res);
12221    return res;
12222  }
12223
12224  protected boolean parseEnrollmentRequestContent(int eventType, XmlPullParser xpp, EnrollmentRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
12225    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12226      res.getIdentifier().add(parseIdentifier(xpp));
12227    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12228      res.setStatusElement(parseEnumeration(xpp, Enumerations.FinancialResourceStatusCodes.NULL, new Enumerations.FinancialResourceStatusCodesEnumFactory()));
12229    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
12230      res.setCreatedElement(parseDateTime(xpp));
12231    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
12232      res.setInsurer(parseReference(xpp));
12233    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
12234      res.setProvider(parseReference(xpp));
12235    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("candidate")) {
12236      res.setCandidate(parseReference(xpp));
12237    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
12238      res.setCoverage(parseReference(xpp));
12239    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
12240      return false;
12241    }
12242    return true;
12243  }
12244
12245  protected EnrollmentResponse parseEnrollmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12246    EnrollmentResponse res = new EnrollmentResponse();
12247    parseResourceAttributes(xpp, res);
12248    next(xpp);
12249    int eventType = nextNoWhitespace(xpp);
12250    while (eventType != XmlPullParser.END_TAG) {
12251    if (!parseEnrollmentResponseContent(eventType, xpp, res))
12252        unknownContent(xpp);
12253      eventType = nextNoWhitespace(xpp);
12254    }
12255    next(xpp);
12256    parseElementClose(res);
12257    return res;
12258  }
12259
12260  protected boolean parseEnrollmentResponseContent(int eventType, XmlPullParser xpp, EnrollmentResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
12261    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12262      res.getIdentifier().add(parseIdentifier(xpp));
12263    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12264      res.setStatusElement(parseEnumeration(xpp, Enumerations.FinancialResourceStatusCodes.NULL, new Enumerations.FinancialResourceStatusCodesEnumFactory()));
12265    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
12266      res.setRequest(parseReference(xpp));
12267    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
12268      res.setOutcomeElement(parseEnumeration(xpp, EnrollmentResponse.EnrollmentOutcome.NULL, new EnrollmentResponse.EnrollmentOutcomeEnumFactory()));
12269    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
12270      res.setDispositionElement(parseString(xpp));
12271    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
12272      res.setCreatedElement(parseDateTime(xpp));
12273    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
12274      res.setOrganization(parseReference(xpp));
12275    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
12276      res.setRequestProvider(parseReference(xpp));
12277    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
12278      return false;
12279    }
12280    return true;
12281  }
12282
12283  protected EpisodeOfCare parseEpisodeOfCare(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12284    EpisodeOfCare res = new EpisodeOfCare();
12285    parseResourceAttributes(xpp, res);
12286    next(xpp);
12287    int eventType = nextNoWhitespace(xpp);
12288    while (eventType != XmlPullParser.END_TAG) {
12289    if (!parseEpisodeOfCareContent(eventType, xpp, res))
12290        unknownContent(xpp);
12291      eventType = nextNoWhitespace(xpp);
12292    }
12293    next(xpp);
12294    parseElementClose(res);
12295    return res;
12296  }
12297
12298  protected boolean parseEpisodeOfCareContent(int eventType, XmlPullParser xpp, EpisodeOfCare res) throws XmlPullParserException, IOException, FHIRFormatError {
12299    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12300      res.getIdentifier().add(parseIdentifier(xpp));
12301    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12302      res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
12303    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
12304      res.getStatusHistory().add(parseEpisodeOfCareStatusHistoryComponent(xpp));
12305    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12306      res.getType().add(parseCodeableConcept(xpp));
12307    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
12308      res.getReason().add(parseEpisodeOfCareReasonComponent(xpp));
12309    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
12310      res.getDiagnosis().add(parseEpisodeOfCareDiagnosisComponent(xpp));
12311    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
12312      res.setPatient(parseReference(xpp));
12313    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
12314      res.setManagingOrganization(parseReference(xpp));
12315    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
12316      res.setPeriod(parsePeriod(xpp));
12317    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralRequest")) {
12318      res.getReferralRequest().add(parseReference(xpp));
12319    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careManager")) {
12320      res.setCareManager(parseReference(xpp));
12321    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
12322      res.getCareTeam().add(parseReference(xpp));
12323    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
12324      res.getAccount().add(parseReference(xpp));
12325    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
12326      return false;
12327    }
12328    return true;
12329  }
12330
12331  protected EpisodeOfCare.EpisodeOfCareStatusHistoryComponent parseEpisodeOfCareStatusHistoryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12332    EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res = new EpisodeOfCare.EpisodeOfCareStatusHistoryComponent();
12333    parseElementAttributes(xpp, res);
12334    next(xpp);
12335    int eventType = nextNoWhitespace(xpp);
12336    while (eventType != XmlPullParser.END_TAG) {
12337    if (!parseEpisodeOfCareStatusHistoryComponentContent(eventType, xpp, res))
12338        unknownContent(xpp);
12339      eventType = nextNoWhitespace(xpp);
12340    }
12341    next(xpp);
12342    parseElementClose(res);
12343    return res;
12344  }
12345
12346  protected boolean parseEpisodeOfCareStatusHistoryComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12347    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12348      res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
12349    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
12350      res.setPeriod(parsePeriod(xpp));
12351    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12352      return false;
12353    }
12354    return true;
12355  }
12356
12357  protected EpisodeOfCare.ReasonComponent parseEpisodeOfCareReasonComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12358    EpisodeOfCare.ReasonComponent res = new EpisodeOfCare.ReasonComponent();
12359    parseElementAttributes(xpp, res);
12360    next(xpp);
12361    int eventType = nextNoWhitespace(xpp);
12362    while (eventType != XmlPullParser.END_TAG) {
12363    if (!parseEpisodeOfCareReasonComponentContent(eventType, xpp, res))
12364        unknownContent(xpp);
12365      eventType = nextNoWhitespace(xpp);
12366    }
12367    next(xpp);
12368    parseElementClose(res);
12369    return res;
12370  }
12371
12372  protected boolean parseEpisodeOfCareReasonComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare.ReasonComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12373    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
12374      res.setUse(parseCodeableConcept(xpp));
12375    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
12376      res.getValue().add(parseCodeableReference(xpp));
12377    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12378      return false;
12379    }
12380    return true;
12381  }
12382
12383  protected EpisodeOfCare.DiagnosisComponent parseEpisodeOfCareDiagnosisComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12384    EpisodeOfCare.DiagnosisComponent res = new EpisodeOfCare.DiagnosisComponent();
12385    parseElementAttributes(xpp, res);
12386    next(xpp);
12387    int eventType = nextNoWhitespace(xpp);
12388    while (eventType != XmlPullParser.END_TAG) {
12389    if (!parseEpisodeOfCareDiagnosisComponentContent(eventType, xpp, res))
12390        unknownContent(xpp);
12391      eventType = nextNoWhitespace(xpp);
12392    }
12393    next(xpp);
12394    parseElementClose(res);
12395    return res;
12396  }
12397
12398  protected boolean parseEpisodeOfCareDiagnosisComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12399    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
12400      res.getCondition().add(parseCodeableReference(xpp));
12401    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
12402      res.setUse(parseCodeableConcept(xpp));
12403    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12404      return false;
12405    }
12406    return true;
12407  }
12408
12409  protected EventDefinition parseEventDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12410    EventDefinition res = new EventDefinition();
12411    parseResourceAttributes(xpp, res);
12412    next(xpp);
12413    int eventType = nextNoWhitespace(xpp);
12414    while (eventType != XmlPullParser.END_TAG) {
12415    if (!parseEventDefinitionContent(eventType, xpp, res))
12416        unknownContent(xpp);
12417      eventType = nextNoWhitespace(xpp);
12418    }
12419    next(xpp);
12420    parseElementClose(res);
12421    return res;
12422  }
12423
12424  protected boolean parseEventDefinitionContent(int eventType, XmlPullParser xpp, EventDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
12425    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
12426      res.setUrlElement(parseUri(xpp));
12427    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12428      res.getIdentifier().add(parseIdentifier(xpp));
12429    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
12430      res.setVersionElement(parseString(xpp));
12431    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
12432      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
12433    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12434      res.setNameElement(parseString(xpp));
12435    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12436      res.setTitleElement(parseString(xpp));
12437    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
12438      res.setSubtitleElement(parseString(xpp));
12439    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12440      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
12441    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
12442      res.setExperimentalElement(parseBoolean(xpp));
12443    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
12444      res.setSubject(parseType("subject", xpp));
12445    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12446      res.setDateElement(parseDateTime(xpp));
12447    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
12448      res.setPublisherElement(parseString(xpp));
12449    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12450      res.getContact().add(parseContactDetail(xpp));
12451    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12452      res.setDescriptionElement(parseMarkdown(xpp));
12453    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
12454      res.getUseContext().add(parseUsageContext(xpp));
12455    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
12456      res.getJurisdiction().add(parseCodeableConcept(xpp));
12457    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
12458      res.setPurposeElement(parseMarkdown(xpp));
12459    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
12460      res.setUsageElement(parseMarkdown(xpp));
12461    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
12462      res.setCopyrightElement(parseMarkdown(xpp));
12463    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
12464      res.setCopyrightLabelElement(parseString(xpp));
12465    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
12466      res.setApprovalDateElement(parseDate(xpp));
12467    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
12468      res.setLastReviewDateElement(parseDate(xpp));
12469    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
12470      res.setEffectivePeriod(parsePeriod(xpp));
12471    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
12472      res.getTopic().add(parseCodeableConcept(xpp));
12473    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
12474      res.getAuthor().add(parseContactDetail(xpp));
12475    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
12476      res.getEditor().add(parseContactDetail(xpp));
12477    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
12478      res.getReviewer().add(parseContactDetail(xpp));
12479    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
12480      res.getEndorser().add(parseContactDetail(xpp));
12481    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
12482      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
12483    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("trigger")) {
12484      res.getTrigger().add(parseTriggerDefinition(xpp));
12485    } else if (!parseMetadataResourceContent(eventType, xpp, res)){ 
12486      return false;
12487    }
12488    return true;
12489  }
12490
12491  protected Evidence parseEvidence(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12492    Evidence res = new Evidence();
12493    parseResourceAttributes(xpp, res);
12494    next(xpp);
12495    int eventType = nextNoWhitespace(xpp);
12496    while (eventType != XmlPullParser.END_TAG) {
12497    if (!parseEvidenceContent(eventType, xpp, res))
12498        unknownContent(xpp);
12499      eventType = nextNoWhitespace(xpp);
12500    }
12501    next(xpp);
12502    parseElementClose(res);
12503    return res;
12504  }
12505
12506  protected boolean parseEvidenceContent(int eventType, XmlPullParser xpp, Evidence res) throws XmlPullParserException, IOException, FHIRFormatError {
12507    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
12508      res.setUrlElement(parseUri(xpp));
12509    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12510      res.getIdentifier().add(parseIdentifier(xpp));
12511    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
12512      res.setVersionElement(parseString(xpp));
12513    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
12514      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
12515    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12516      res.setNameElement(parseString(xpp));
12517    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12518      res.setTitleElement(parseString(xpp));
12519    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "citeAs")) {
12520      res.setCiteAs(parseType("citeAs", xpp));
12521    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12522      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
12523    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
12524      res.setExperimentalElement(parseBoolean(xpp));
12525    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12526      res.setDateElement(parseDateTime(xpp));
12527    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
12528      res.setApprovalDateElement(parseDate(xpp));
12529    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
12530      res.setLastReviewDateElement(parseDate(xpp));
12531    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
12532      res.setPublisherElement(parseString(xpp));
12533    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12534      res.getContact().add(parseContactDetail(xpp));
12535    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
12536      res.getAuthor().add(parseContactDetail(xpp));
12537    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
12538      res.getEditor().add(parseContactDetail(xpp));
12539    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
12540      res.getReviewer().add(parseContactDetail(xpp));
12541    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
12542      res.getEndorser().add(parseContactDetail(xpp));
12543    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
12544      res.getUseContext().add(parseUsageContext(xpp));
12545    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
12546      res.setPurposeElement(parseMarkdown(xpp));
12547    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
12548      res.setCopyrightElement(parseMarkdown(xpp));
12549    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
12550      res.setCopyrightLabelElement(parseString(xpp));
12551    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
12552      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
12553    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12554      res.setDescriptionElement(parseMarkdown(xpp));
12555    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assertion")) {
12556      res.setAssertionElement(parseMarkdown(xpp));
12557    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12558      res.getNote().add(parseAnnotation(xpp));
12559    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variableDefinition")) {
12560      res.getVariableDefinition().add(parseEvidenceVariableDefinitionComponent(xpp));
12561    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("synthesisType")) {
12562      res.setSynthesisType(parseCodeableConcept(xpp));
12563    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyDesign")) {
12564      res.getStudyDesign().add(parseCodeableConcept(xpp));
12565    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statistic")) {
12566      res.getStatistic().add(parseEvidenceStatisticComponent(xpp));
12567    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certainty")) {
12568      res.getCertainty().add(parseEvidenceCertaintyComponent(xpp));
12569    } else if (!parseMetadataResourceContent(eventType, xpp, res)){ 
12570      return false;
12571    }
12572    return true;
12573  }
12574
12575  protected Evidence.EvidenceVariableDefinitionComponent parseEvidenceVariableDefinitionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12576    Evidence.EvidenceVariableDefinitionComponent res = new Evidence.EvidenceVariableDefinitionComponent();
12577    parseElementAttributes(xpp, res);
12578    next(xpp);
12579    int eventType = nextNoWhitespace(xpp);
12580    while (eventType != XmlPullParser.END_TAG) {
12581    if (!parseEvidenceVariableDefinitionComponentContent(eventType, xpp, res))
12582        unknownContent(xpp);
12583      eventType = nextNoWhitespace(xpp);
12584    }
12585    next(xpp);
12586    parseElementClose(res);
12587    return res;
12588  }
12589
12590  protected boolean parseEvidenceVariableDefinitionComponentContent(int eventType, XmlPullParser xpp, Evidence.EvidenceVariableDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12591    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12592      res.setDescriptionElement(parseMarkdown(xpp));
12593    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12594      res.getNote().add(parseAnnotation(xpp));
12595    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variableRole")) {
12596      res.setVariableRole(parseCodeableConcept(xpp));
12597    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observed")) {
12598      res.setObserved(parseReference(xpp));
12599    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intended")) {
12600      res.setIntended(parseReference(xpp));
12601    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("directnessMatch")) {
12602      res.setDirectnessMatch(parseCodeableConcept(xpp));
12603    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12604      return false;
12605    }
12606    return true;
12607  }
12608
12609  protected Evidence.EvidenceStatisticComponent parseEvidenceStatisticComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12610    Evidence.EvidenceStatisticComponent res = new Evidence.EvidenceStatisticComponent();
12611    parseElementAttributes(xpp, res);
12612    next(xpp);
12613    int eventType = nextNoWhitespace(xpp);
12614    while (eventType != XmlPullParser.END_TAG) {
12615    if (!parseEvidenceStatisticComponentContent(eventType, xpp, res))
12616        unknownContent(xpp);
12617      eventType = nextNoWhitespace(xpp);
12618    }
12619    next(xpp);
12620    parseElementClose(res);
12621    return res;
12622  }
12623
12624  protected boolean parseEvidenceStatisticComponentContent(int eventType, XmlPullParser xpp, Evidence.EvidenceStatisticComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12625    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12626      res.setDescriptionElement(parseMarkdown(xpp));
12627    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12628      res.getNote().add(parseAnnotation(xpp));
12629    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statisticType")) {
12630      res.setStatisticType(parseCodeableConcept(xpp));
12631    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
12632      res.setCategory(parseCodeableConcept(xpp));
12633    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
12634      res.setQuantity(parseQuantity(xpp));
12635    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfEvents")) {
12636      res.setNumberOfEventsElement(parseUnsignedInt(xpp));
12637    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberAffected")) {
12638      res.setNumberAffectedElement(parseUnsignedInt(xpp));
12639    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sampleSize")) {
12640      res.setSampleSize(parseEvidenceStatisticSampleSizeComponent(xpp));
12641    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attributeEstimate")) {
12642      res.getAttributeEstimate().add(parseEvidenceStatisticAttributeEstimateComponent(xpp));
12643    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modelCharacteristic")) {
12644      res.getModelCharacteristic().add(parseEvidenceStatisticModelCharacteristicComponent(xpp));
12645    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12646      return false;
12647    }
12648    return true;
12649  }
12650
12651  protected Evidence.EvidenceStatisticSampleSizeComponent parseEvidenceStatisticSampleSizeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12652    Evidence.EvidenceStatisticSampleSizeComponent res = new Evidence.EvidenceStatisticSampleSizeComponent();
12653    parseElementAttributes(xpp, res);
12654    next(xpp);
12655    int eventType = nextNoWhitespace(xpp);
12656    while (eventType != XmlPullParser.END_TAG) {
12657    if (!parseEvidenceStatisticSampleSizeComponentContent(eventType, xpp, res))
12658        unknownContent(xpp);
12659      eventType = nextNoWhitespace(xpp);
12660    }
12661    next(xpp);
12662    parseElementClose(res);
12663    return res;
12664  }
12665
12666  protected boolean parseEvidenceStatisticSampleSizeComponentContent(int eventType, XmlPullParser xpp, Evidence.EvidenceStatisticSampleSizeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12667    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12668      res.setDescriptionElement(parseMarkdown(xpp));
12669    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12670      res.getNote().add(parseAnnotation(xpp));
12671    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfStudies")) {
12672      res.setNumberOfStudiesElement(parseUnsignedInt(xpp));
12673    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfParticipants")) {
12674      res.setNumberOfParticipantsElement(parseUnsignedInt(xpp));
12675    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("knownDataCount")) {
12676      res.setKnownDataCountElement(parseUnsignedInt(xpp));
12677    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12678      return false;
12679    }
12680    return true;
12681  }
12682
12683  protected Evidence.EvidenceStatisticAttributeEstimateComponent parseEvidenceStatisticAttributeEstimateComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12684    Evidence.EvidenceStatisticAttributeEstimateComponent res = new Evidence.EvidenceStatisticAttributeEstimateComponent();
12685    parseElementAttributes(xpp, res);
12686    next(xpp);
12687    int eventType = nextNoWhitespace(xpp);
12688    while (eventType != XmlPullParser.END_TAG) {
12689    if (!parseEvidenceStatisticAttributeEstimateComponentContent(eventType, xpp, res))
12690        unknownContent(xpp);
12691      eventType = nextNoWhitespace(xpp);
12692    }
12693    next(xpp);
12694    parseElementClose(res);
12695    return res;
12696  }
12697
12698  protected boolean parseEvidenceStatisticAttributeEstimateComponentContent(int eventType, XmlPullParser xpp, Evidence.EvidenceStatisticAttributeEstimateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12699    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12700      res.setDescriptionElement(parseMarkdown(xpp));
12701    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12702      res.getNote().add(parseAnnotation(xpp));
12703    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12704      res.setType(parseCodeableConcept(xpp));
12705    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
12706      res.setQuantity(parseQuantity(xpp));
12707    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("level")) {
12708      res.setLevelElement(parseDecimal(xpp));
12709    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("range")) {
12710      res.setRange(parseRange(xpp));
12711    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attributeEstimate")) {
12712      res.getAttributeEstimate().add(parseEvidenceStatisticAttributeEstimateComponent(xpp));
12713    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12714      return false;
12715    }
12716    return true;
12717  }
12718
12719  protected Evidence.EvidenceStatisticModelCharacteristicComponent parseEvidenceStatisticModelCharacteristicComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12720    Evidence.EvidenceStatisticModelCharacteristicComponent res = new Evidence.EvidenceStatisticModelCharacteristicComponent();
12721    parseElementAttributes(xpp, res);
12722    next(xpp);
12723    int eventType = nextNoWhitespace(xpp);
12724    while (eventType != XmlPullParser.END_TAG) {
12725    if (!parseEvidenceStatisticModelCharacteristicComponentContent(eventType, xpp, res))
12726        unknownContent(xpp);
12727      eventType = nextNoWhitespace(xpp);
12728    }
12729    next(xpp);
12730    parseElementClose(res);
12731    return res;
12732  }
12733
12734  protected boolean parseEvidenceStatisticModelCharacteristicComponentContent(int eventType, XmlPullParser xpp, Evidence.EvidenceStatisticModelCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12735    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12736      res.setCode(parseCodeableConcept(xpp));
12737    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
12738      res.setValue(parseQuantity(xpp));
12739    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
12740      res.getVariable().add(parseEvidenceStatisticModelCharacteristicVariableComponent(xpp));
12741    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attributeEstimate")) {
12742      res.getAttributeEstimate().add(parseEvidenceStatisticAttributeEstimateComponent(xpp));
12743    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12744      return false;
12745    }
12746    return true;
12747  }
12748
12749  protected Evidence.EvidenceStatisticModelCharacteristicVariableComponent parseEvidenceStatisticModelCharacteristicVariableComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12750    Evidence.EvidenceStatisticModelCharacteristicVariableComponent res = new Evidence.EvidenceStatisticModelCharacteristicVariableComponent();
12751    parseElementAttributes(xpp, res);
12752    next(xpp);
12753    int eventType = nextNoWhitespace(xpp);
12754    while (eventType != XmlPullParser.END_TAG) {
12755    if (!parseEvidenceStatisticModelCharacteristicVariableComponentContent(eventType, xpp, res))
12756        unknownContent(xpp);
12757      eventType = nextNoWhitespace(xpp);
12758    }
12759    next(xpp);
12760    parseElementClose(res);
12761    return res;
12762  }
12763
12764  protected boolean parseEvidenceStatisticModelCharacteristicVariableComponentContent(int eventType, XmlPullParser xpp, Evidence.EvidenceStatisticModelCharacteristicVariableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12765    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variableDefinition")) {
12766      res.setVariableDefinition(parseReference(xpp));
12767    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("handling")) {
12768      res.setHandlingElement(parseEnumeration(xpp, Enumerations.EvidenceVariableHandling.NULL, new Enumerations.EvidenceVariableHandlingEnumFactory()));
12769    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCategory")) {
12770      res.getValueCategory().add(parseCodeableConcept(xpp));
12771    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueQuantity")) {
12772      res.getValueQuantity().add(parseQuantity(xpp));
12773    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueRange")) {
12774      res.getValueRange().add(parseRange(xpp));
12775    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12776      return false;
12777    }
12778    return true;
12779  }
12780
12781  protected Evidence.EvidenceCertaintyComponent parseEvidenceCertaintyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12782    Evidence.EvidenceCertaintyComponent res = new Evidence.EvidenceCertaintyComponent();
12783    parseElementAttributes(xpp, res);
12784    next(xpp);
12785    int eventType = nextNoWhitespace(xpp);
12786    while (eventType != XmlPullParser.END_TAG) {
12787    if (!parseEvidenceCertaintyComponentContent(eventType, xpp, res))
12788        unknownContent(xpp);
12789      eventType = nextNoWhitespace(xpp);
12790    }
12791    next(xpp);
12792    parseElementClose(res);
12793    return res;
12794  }
12795
12796  protected boolean parseEvidenceCertaintyComponentContent(int eventType, XmlPullParser xpp, Evidence.EvidenceCertaintyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12797    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12798      res.setDescriptionElement(parseMarkdown(xpp));
12799    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12800      res.getNote().add(parseAnnotation(xpp));
12801    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12802      res.setType(parseCodeableConcept(xpp));
12803    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rating")) {
12804      res.setRating(parseCodeableConcept(xpp));
12805    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rater")) {
12806      res.setRaterElement(parseString(xpp));
12807    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subcomponent")) {
12808      res.getSubcomponent().add(parseEvidenceCertaintyComponent(xpp));
12809    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12810      return false;
12811    }
12812    return true;
12813  }
12814
12815  protected EvidenceReport parseEvidenceReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12816    EvidenceReport res = new EvidenceReport();
12817    parseResourceAttributes(xpp, res);
12818    next(xpp);
12819    int eventType = nextNoWhitespace(xpp);
12820    while (eventType != XmlPullParser.END_TAG) {
12821    if (!parseEvidenceReportContent(eventType, xpp, res))
12822        unknownContent(xpp);
12823      eventType = nextNoWhitespace(xpp);
12824    }
12825    next(xpp);
12826    parseElementClose(res);
12827    return res;
12828  }
12829
12830  protected boolean parseEvidenceReportContent(int eventType, XmlPullParser xpp, EvidenceReport res) throws XmlPullParserException, IOException, FHIRFormatError {
12831    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
12832      res.setUrlElement(parseUri(xpp));
12833    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12834      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
12835    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
12836      res.getUseContext().add(parseUsageContext(xpp));
12837    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12838      res.getIdentifier().add(parseIdentifier(xpp));
12839    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedIdentifier")) {
12840      res.getRelatedIdentifier().add(parseIdentifier(xpp));
12841    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "citeAs")) {
12842      res.setCiteAs(parseType("citeAs", xpp));
12843    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12844      res.setType(parseCodeableConcept(xpp));
12845    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12846      res.getNote().add(parseAnnotation(xpp));
12847    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
12848      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
12849    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12850      res.setSubject(parseEvidenceReportSubjectComponent(xpp));
12851    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
12852      res.setPublisherElement(parseString(xpp));
12853    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12854      res.getContact().add(parseContactDetail(xpp));
12855    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
12856      res.getAuthor().add(parseContactDetail(xpp));
12857    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
12858      res.getEditor().add(parseContactDetail(xpp));
12859    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
12860      res.getReviewer().add(parseContactDetail(xpp));
12861    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
12862      res.getEndorser().add(parseContactDetail(xpp));
12863    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
12864      res.getRelatesTo().add(parseEvidenceReportRelatesToComponent(xpp));
12865    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
12866      res.getSection().add(parseEvidenceReportSectionComponent(xpp));
12867    } else if (!parseMetadataResourceContent(eventType, xpp, res)){ 
12868      return false;
12869    }
12870    return true;
12871  }
12872
12873  protected EvidenceReport.EvidenceReportSubjectComponent parseEvidenceReportSubjectComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12874    EvidenceReport.EvidenceReportSubjectComponent res = new EvidenceReport.EvidenceReportSubjectComponent();
12875    parseElementAttributes(xpp, res);
12876    next(xpp);
12877    int eventType = nextNoWhitespace(xpp);
12878    while (eventType != XmlPullParser.END_TAG) {
12879    if (!parseEvidenceReportSubjectComponentContent(eventType, xpp, res))
12880        unknownContent(xpp);
12881      eventType = nextNoWhitespace(xpp);
12882    }
12883    next(xpp);
12884    parseElementClose(res);
12885    return res;
12886  }
12887
12888  protected boolean parseEvidenceReportSubjectComponentContent(int eventType, XmlPullParser xpp, EvidenceReport.EvidenceReportSubjectComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12889    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
12890      res.getCharacteristic().add(parseEvidenceReportSubjectCharacteristicComponent(xpp));
12891    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12892      res.getNote().add(parseAnnotation(xpp));
12893    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12894      return false;
12895    }
12896    return true;
12897  }
12898
12899  protected EvidenceReport.EvidenceReportSubjectCharacteristicComponent parseEvidenceReportSubjectCharacteristicComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12900    EvidenceReport.EvidenceReportSubjectCharacteristicComponent res = new EvidenceReport.EvidenceReportSubjectCharacteristicComponent();
12901    parseElementAttributes(xpp, res);
12902    next(xpp);
12903    int eventType = nextNoWhitespace(xpp);
12904    while (eventType != XmlPullParser.END_TAG) {
12905    if (!parseEvidenceReportSubjectCharacteristicComponentContent(eventType, xpp, res))
12906        unknownContent(xpp);
12907      eventType = nextNoWhitespace(xpp);
12908    }
12909    next(xpp);
12910    parseElementClose(res);
12911    return res;
12912  }
12913
12914  protected boolean parseEvidenceReportSubjectCharacteristicComponentContent(int eventType, XmlPullParser xpp, EvidenceReport.EvidenceReportSubjectCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12915    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12916      res.setCode(parseCodeableConcept(xpp));
12917    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
12918      res.setValue(parseType("value", xpp));
12919    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
12920      res.setExcludeElement(parseBoolean(xpp));
12921    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
12922      res.setPeriod(parsePeriod(xpp));
12923    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12924      return false;
12925    }
12926    return true;
12927  }
12928
12929  protected EvidenceReport.EvidenceReportRelatesToComponent parseEvidenceReportRelatesToComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12930    EvidenceReport.EvidenceReportRelatesToComponent res = new EvidenceReport.EvidenceReportRelatesToComponent();
12931    parseElementAttributes(xpp, res);
12932    next(xpp);
12933    int eventType = nextNoWhitespace(xpp);
12934    while (eventType != XmlPullParser.END_TAG) {
12935    if (!parseEvidenceReportRelatesToComponentContent(eventType, xpp, res))
12936        unknownContent(xpp);
12937      eventType = nextNoWhitespace(xpp);
12938    }
12939    next(xpp);
12940    parseElementClose(res);
12941    return res;
12942  }
12943
12944  protected boolean parseEvidenceReportRelatesToComponentContent(int eventType, XmlPullParser xpp, EvidenceReport.EvidenceReportRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12945    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12946      res.setCodeElement(parseEnumeration(xpp, EvidenceReport.ReportRelationshipType.NULL, new EvidenceReport.ReportRelationshipTypeEnumFactory()));
12947    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
12948      res.setTarget(parseEvidenceReportRelatesToTargetComponent(xpp));
12949    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12950      return false;
12951    }
12952    return true;
12953  }
12954
12955  protected EvidenceReport.EvidenceReportRelatesToTargetComponent parseEvidenceReportRelatesToTargetComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12956    EvidenceReport.EvidenceReportRelatesToTargetComponent res = new EvidenceReport.EvidenceReportRelatesToTargetComponent();
12957    parseElementAttributes(xpp, res);
12958    next(xpp);
12959    int eventType = nextNoWhitespace(xpp);
12960    while (eventType != XmlPullParser.END_TAG) {
12961    if (!parseEvidenceReportRelatesToTargetComponentContent(eventType, xpp, res))
12962        unknownContent(xpp);
12963      eventType = nextNoWhitespace(xpp);
12964    }
12965    next(xpp);
12966    parseElementClose(res);
12967    return res;
12968  }
12969
12970  protected boolean parseEvidenceReportRelatesToTargetComponentContent(int eventType, XmlPullParser xpp, EvidenceReport.EvidenceReportRelatesToTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12971    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
12972      res.setUrlElement(parseUri(xpp));
12973    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12974      res.setIdentifier(parseIdentifier(xpp));
12975    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
12976      res.setDisplayElement(parseMarkdown(xpp));
12977    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
12978      res.setResource(parseReference(xpp));
12979    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
12980      return false;
12981    }
12982    return true;
12983  }
12984
12985  protected EvidenceReport.SectionComponent parseEvidenceReportSectionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12986    EvidenceReport.SectionComponent res = new EvidenceReport.SectionComponent();
12987    parseElementAttributes(xpp, res);
12988    next(xpp);
12989    int eventType = nextNoWhitespace(xpp);
12990    while (eventType != XmlPullParser.END_TAG) {
12991    if (!parseEvidenceReportSectionComponentContent(eventType, xpp, res))
12992        unknownContent(xpp);
12993      eventType = nextNoWhitespace(xpp);
12994    }
12995    next(xpp);
12996    parseElementClose(res);
12997    return res;
12998  }
12999
13000  protected boolean parseEvidenceReportSectionComponentContent(int eventType, XmlPullParser xpp, EvidenceReport.SectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13001    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
13002      res.setTitleElement(parseString(xpp));
13003    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
13004      res.setFocus(parseCodeableConcept(xpp));
13005    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focusReference")) {
13006      res.setFocusReference(parseReference(xpp));
13007    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
13008      res.getAuthor().add(parseReference(xpp));
13009    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
13010      res.setText(parseNarrative(xpp));
13011    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
13012      res.setModeElement(parseEnumeration(xpp, Enumerations.ListMode.NULL, new Enumerations.ListModeEnumFactory()));
13013    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
13014      res.setOrderedBy(parseCodeableConcept(xpp));
13015    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entryClassifier")) {
13016      res.getEntryClassifier().add(parseCodeableConcept(xpp));
13017    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entryReference")) {
13018      res.getEntryReference().add(parseReference(xpp));
13019    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entryQuantity")) {
13020      res.getEntryQuantity().add(parseQuantity(xpp));
13021    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
13022      res.setEmptyReason(parseCodeableConcept(xpp));
13023    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
13024      res.getSection().add(parseEvidenceReportSectionComponent(xpp));
13025    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13026      return false;
13027    }
13028    return true;
13029  }
13030
13031  protected EvidenceVariable parseEvidenceVariable(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13032    EvidenceVariable res = new EvidenceVariable();
13033    parseResourceAttributes(xpp, res);
13034    next(xpp);
13035    int eventType = nextNoWhitespace(xpp);
13036    while (eventType != XmlPullParser.END_TAG) {
13037    if (!parseEvidenceVariableContent(eventType, xpp, res))
13038        unknownContent(xpp);
13039      eventType = nextNoWhitespace(xpp);
13040    }
13041    next(xpp);
13042    parseElementClose(res);
13043    return res;
13044  }
13045
13046  protected boolean parseEvidenceVariableContent(int eventType, XmlPullParser xpp, EvidenceVariable res) throws XmlPullParserException, IOException, FHIRFormatError {
13047    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
13048      res.setUrlElement(parseUri(xpp));
13049    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13050      res.getIdentifier().add(parseIdentifier(xpp));
13051    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
13052      res.setVersionElement(parseString(xpp));
13053    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
13054      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
13055    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13056      res.setNameElement(parseString(xpp));
13057    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
13058      res.setTitleElement(parseString(xpp));
13059    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shortTitle")) {
13060      res.setShortTitleElement(parseString(xpp));
13061    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13062      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
13063    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
13064      res.setExperimentalElement(parseBoolean(xpp));
13065    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13066      res.setDateElement(parseDateTime(xpp));
13067    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
13068      res.setPublisherElement(parseString(xpp));
13069    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
13070      res.getContact().add(parseContactDetail(xpp));
13071    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13072      res.setDescriptionElement(parseMarkdown(xpp));
13073    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13074      res.getNote().add(parseAnnotation(xpp));
13075    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
13076      res.getUseContext().add(parseUsageContext(xpp));
13077    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
13078      res.setPurposeElement(parseMarkdown(xpp));
13079    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
13080      res.setCopyrightElement(parseMarkdown(xpp));
13081    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
13082      res.setCopyrightLabelElement(parseString(xpp));
13083    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
13084      res.setApprovalDateElement(parseDate(xpp));
13085    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
13086      res.setLastReviewDateElement(parseDate(xpp));
13087    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
13088      res.setEffectivePeriod(parsePeriod(xpp));
13089    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
13090      res.getAuthor().add(parseContactDetail(xpp));
13091    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
13092      res.getEditor().add(parseContactDetail(xpp));
13093    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
13094      res.getReviewer().add(parseContactDetail(xpp));
13095    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
13096      res.getEndorser().add(parseContactDetail(xpp));
13097    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
13098      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
13099    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actual")) {
13100      res.setActualElement(parseBoolean(xpp));
13101    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
13102      res.getCharacteristic().add(parseEvidenceVariableCharacteristicComponent(xpp));
13103    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("handling")) {
13104      res.setHandlingElement(parseEnumeration(xpp, Enumerations.EvidenceVariableHandling.NULL, new Enumerations.EvidenceVariableHandlingEnumFactory()));
13105    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
13106      res.getCategory().add(parseEvidenceVariableCategoryComponent(xpp));
13107    } else if (!parseMetadataResourceContent(eventType, xpp, res)){ 
13108      return false;
13109    }
13110    return true;
13111  }
13112
13113  protected EvidenceVariable.EvidenceVariableCharacteristicComponent parseEvidenceVariableCharacteristicComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13114    EvidenceVariable.EvidenceVariableCharacteristicComponent res = new EvidenceVariable.EvidenceVariableCharacteristicComponent();
13115    parseElementAttributes(xpp, res);
13116    next(xpp);
13117    int eventType = nextNoWhitespace(xpp);
13118    while (eventType != XmlPullParser.END_TAG) {
13119    if (!parseEvidenceVariableCharacteristicComponentContent(eventType, xpp, res))
13120        unknownContent(xpp);
13121      eventType = nextNoWhitespace(xpp);
13122    }
13123    next(xpp);
13124    parseElementClose(res);
13125    return res;
13126  }
13127
13128  protected boolean parseEvidenceVariableCharacteristicComponentContent(int eventType, XmlPullParser xpp, EvidenceVariable.EvidenceVariableCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13129    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
13130      res.setLinkIdElement(parseId(xpp));
13131    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13132      res.setDescriptionElement(parseMarkdown(xpp));
13133    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13134      res.getNote().add(parseAnnotation(xpp));
13135    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
13136      res.setExcludeElement(parseBoolean(xpp));
13137    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definitionReference")) {
13138      res.setDefinitionReference(parseReference(xpp));
13139    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definitionCanonical")) {
13140      res.setDefinitionCanonicalElement(parseCanonical(xpp));
13141    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definitionCodeableConcept")) {
13142      res.setDefinitionCodeableConcept(parseCodeableConcept(xpp));
13143    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definitionExpression")) {
13144      res.setDefinitionExpression(parseExpression(xpp));
13145    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definitionId")) {
13146      res.setDefinitionIdElement(parseId(xpp));
13147    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definitionByTypeAndValue")) {
13148      res.setDefinitionByTypeAndValue(parseEvidenceVariableCharacteristicDefinitionByTypeAndValueComponent(xpp));
13149    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definitionByCombination")) {
13150      res.setDefinitionByCombination(parseEvidenceVariableCharacteristicDefinitionByCombinationComponent(xpp));
13151    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "instances")) {
13152      res.setInstances(parseType("instances", xpp));
13153    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "duration")) {
13154      res.setDuration(parseType("duration", xpp));
13155    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeFromEvent")) {
13156      res.getTimeFromEvent().add(parseEvidenceVariableCharacteristicTimeFromEventComponent(xpp));
13157    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13158      return false;
13159    }
13160    return true;
13161  }
13162
13163  protected EvidenceVariable.EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent parseEvidenceVariableCharacteristicDefinitionByTypeAndValueComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13164    EvidenceVariable.EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent res = new EvidenceVariable.EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent();
13165    parseElementAttributes(xpp, res);
13166    next(xpp);
13167    int eventType = nextNoWhitespace(xpp);
13168    while (eventType != XmlPullParser.END_TAG) {
13169    if (!parseEvidenceVariableCharacteristicDefinitionByTypeAndValueComponentContent(eventType, xpp, res))
13170        unknownContent(xpp);
13171      eventType = nextNoWhitespace(xpp);
13172    }
13173    next(xpp);
13174    parseElementClose(res);
13175    return res;
13176  }
13177
13178  protected boolean parseEvidenceVariableCharacteristicDefinitionByTypeAndValueComponentContent(int eventType, XmlPullParser xpp, EvidenceVariable.EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13179    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13180      res.setType(parseCodeableConcept(xpp));
13181    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
13182      res.getMethod().add(parseCodeableConcept(xpp));
13183    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
13184      res.setDevice(parseReference(xpp));
13185    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
13186      res.setValue(parseType("value", xpp));
13187    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
13188      res.setOffset(parseCodeableConcept(xpp));
13189    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13190      return false;
13191    }
13192    return true;
13193  }
13194
13195  protected EvidenceVariable.EvidenceVariableCharacteristicDefinitionByCombinationComponent parseEvidenceVariableCharacteristicDefinitionByCombinationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13196    EvidenceVariable.EvidenceVariableCharacteristicDefinitionByCombinationComponent res = new EvidenceVariable.EvidenceVariableCharacteristicDefinitionByCombinationComponent();
13197    parseElementAttributes(xpp, res);
13198    next(xpp);
13199    int eventType = nextNoWhitespace(xpp);
13200    while (eventType != XmlPullParser.END_TAG) {
13201    if (!parseEvidenceVariableCharacteristicDefinitionByCombinationComponentContent(eventType, xpp, res))
13202        unknownContent(xpp);
13203      eventType = nextNoWhitespace(xpp);
13204    }
13205    next(xpp);
13206    parseElementClose(res);
13207    return res;
13208  }
13209
13210  protected boolean parseEvidenceVariableCharacteristicDefinitionByCombinationComponentContent(int eventType, XmlPullParser xpp, EvidenceVariable.EvidenceVariableCharacteristicDefinitionByCombinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13211    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13212      res.setCodeElement(parseEnumeration(xpp, EvidenceVariable.CharacteristicCombination.NULL, new EvidenceVariable.CharacteristicCombinationEnumFactory()));
13213    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("threshold")) {
13214      res.setThresholdElement(parsePositiveInt(xpp));
13215    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
13216      res.getCharacteristic().add(parseEvidenceVariableCharacteristicComponent(xpp));
13217    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13218      return false;
13219    }
13220    return true;
13221  }
13222
13223  protected EvidenceVariable.EvidenceVariableCharacteristicTimeFromEventComponent parseEvidenceVariableCharacteristicTimeFromEventComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13224    EvidenceVariable.EvidenceVariableCharacteristicTimeFromEventComponent res = new EvidenceVariable.EvidenceVariableCharacteristicTimeFromEventComponent();
13225    parseElementAttributes(xpp, res);
13226    next(xpp);
13227    int eventType = nextNoWhitespace(xpp);
13228    while (eventType != XmlPullParser.END_TAG) {
13229    if (!parseEvidenceVariableCharacteristicTimeFromEventComponentContent(eventType, xpp, res))
13230        unknownContent(xpp);
13231      eventType = nextNoWhitespace(xpp);
13232    }
13233    next(xpp);
13234    parseElementClose(res);
13235    return res;
13236  }
13237
13238  protected boolean parseEvidenceVariableCharacteristicTimeFromEventComponentContent(int eventType, XmlPullParser xpp, EvidenceVariable.EvidenceVariableCharacteristicTimeFromEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13239    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13240      res.setDescriptionElement(parseMarkdown(xpp));
13241    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13242      res.getNote().add(parseAnnotation(xpp));
13243    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "event")) {
13244      res.setEvent(parseType("event", xpp));
13245    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
13246      res.setQuantity(parseQuantity(xpp));
13247    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("range")) {
13248      res.setRange(parseRange(xpp));
13249    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13250      return false;
13251    }
13252    return true;
13253  }
13254
13255  protected EvidenceVariable.EvidenceVariableCategoryComponent parseEvidenceVariableCategoryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13256    EvidenceVariable.EvidenceVariableCategoryComponent res = new EvidenceVariable.EvidenceVariableCategoryComponent();
13257    parseElementAttributes(xpp, res);
13258    next(xpp);
13259    int eventType = nextNoWhitespace(xpp);
13260    while (eventType != XmlPullParser.END_TAG) {
13261    if (!parseEvidenceVariableCategoryComponentContent(eventType, xpp, res))
13262        unknownContent(xpp);
13263      eventType = nextNoWhitespace(xpp);
13264    }
13265    next(xpp);
13266    parseElementClose(res);
13267    return res;
13268  }
13269
13270  protected boolean parseEvidenceVariableCategoryComponentContent(int eventType, XmlPullParser xpp, EvidenceVariable.EvidenceVariableCategoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13271    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13272      res.setNameElement(parseString(xpp));
13273    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
13274      res.setValue(parseType("value", xpp));
13275    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13276      return false;
13277    }
13278    return true;
13279  }
13280
13281  protected ExampleScenario parseExampleScenario(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13282    ExampleScenario res = new ExampleScenario();
13283    parseResourceAttributes(xpp, res);
13284    next(xpp);
13285    int eventType = nextNoWhitespace(xpp);
13286    while (eventType != XmlPullParser.END_TAG) {
13287    if (!parseExampleScenarioContent(eventType, xpp, res))
13288        unknownContent(xpp);
13289      eventType = nextNoWhitespace(xpp);
13290    }
13291    next(xpp);
13292    parseElementClose(res);
13293    return res;
13294  }
13295
13296  protected boolean parseExampleScenarioContent(int eventType, XmlPullParser xpp, ExampleScenario res) throws XmlPullParserException, IOException, FHIRFormatError {
13297    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
13298      res.setUrlElement(parseUri(xpp));
13299    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13300      res.getIdentifier().add(parseIdentifier(xpp));
13301    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
13302      res.setVersionElement(parseString(xpp));
13303    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
13304      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
13305    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13306      res.setNameElement(parseString(xpp));
13307    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
13308      res.setTitleElement(parseString(xpp));
13309    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13310      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
13311    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
13312      res.setExperimentalElement(parseBoolean(xpp));
13313    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13314      res.setDateElement(parseDateTime(xpp));
13315    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
13316      res.setPublisherElement(parseString(xpp));
13317    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
13318      res.getContact().add(parseContactDetail(xpp));
13319    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13320      res.setDescriptionElement(parseMarkdown(xpp));
13321    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
13322      res.getUseContext().add(parseUsageContext(xpp));
13323    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
13324      res.getJurisdiction().add(parseCodeableConcept(xpp));
13325    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
13326      res.setPurposeElement(parseMarkdown(xpp));
13327    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
13328      res.setCopyrightElement(parseMarkdown(xpp));
13329    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
13330      res.setCopyrightLabelElement(parseString(xpp));
13331    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
13332      res.getActor().add(parseExampleScenarioActorComponent(xpp));
13333    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
13334      res.getInstance().add(parseExampleScenarioInstanceComponent(xpp));
13335    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("process")) {
13336      res.getProcess().add(parseExampleScenarioProcessComponent(xpp));
13337    } else if (!parseCanonicalResourceContent(eventType, xpp, res)){ 
13338      return false;
13339    }
13340    return true;
13341  }
13342
13343  protected ExampleScenario.ExampleScenarioActorComponent parseExampleScenarioActorComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13344    ExampleScenario.ExampleScenarioActorComponent res = new ExampleScenario.ExampleScenarioActorComponent();
13345    parseElementAttributes(xpp, res);
13346    next(xpp);
13347    int eventType = nextNoWhitespace(xpp);
13348    while (eventType != XmlPullParser.END_TAG) {
13349    if (!parseExampleScenarioActorComponentContent(eventType, xpp, res))
13350        unknownContent(xpp);
13351      eventType = nextNoWhitespace(xpp);
13352    }
13353    next(xpp);
13354    parseElementClose(res);
13355    return res;
13356  }
13357
13358  protected boolean parseExampleScenarioActorComponentContent(int eventType, XmlPullParser xpp, ExampleScenario.ExampleScenarioActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13359    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("key")) {
13360      res.setKeyElement(parseString(xpp));
13361    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13362      res.setTypeElement(parseEnumeration(xpp, Enumerations.ExampleScenarioActorType.NULL, new Enumerations.ExampleScenarioActorTypeEnumFactory()));
13363    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
13364      res.setTitleElement(parseString(xpp));
13365    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13366      res.setDescriptionElement(parseMarkdown(xpp));
13367    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13368      return false;
13369    }
13370    return true;
13371  }
13372
13373  protected ExampleScenario.ExampleScenarioInstanceComponent parseExampleScenarioInstanceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13374    ExampleScenario.ExampleScenarioInstanceComponent res = new ExampleScenario.ExampleScenarioInstanceComponent();
13375    parseElementAttributes(xpp, res);
13376    next(xpp);
13377    int eventType = nextNoWhitespace(xpp);
13378    while (eventType != XmlPullParser.END_TAG) {
13379    if (!parseExampleScenarioInstanceComponentContent(eventType, xpp, res))
13380        unknownContent(xpp);
13381      eventType = nextNoWhitespace(xpp);
13382    }
13383    next(xpp);
13384    parseElementClose(res);
13385    return res;
13386  }
13387
13388  protected boolean parseExampleScenarioInstanceComponentContent(int eventType, XmlPullParser xpp, ExampleScenario.ExampleScenarioInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13389    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("key")) {
13390      res.setKeyElement(parseString(xpp));
13391    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structureType")) {
13392      res.setStructureType(parseCoding(xpp));
13393    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structureVersion")) {
13394      res.setStructureVersionElement(parseString(xpp));
13395    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "structureProfile")) {
13396      res.setStructureProfile(parseType("structureProfile", xpp));
13397    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
13398      res.setTitleElement(parseString(xpp));
13399    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13400      res.setDescriptionElement(parseMarkdown(xpp));
13401    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
13402      res.setContent(parseReference(xpp));
13403    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
13404      res.getVersion().add(parseExampleScenarioInstanceVersionComponent(xpp));
13405    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("containedInstance")) {
13406      res.getContainedInstance().add(parseExampleScenarioInstanceContainedInstanceComponent(xpp));
13407    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13408      return false;
13409    }
13410    return true;
13411  }
13412
13413  protected ExampleScenario.ExampleScenarioInstanceVersionComponent parseExampleScenarioInstanceVersionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13414    ExampleScenario.ExampleScenarioInstanceVersionComponent res = new ExampleScenario.ExampleScenarioInstanceVersionComponent();
13415    parseElementAttributes(xpp, res);
13416    next(xpp);
13417    int eventType = nextNoWhitespace(xpp);
13418    while (eventType != XmlPullParser.END_TAG) {
13419    if (!parseExampleScenarioInstanceVersionComponentContent(eventType, xpp, res))
13420        unknownContent(xpp);
13421      eventType = nextNoWhitespace(xpp);
13422    }
13423    next(xpp);
13424    parseElementClose(res);
13425    return res;
13426  }
13427
13428  protected boolean parseExampleScenarioInstanceVersionComponentContent(int eventType, XmlPullParser xpp, ExampleScenario.ExampleScenarioInstanceVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13429    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("key")) {
13430      res.setKeyElement(parseString(xpp));
13431    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
13432      res.setTitleElement(parseString(xpp));
13433    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13434      res.setDescriptionElement(parseMarkdown(xpp));
13435    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
13436      res.setContent(parseReference(xpp));
13437    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13438      return false;
13439    }
13440    return true;
13441  }
13442
13443  protected ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent parseExampleScenarioInstanceContainedInstanceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13444    ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent res = new ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent();
13445    parseElementAttributes(xpp, res);
13446    next(xpp);
13447    int eventType = nextNoWhitespace(xpp);
13448    while (eventType != XmlPullParser.END_TAG) {
13449    if (!parseExampleScenarioInstanceContainedInstanceComponentContent(eventType, xpp, res))
13450        unknownContent(xpp);
13451      eventType = nextNoWhitespace(xpp);
13452    }
13453    next(xpp);
13454    parseElementClose(res);
13455    return res;
13456  }
13457
13458  protected boolean parseExampleScenarioInstanceContainedInstanceComponentContent(int eventType, XmlPullParser xpp, ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13459    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instanceReference")) {
13460      res.setInstanceReferenceElement(parseString(xpp));
13461    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionReference")) {
13462      res.setVersionReferenceElement(parseString(xpp));
13463    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13464      return false;
13465    }
13466    return true;
13467  }
13468
13469  protected ExampleScenario.ExampleScenarioProcessComponent parseExampleScenarioProcessComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13470    ExampleScenario.ExampleScenarioProcessComponent res = new ExampleScenario.ExampleScenarioProcessComponent();
13471    parseElementAttributes(xpp, res);
13472    next(xpp);
13473    int eventType = nextNoWhitespace(xpp);
13474    while (eventType != XmlPullParser.END_TAG) {
13475    if (!parseExampleScenarioProcessComponentContent(eventType, xpp, res))
13476        unknownContent(xpp);
13477      eventType = nextNoWhitespace(xpp);
13478    }
13479    next(xpp);
13480    parseElementClose(res);
13481    return res;
13482  }
13483
13484  protected boolean parseExampleScenarioProcessComponentContent(int eventType, XmlPullParser xpp, ExampleScenario.ExampleScenarioProcessComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13485    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
13486      res.setTitleElement(parseString(xpp));
13487    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13488      res.setDescriptionElement(parseMarkdown(xpp));
13489    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preConditions")) {
13490      res.setPreConditionsElement(parseMarkdown(xpp));
13491    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("postConditions")) {
13492      res.setPostConditionsElement(parseMarkdown(xpp));
13493    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("step")) {
13494      res.getStep().add(parseExampleScenarioProcessStepComponent(xpp));
13495    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13496      return false;
13497    }
13498    return true;
13499  }
13500
13501  protected ExampleScenario.ExampleScenarioProcessStepComponent parseExampleScenarioProcessStepComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13502    ExampleScenario.ExampleScenarioProcessStepComponent res = new ExampleScenario.ExampleScenarioProcessStepComponent();
13503    parseElementAttributes(xpp, res);
13504    next(xpp);
13505    int eventType = nextNoWhitespace(xpp);
13506    while (eventType != XmlPullParser.END_TAG) {
13507    if (!parseExampleScenarioProcessStepComponentContent(eventType, xpp, res))
13508        unknownContent(xpp);
13509      eventType = nextNoWhitespace(xpp);
13510    }
13511    next(xpp);
13512    parseElementClose(res);
13513    return res;
13514  }
13515
13516  protected boolean parseExampleScenarioProcessStepComponentContent(int eventType, XmlPullParser xpp, ExampleScenario.ExampleScenarioProcessStepComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13517    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
13518      res.setNumberElement(parseString(xpp));
13519    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("process")) {
13520      res.setProcess(parseExampleScenarioProcessComponent(xpp));
13521    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("workflow")) {
13522      res.setWorkflowElement(parseCanonical(xpp));
13523    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
13524      res.setOperation(parseExampleScenarioProcessStepOperationComponent(xpp));
13525    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternative")) {
13526      res.getAlternative().add(parseExampleScenarioProcessStepAlternativeComponent(xpp));
13527    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pause")) {
13528      res.setPauseElement(parseBoolean(xpp));
13529    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13530      return false;
13531    }
13532    return true;
13533  }
13534
13535  protected ExampleScenario.ExampleScenarioProcessStepOperationComponent parseExampleScenarioProcessStepOperationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13536    ExampleScenario.ExampleScenarioProcessStepOperationComponent res = new ExampleScenario.ExampleScenarioProcessStepOperationComponent();
13537    parseElementAttributes(xpp, res);
13538    next(xpp);
13539    int eventType = nextNoWhitespace(xpp);
13540    while (eventType != XmlPullParser.END_TAG) {
13541    if (!parseExampleScenarioProcessStepOperationComponentContent(eventType, xpp, res))
13542        unknownContent(xpp);
13543      eventType = nextNoWhitespace(xpp);
13544    }
13545    next(xpp);
13546    parseElementClose(res);
13547    return res;
13548  }
13549
13550  protected boolean parseExampleScenarioProcessStepOperationComponentContent(int eventType, XmlPullParser xpp, ExampleScenario.ExampleScenarioProcessStepOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13551    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13552      res.setType(parseCoding(xpp));
13553    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
13554      res.setTitleElement(parseString(xpp));
13555    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initiator")) {
13556      res.setInitiatorElement(parseString(xpp));
13557    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
13558      res.setReceiverElement(parseString(xpp));
13559    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13560      res.setDescriptionElement(parseMarkdown(xpp));
13561    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initiatorActive")) {
13562      res.setInitiatorActiveElement(parseBoolean(xpp));
13563    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiverActive")) {
13564      res.setReceiverActiveElement(parseBoolean(xpp));
13565    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
13566      res.setRequest(parseExampleScenarioInstanceContainedInstanceComponent(xpp));
13567    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
13568      res.setResponse(parseExampleScenarioInstanceContainedInstanceComponent(xpp));
13569    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13570      return false;
13571    }
13572    return true;
13573  }
13574
13575  protected ExampleScenario.ExampleScenarioProcessStepAlternativeComponent parseExampleScenarioProcessStepAlternativeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13576    ExampleScenario.ExampleScenarioProcessStepAlternativeComponent res = new ExampleScenario.ExampleScenarioProcessStepAlternativeComponent();
13577    parseElementAttributes(xpp, res);
13578    next(xpp);
13579    int eventType = nextNoWhitespace(xpp);
13580    while (eventType != XmlPullParser.END_TAG) {
13581    if (!parseExampleScenarioProcessStepAlternativeComponentContent(eventType, xpp, res))
13582        unknownContent(xpp);
13583      eventType = nextNoWhitespace(xpp);
13584    }
13585    next(xpp);
13586    parseElementClose(res);
13587    return res;
13588  }
13589
13590  protected boolean parseExampleScenarioProcessStepAlternativeComponentContent(int eventType, XmlPullParser xpp, ExampleScenario.ExampleScenarioProcessStepAlternativeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13591    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
13592      res.setTitleElement(parseString(xpp));
13593    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13594      res.setDescriptionElement(parseMarkdown(xpp));
13595    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("step")) {
13596      res.getStep().add(parseExampleScenarioProcessStepComponent(xpp));
13597    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13598      return false;
13599    }
13600    return true;
13601  }
13602
13603  protected ExplanationOfBenefit parseExplanationOfBenefit(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13604    ExplanationOfBenefit res = new ExplanationOfBenefit();
13605    parseResourceAttributes(xpp, res);
13606    next(xpp);
13607    int eventType = nextNoWhitespace(xpp);
13608    while (eventType != XmlPullParser.END_TAG) {
13609    if (!parseExplanationOfBenefitContent(eventType, xpp, res))
13610        unknownContent(xpp);
13611      eventType = nextNoWhitespace(xpp);
13612    }
13613    next(xpp);
13614    parseElementClose(res);
13615    return res;
13616  }
13617
13618  protected boolean parseExplanationOfBenefitContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit res) throws XmlPullParserException, IOException, FHIRFormatError {
13619    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13620      res.getIdentifier().add(parseIdentifier(xpp));
13621    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("traceNumber")) {
13622      res.getTraceNumber().add(parseIdentifier(xpp));
13623    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13624      res.setStatusElement(parseEnumeration(xpp, ExplanationOfBenefit.ExplanationOfBenefitStatus.NULL, new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory()));
13625    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13626      res.setType(parseCodeableConcept(xpp));
13627    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
13628      res.setSubType(parseCodeableConcept(xpp));
13629    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
13630      res.setUseElement(parseEnumeration(xpp, Enumerations.Use.NULL, new Enumerations.UseEnumFactory()));
13631    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
13632      res.setPatient(parseReference(xpp));
13633    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
13634      res.setBillablePeriod(parsePeriod(xpp));
13635    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
13636      res.setCreatedElement(parseDateTime(xpp));
13637    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
13638      res.setEnterer(parseReference(xpp));
13639    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
13640      res.setInsurer(parseReference(xpp));
13641    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
13642      res.setProvider(parseReference(xpp));
13643    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
13644      res.setPriority(parseCodeableConcept(xpp));
13645    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserveRequested")) {
13646      res.setFundsReserveRequested(parseCodeableConcept(xpp));
13647    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
13648      res.setFundsReserve(parseCodeableConcept(xpp));
13649    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
13650      res.getRelated().add(parseExplanationOfBenefitRelatedClaimComponent(xpp));
13651    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
13652      res.setPrescription(parseReference(xpp));
13653    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
13654      res.setOriginalPrescription(parseReference(xpp));
13655    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
13656      res.getEvent().add(parseExplanationOfBenefitEventComponent(xpp));
13657    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
13658      res.setPayee(parseExplanationOfBenefitPayeeComponent(xpp));
13659    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
13660      res.setReferral(parseReference(xpp));
13661    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
13662      res.getEncounter().add(parseReference(xpp));
13663    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
13664      res.setFacility(parseReference(xpp));
13665    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
13666      res.setClaim(parseReference(xpp));
13667    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
13668      res.setClaimResponse(parseReference(xpp));
13669    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
13670      res.setOutcomeElement(parseEnumeration(xpp, Enumerations.ClaimProcessingCodes.NULL, new Enumerations.ClaimProcessingCodesEnumFactory()));
13671    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decision")) {
13672      res.setDecision(parseCodeableConcept(xpp));
13673    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
13674      res.setDispositionElement(parseString(xpp));
13675    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
13676      res.getPreAuthRef().add(parseString(xpp));
13677    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRefPeriod")) {
13678      res.getPreAuthRefPeriod().add(parsePeriod(xpp));
13679    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisRelatedGroup")) {
13680      res.setDiagnosisRelatedGroup(parseCodeableConcept(xpp));
13681    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
13682      res.getCareTeam().add(parseExplanationOfBenefitCareTeamComponent(xpp));
13683    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
13684      res.getSupportingInfo().add(parseExplanationOfBenefitSupportingInformationComponent(xpp));
13685    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
13686      res.getDiagnosis().add(parseExplanationOfBenefitDiagnosisComponent(xpp));
13687    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
13688      res.getProcedure().add(parseExplanationOfBenefitProcedureComponent(xpp));
13689    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precedence")) {
13690      res.setPrecedenceElement(parsePositiveInt(xpp));
13691    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
13692      res.getInsurance().add(parseExplanationOfBenefitInsuranceComponent(xpp));
13693    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
13694      res.setAccident(parseExplanationOfBenefitAccidentComponent(xpp));
13695    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientPaid")) {
13696      res.setPatientPaid(parseMoney(xpp));
13697    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
13698      res.getItem().add(parseExplanationOfBenefitItemComponent(xpp));
13699    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
13700      res.getAddItem().add(parseExplanationOfBenefitAddedItemComponent(xpp));
13701    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
13702      res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp));
13703    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
13704      res.getTotal().add(parseExplanationOfBenefitTotalComponent(xpp));
13705    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
13706      res.setPayment(parseExplanationOfBenefitPaymentComponent(xpp));
13707    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("formCode")) {
13708      res.setFormCode(parseCodeableConcept(xpp));
13709    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
13710      res.setForm(parseAttachment(xpp));
13711    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
13712      res.getProcessNote().add(parseExplanationOfBenefitNoteComponent(xpp));
13713    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitPeriod")) {
13714      res.setBenefitPeriod(parsePeriod(xpp));
13715    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitBalance")) {
13716      res.getBenefitBalance().add(parseExplanationOfBenefitBenefitBalanceComponent(xpp));
13717    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
13718      return false;
13719    }
13720    return true;
13721  }
13722
13723  protected ExplanationOfBenefit.RelatedClaimComponent parseExplanationOfBenefitRelatedClaimComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13724    ExplanationOfBenefit.RelatedClaimComponent res = new ExplanationOfBenefit.RelatedClaimComponent();
13725    parseElementAttributes(xpp, res);
13726    next(xpp);
13727    int eventType = nextNoWhitespace(xpp);
13728    while (eventType != XmlPullParser.END_TAG) {
13729    if (!parseExplanationOfBenefitRelatedClaimComponentContent(eventType, xpp, res))
13730        unknownContent(xpp);
13731      eventType = nextNoWhitespace(xpp);
13732    }
13733    next(xpp);
13734    parseElementClose(res);
13735    return res;
13736  }
13737
13738  protected boolean parseExplanationOfBenefitRelatedClaimComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.RelatedClaimComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13739    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
13740      res.setClaim(parseReference(xpp));
13741    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
13742      res.setRelationship(parseCodeableConcept(xpp));
13743    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
13744      res.setReference(parseIdentifier(xpp));
13745    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13746      return false;
13747    }
13748    return true;
13749  }
13750
13751  protected ExplanationOfBenefit.ExplanationOfBenefitEventComponent parseExplanationOfBenefitEventComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13752    ExplanationOfBenefit.ExplanationOfBenefitEventComponent res = new ExplanationOfBenefit.ExplanationOfBenefitEventComponent();
13753    parseElementAttributes(xpp, res);
13754    next(xpp);
13755    int eventType = nextNoWhitespace(xpp);
13756    while (eventType != XmlPullParser.END_TAG) {
13757    if (!parseExplanationOfBenefitEventComponentContent(eventType, xpp, res))
13758        unknownContent(xpp);
13759      eventType = nextNoWhitespace(xpp);
13760    }
13761    next(xpp);
13762    parseElementClose(res);
13763    return res;
13764  }
13765
13766  protected boolean parseExplanationOfBenefitEventComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.ExplanationOfBenefitEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13767    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13768      res.setType(parseCodeableConcept(xpp));
13769    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "when")) {
13770      res.setWhen(parseType("when", xpp));
13771    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13772      return false;
13773    }
13774    return true;
13775  }
13776
13777  protected ExplanationOfBenefit.PayeeComponent parseExplanationOfBenefitPayeeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13778    ExplanationOfBenefit.PayeeComponent res = new ExplanationOfBenefit.PayeeComponent();
13779    parseElementAttributes(xpp, res);
13780    next(xpp);
13781    int eventType = nextNoWhitespace(xpp);
13782    while (eventType != XmlPullParser.END_TAG) {
13783    if (!parseExplanationOfBenefitPayeeComponentContent(eventType, xpp, res))
13784        unknownContent(xpp);
13785      eventType = nextNoWhitespace(xpp);
13786    }
13787    next(xpp);
13788    parseElementClose(res);
13789    return res;
13790  }
13791
13792  protected boolean parseExplanationOfBenefitPayeeComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.PayeeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13793    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13794      res.setType(parseCodeableConcept(xpp));
13795    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
13796      res.setParty(parseReference(xpp));
13797    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13798      return false;
13799    }
13800    return true;
13801  }
13802
13803  protected ExplanationOfBenefit.CareTeamComponent parseExplanationOfBenefitCareTeamComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13804    ExplanationOfBenefit.CareTeamComponent res = new ExplanationOfBenefit.CareTeamComponent();
13805    parseElementAttributes(xpp, res);
13806    next(xpp);
13807    int eventType = nextNoWhitespace(xpp);
13808    while (eventType != XmlPullParser.END_TAG) {
13809    if (!parseExplanationOfBenefitCareTeamComponentContent(eventType, xpp, res))
13810        unknownContent(xpp);
13811      eventType = nextNoWhitespace(xpp);
13812    }
13813    next(xpp);
13814    parseElementClose(res);
13815    return res;
13816  }
13817
13818  protected boolean parseExplanationOfBenefitCareTeamComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.CareTeamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13819    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
13820      res.setSequenceElement(parsePositiveInt(xpp));
13821    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
13822      res.setProvider(parseReference(xpp));
13823    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
13824      res.setResponsibleElement(parseBoolean(xpp));
13825    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
13826      res.setRole(parseCodeableConcept(xpp));
13827    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
13828      res.setSpecialty(parseCodeableConcept(xpp));
13829    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13830      return false;
13831    }
13832    return true;
13833  }
13834
13835  protected ExplanationOfBenefit.SupportingInformationComponent parseExplanationOfBenefitSupportingInformationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13836    ExplanationOfBenefit.SupportingInformationComponent res = new ExplanationOfBenefit.SupportingInformationComponent();
13837    parseElementAttributes(xpp, res);
13838    next(xpp);
13839    int eventType = nextNoWhitespace(xpp);
13840    while (eventType != XmlPullParser.END_TAG) {
13841    if (!parseExplanationOfBenefitSupportingInformationComponentContent(eventType, xpp, res))
13842        unknownContent(xpp);
13843      eventType = nextNoWhitespace(xpp);
13844    }
13845    next(xpp);
13846    parseElementClose(res);
13847    return res;
13848  }
13849
13850  protected boolean parseExplanationOfBenefitSupportingInformationComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.SupportingInformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13851    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
13852      res.setSequenceElement(parsePositiveInt(xpp));
13853    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
13854      res.setCategory(parseCodeableConcept(xpp));
13855    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13856      res.setCode(parseCodeableConcept(xpp));
13857    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
13858      res.setTiming(parseType("timing", xpp));
13859    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
13860      res.setValue(parseType("value", xpp));
13861    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
13862      res.setReason(parseCoding(xpp));
13863    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13864      return false;
13865    }
13866    return true;
13867  }
13868
13869  protected ExplanationOfBenefit.DiagnosisComponent parseExplanationOfBenefitDiagnosisComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13870    ExplanationOfBenefit.DiagnosisComponent res = new ExplanationOfBenefit.DiagnosisComponent();
13871    parseElementAttributes(xpp, res);
13872    next(xpp);
13873    int eventType = nextNoWhitespace(xpp);
13874    while (eventType != XmlPullParser.END_TAG) {
13875    if (!parseExplanationOfBenefitDiagnosisComponentContent(eventType, xpp, res))
13876        unknownContent(xpp);
13877      eventType = nextNoWhitespace(xpp);
13878    }
13879    next(xpp);
13880    parseElementClose(res);
13881    return res;
13882  }
13883
13884  protected boolean parseExplanationOfBenefitDiagnosisComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13885    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
13886      res.setSequenceElement(parsePositiveInt(xpp));
13887    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
13888      res.setDiagnosis(parseType("diagnosis", xpp));
13889    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13890      res.getType().add(parseCodeableConcept(xpp));
13891    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onAdmission")) {
13892      res.setOnAdmission(parseCodeableConcept(xpp));
13893    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13894      return false;
13895    }
13896    return true;
13897  }
13898
13899  protected ExplanationOfBenefit.ProcedureComponent parseExplanationOfBenefitProcedureComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13900    ExplanationOfBenefit.ProcedureComponent res = new ExplanationOfBenefit.ProcedureComponent();
13901    parseElementAttributes(xpp, res);
13902    next(xpp);
13903    int eventType = nextNoWhitespace(xpp);
13904    while (eventType != XmlPullParser.END_TAG) {
13905    if (!parseExplanationOfBenefitProcedureComponentContent(eventType, xpp, res))
13906        unknownContent(xpp);
13907      eventType = nextNoWhitespace(xpp);
13908    }
13909    next(xpp);
13910    parseElementClose(res);
13911    return res;
13912  }
13913
13914  protected boolean parseExplanationOfBenefitProcedureComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.ProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13915    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
13916      res.setSequenceElement(parsePositiveInt(xpp));
13917    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13918      res.getType().add(parseCodeableConcept(xpp));
13919    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13920      res.setDateElement(parseDateTime(xpp));
13921    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
13922      res.setProcedure(parseType("procedure", xpp));
13923    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
13924      res.getUdi().add(parseReference(xpp));
13925    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13926      return false;
13927    }
13928    return true;
13929  }
13930
13931  protected ExplanationOfBenefit.InsuranceComponent parseExplanationOfBenefitInsuranceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13932    ExplanationOfBenefit.InsuranceComponent res = new ExplanationOfBenefit.InsuranceComponent();
13933    parseElementAttributes(xpp, res);
13934    next(xpp);
13935    int eventType = nextNoWhitespace(xpp);
13936    while (eventType != XmlPullParser.END_TAG) {
13937    if (!parseExplanationOfBenefitInsuranceComponentContent(eventType, xpp, res))
13938        unknownContent(xpp);
13939      eventType = nextNoWhitespace(xpp);
13940    }
13941    next(xpp);
13942    parseElementClose(res);
13943    return res;
13944  }
13945
13946  protected boolean parseExplanationOfBenefitInsuranceComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13947    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
13948      res.setFocalElement(parseBoolean(xpp));
13949    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
13950      res.setCoverage(parseReference(xpp));
13951    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
13952      res.getPreAuthRef().add(parseString(xpp));
13953    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13954      return false;
13955    }
13956    return true;
13957  }
13958
13959  protected ExplanationOfBenefit.AccidentComponent parseExplanationOfBenefitAccidentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13960    ExplanationOfBenefit.AccidentComponent res = new ExplanationOfBenefit.AccidentComponent();
13961    parseElementAttributes(xpp, res);
13962    next(xpp);
13963    int eventType = nextNoWhitespace(xpp);
13964    while (eventType != XmlPullParser.END_TAG) {
13965    if (!parseExplanationOfBenefitAccidentComponentContent(eventType, xpp, res))
13966        unknownContent(xpp);
13967      eventType = nextNoWhitespace(xpp);
13968    }
13969    next(xpp);
13970    parseElementClose(res);
13971    return res;
13972  }
13973
13974  protected boolean parseExplanationOfBenefitAccidentComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.AccidentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13975    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13976      res.setDateElement(parseDate(xpp));
13977    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13978      res.setType(parseCodeableConcept(xpp));
13979    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
13980      res.setLocation(parseType("location", xpp));
13981    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
13982      return false;
13983    }
13984    return true;
13985  }
13986
13987  protected ExplanationOfBenefit.ItemComponent parseExplanationOfBenefitItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13988    ExplanationOfBenefit.ItemComponent res = new ExplanationOfBenefit.ItemComponent();
13989    parseElementAttributes(xpp, res);
13990    next(xpp);
13991    int eventType = nextNoWhitespace(xpp);
13992    while (eventType != XmlPullParser.END_TAG) {
13993    if (!parseExplanationOfBenefitItemComponentContent(eventType, xpp, res))
13994        unknownContent(xpp);
13995      eventType = nextNoWhitespace(xpp);
13996    }
13997    next(xpp);
13998    parseElementClose(res);
13999    return res;
14000  }
14001
14002  protected boolean parseExplanationOfBenefitItemComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14003    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
14004      res.setSequenceElement(parsePositiveInt(xpp));
14005    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeamSequence")) {
14006      res.getCareTeamSequence().add(parsePositiveInt(xpp));
14007    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisSequence")) {
14008      res.getDiagnosisSequence().add(parsePositiveInt(xpp));
14009    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureSequence")) {
14010      res.getProcedureSequence().add(parsePositiveInt(xpp));
14011    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSequence")) {
14012      res.getInformationSequence().add(parsePositiveInt(xpp));
14013    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("traceNumber")) {
14014      res.getTraceNumber().add(parseIdentifier(xpp));
14015    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
14016      res.setRevenue(parseCodeableConcept(xpp));
14017    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
14018      res.setCategory(parseCodeableConcept(xpp));
14019    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
14020      res.setProductOrService(parseCodeableConcept(xpp));
14021    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrServiceEnd")) {
14022      res.setProductOrServiceEnd(parseCodeableConcept(xpp));
14023    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
14024      res.getRequest().add(parseReference(xpp));
14025    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
14026      res.getModifier().add(parseCodeableConcept(xpp));
14027    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
14028      res.getProgramCode().add(parseCodeableConcept(xpp));
14029    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
14030      res.setServiced(parseType("serviced", xpp));
14031    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
14032      res.setLocation(parseType("location", xpp));
14033    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientPaid")) {
14034      res.setPatientPaid(parseMoney(xpp));
14035    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14036      res.setQuantity(parseQuantity(xpp));
14037    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
14038      res.setUnitPrice(parseMoney(xpp));
14039    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
14040      res.setFactorElement(parseDecimal(xpp));
14041    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tax")) {
14042      res.setTax(parseMoney(xpp));
14043    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
14044      res.setNet(parseMoney(xpp));
14045    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
14046      res.getUdi().add(parseReference(xpp));
14047    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
14048      res.getBodySite().add(parseExplanationOfBenefitItemBodySiteComponent(xpp));
14049    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
14050      res.getEncounter().add(parseReference(xpp));
14051    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
14052      res.getNoteNumber().add(parsePositiveInt(xpp));
14053    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewOutcome")) {
14054      res.setReviewOutcome(parseExplanationOfBenefitItemReviewOutcomeComponent(xpp));
14055    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
14056      res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp));
14057    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
14058      res.getDetail().add(parseExplanationOfBenefitDetailComponent(xpp));
14059    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14060      return false;
14061    }
14062    return true;
14063  }
14064
14065  protected ExplanationOfBenefit.ItemBodySiteComponent parseExplanationOfBenefitItemBodySiteComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14066    ExplanationOfBenefit.ItemBodySiteComponent res = new ExplanationOfBenefit.ItemBodySiteComponent();
14067    parseElementAttributes(xpp, res);
14068    next(xpp);
14069    int eventType = nextNoWhitespace(xpp);
14070    while (eventType != XmlPullParser.END_TAG) {
14071    if (!parseExplanationOfBenefitItemBodySiteComponentContent(eventType, xpp, res))
14072        unknownContent(xpp);
14073      eventType = nextNoWhitespace(xpp);
14074    }
14075    next(xpp);
14076    parseElementClose(res);
14077    return res;
14078  }
14079
14080  protected boolean parseExplanationOfBenefitItemBodySiteComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.ItemBodySiteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14081    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
14082      res.getSite().add(parseCodeableReference(xpp));
14083    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
14084      res.getSubSite().add(parseCodeableConcept(xpp));
14085    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14086      return false;
14087    }
14088    return true;
14089  }
14090
14091  protected ExplanationOfBenefit.ItemReviewOutcomeComponent parseExplanationOfBenefitItemReviewOutcomeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14092    ExplanationOfBenefit.ItemReviewOutcomeComponent res = new ExplanationOfBenefit.ItemReviewOutcomeComponent();
14093    parseElementAttributes(xpp, res);
14094    next(xpp);
14095    int eventType = nextNoWhitespace(xpp);
14096    while (eventType != XmlPullParser.END_TAG) {
14097    if (!parseExplanationOfBenefitItemReviewOutcomeComponentContent(eventType, xpp, res))
14098        unknownContent(xpp);
14099      eventType = nextNoWhitespace(xpp);
14100    }
14101    next(xpp);
14102    parseElementClose(res);
14103    return res;
14104  }
14105
14106  protected boolean parseExplanationOfBenefitItemReviewOutcomeComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.ItemReviewOutcomeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14107    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decision")) {
14108      res.setDecision(parseCodeableConcept(xpp));
14109    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
14110      res.getReason().add(parseCodeableConcept(xpp));
14111    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
14112      res.setPreAuthRefElement(parseString(xpp));
14113    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthPeriod")) {
14114      res.setPreAuthPeriod(parsePeriod(xpp));
14115    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14116      return false;
14117    }
14118    return true;
14119  }
14120
14121  protected ExplanationOfBenefit.AdjudicationComponent parseExplanationOfBenefitAdjudicationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14122    ExplanationOfBenefit.AdjudicationComponent res = new ExplanationOfBenefit.AdjudicationComponent();
14123    parseElementAttributes(xpp, res);
14124    next(xpp);
14125    int eventType = nextNoWhitespace(xpp);
14126    while (eventType != XmlPullParser.END_TAG) {
14127    if (!parseExplanationOfBenefitAdjudicationComponentContent(eventType, xpp, res))
14128        unknownContent(xpp);
14129      eventType = nextNoWhitespace(xpp);
14130    }
14131    next(xpp);
14132    parseElementClose(res);
14133    return res;
14134  }
14135
14136  protected boolean parseExplanationOfBenefitAdjudicationComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.AdjudicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14137    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
14138      res.setCategory(parseCodeableConcept(xpp));
14139    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
14140      res.setReason(parseCodeableConcept(xpp));
14141    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
14142      res.setAmount(parseMoney(xpp));
14143    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14144      res.setQuantity(parseQuantity(xpp));
14145    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14146      return false;
14147    }
14148    return true;
14149  }
14150
14151  protected ExplanationOfBenefit.DetailComponent parseExplanationOfBenefitDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14152    ExplanationOfBenefit.DetailComponent res = new ExplanationOfBenefit.DetailComponent();
14153    parseElementAttributes(xpp, res);
14154    next(xpp);
14155    int eventType = nextNoWhitespace(xpp);
14156    while (eventType != XmlPullParser.END_TAG) {
14157    if (!parseExplanationOfBenefitDetailComponentContent(eventType, xpp, res))
14158        unknownContent(xpp);
14159      eventType = nextNoWhitespace(xpp);
14160    }
14161    next(xpp);
14162    parseElementClose(res);
14163    return res;
14164  }
14165
14166  protected boolean parseExplanationOfBenefitDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.DetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14167    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
14168      res.setSequenceElement(parsePositiveInt(xpp));
14169    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("traceNumber")) {
14170      res.getTraceNumber().add(parseIdentifier(xpp));
14171    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
14172      res.setRevenue(parseCodeableConcept(xpp));
14173    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
14174      res.setCategory(parseCodeableConcept(xpp));
14175    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
14176      res.setProductOrService(parseCodeableConcept(xpp));
14177    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrServiceEnd")) {
14178      res.setProductOrServiceEnd(parseCodeableConcept(xpp));
14179    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
14180      res.getModifier().add(parseCodeableConcept(xpp));
14181    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
14182      res.getProgramCode().add(parseCodeableConcept(xpp));
14183    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientPaid")) {
14184      res.setPatientPaid(parseMoney(xpp));
14185    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14186      res.setQuantity(parseQuantity(xpp));
14187    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
14188      res.setUnitPrice(parseMoney(xpp));
14189    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
14190      res.setFactorElement(parseDecimal(xpp));
14191    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tax")) {
14192      res.setTax(parseMoney(xpp));
14193    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
14194      res.setNet(parseMoney(xpp));
14195    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
14196      res.getUdi().add(parseReference(xpp));
14197    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
14198      res.getNoteNumber().add(parsePositiveInt(xpp));
14199    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewOutcome")) {
14200      res.setReviewOutcome(parseExplanationOfBenefitItemReviewOutcomeComponent(xpp));
14201    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
14202      res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp));
14203    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
14204      res.getSubDetail().add(parseExplanationOfBenefitSubDetailComponent(xpp));
14205    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14206      return false;
14207    }
14208    return true;
14209  }
14210
14211  protected ExplanationOfBenefit.SubDetailComponent parseExplanationOfBenefitSubDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14212    ExplanationOfBenefit.SubDetailComponent res = new ExplanationOfBenefit.SubDetailComponent();
14213    parseElementAttributes(xpp, res);
14214    next(xpp);
14215    int eventType = nextNoWhitespace(xpp);
14216    while (eventType != XmlPullParser.END_TAG) {
14217    if (!parseExplanationOfBenefitSubDetailComponentContent(eventType, xpp, res))
14218        unknownContent(xpp);
14219      eventType = nextNoWhitespace(xpp);
14220    }
14221    next(xpp);
14222    parseElementClose(res);
14223    return res;
14224  }
14225
14226  protected boolean parseExplanationOfBenefitSubDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14227    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
14228      res.setSequenceElement(parsePositiveInt(xpp));
14229    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("traceNumber")) {
14230      res.getTraceNumber().add(parseIdentifier(xpp));
14231    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
14232      res.setRevenue(parseCodeableConcept(xpp));
14233    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
14234      res.setCategory(parseCodeableConcept(xpp));
14235    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
14236      res.setProductOrService(parseCodeableConcept(xpp));
14237    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrServiceEnd")) {
14238      res.setProductOrServiceEnd(parseCodeableConcept(xpp));
14239    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
14240      res.getModifier().add(parseCodeableConcept(xpp));
14241    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
14242      res.getProgramCode().add(parseCodeableConcept(xpp));
14243    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientPaid")) {
14244      res.setPatientPaid(parseMoney(xpp));
14245    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14246      res.setQuantity(parseQuantity(xpp));
14247    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
14248      res.setUnitPrice(parseMoney(xpp));
14249    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
14250      res.setFactorElement(parseDecimal(xpp));
14251    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tax")) {
14252      res.setTax(parseMoney(xpp));
14253    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
14254      res.setNet(parseMoney(xpp));
14255    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
14256      res.getUdi().add(parseReference(xpp));
14257    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
14258      res.getNoteNumber().add(parsePositiveInt(xpp));
14259    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewOutcome")) {
14260      res.setReviewOutcome(parseExplanationOfBenefitItemReviewOutcomeComponent(xpp));
14261    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
14262      res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp));
14263    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14264      return false;
14265    }
14266    return true;
14267  }
14268
14269  protected ExplanationOfBenefit.AddedItemComponent parseExplanationOfBenefitAddedItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14270    ExplanationOfBenefit.AddedItemComponent res = new ExplanationOfBenefit.AddedItemComponent();
14271    parseElementAttributes(xpp, res);
14272    next(xpp);
14273    int eventType = nextNoWhitespace(xpp);
14274    while (eventType != XmlPullParser.END_TAG) {
14275    if (!parseExplanationOfBenefitAddedItemComponentContent(eventType, xpp, res))
14276        unknownContent(xpp);
14277      eventType = nextNoWhitespace(xpp);
14278    }
14279    next(xpp);
14280    parseElementClose(res);
14281    return res;
14282  }
14283
14284  protected boolean parseExplanationOfBenefitAddedItemComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.AddedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14285    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
14286      res.getItemSequence().add(parsePositiveInt(xpp));
14287    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
14288      res.getDetailSequence().add(parsePositiveInt(xpp));
14289    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
14290      res.getSubDetailSequence().add(parsePositiveInt(xpp));
14291    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("traceNumber")) {
14292      res.getTraceNumber().add(parseIdentifier(xpp));
14293    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
14294      res.getProvider().add(parseReference(xpp));
14295    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
14296      res.setRevenue(parseCodeableConcept(xpp));
14297    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
14298      res.setProductOrService(parseCodeableConcept(xpp));
14299    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrServiceEnd")) {
14300      res.setProductOrServiceEnd(parseCodeableConcept(xpp));
14301    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
14302      res.getRequest().add(parseReference(xpp));
14303    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
14304      res.getModifier().add(parseCodeableConcept(xpp));
14305    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
14306      res.getProgramCode().add(parseCodeableConcept(xpp));
14307    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
14308      res.setServiced(parseType("serviced", xpp));
14309    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
14310      res.setLocation(parseType("location", xpp));
14311    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientPaid")) {
14312      res.setPatientPaid(parseMoney(xpp));
14313    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14314      res.setQuantity(parseQuantity(xpp));
14315    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
14316      res.setUnitPrice(parseMoney(xpp));
14317    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
14318      res.setFactorElement(parseDecimal(xpp));
14319    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tax")) {
14320      res.setTax(parseMoney(xpp));
14321    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
14322      res.setNet(parseMoney(xpp));
14323    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
14324      res.getBodySite().add(parseExplanationOfBenefitAddedItemBodySiteComponent(xpp));
14325    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
14326      res.getNoteNumber().add(parsePositiveInt(xpp));
14327    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewOutcome")) {
14328      res.setReviewOutcome(parseExplanationOfBenefitItemReviewOutcomeComponent(xpp));
14329    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
14330      res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp));
14331    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
14332      res.getDetail().add(parseExplanationOfBenefitAddedItemDetailComponent(xpp));
14333    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14334      return false;
14335    }
14336    return true;
14337  }
14338
14339  protected ExplanationOfBenefit.AddedItemBodySiteComponent parseExplanationOfBenefitAddedItemBodySiteComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14340    ExplanationOfBenefit.AddedItemBodySiteComponent res = new ExplanationOfBenefit.AddedItemBodySiteComponent();
14341    parseElementAttributes(xpp, res);
14342    next(xpp);
14343    int eventType = nextNoWhitespace(xpp);
14344    while (eventType != XmlPullParser.END_TAG) {
14345    if (!parseExplanationOfBenefitAddedItemBodySiteComponentContent(eventType, xpp, res))
14346        unknownContent(xpp);
14347      eventType = nextNoWhitespace(xpp);
14348    }
14349    next(xpp);
14350    parseElementClose(res);
14351    return res;
14352  }
14353
14354  protected boolean parseExplanationOfBenefitAddedItemBodySiteComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.AddedItemBodySiteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14355    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
14356      res.getSite().add(parseCodeableReference(xpp));
14357    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
14358      res.getSubSite().add(parseCodeableConcept(xpp));
14359    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14360      return false;
14361    }
14362    return true;
14363  }
14364
14365  protected ExplanationOfBenefit.AddedItemDetailComponent parseExplanationOfBenefitAddedItemDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14366    ExplanationOfBenefit.AddedItemDetailComponent res = new ExplanationOfBenefit.AddedItemDetailComponent();
14367    parseElementAttributes(xpp, res);
14368    next(xpp);
14369    int eventType = nextNoWhitespace(xpp);
14370    while (eventType != XmlPullParser.END_TAG) {
14371    if (!parseExplanationOfBenefitAddedItemDetailComponentContent(eventType, xpp, res))
14372        unknownContent(xpp);
14373      eventType = nextNoWhitespace(xpp);
14374    }
14375    next(xpp);
14376    parseElementClose(res);
14377    return res;
14378  }
14379
14380  protected boolean parseExplanationOfBenefitAddedItemDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.AddedItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14381    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("traceNumber")) {
14382      res.getTraceNumber().add(parseIdentifier(xpp));
14383    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
14384      res.setRevenue(parseCodeableConcept(xpp));
14385    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
14386      res.setProductOrService(parseCodeableConcept(xpp));
14387    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrServiceEnd")) {
14388      res.setProductOrServiceEnd(parseCodeableConcept(xpp));
14389    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
14390      res.getModifier().add(parseCodeableConcept(xpp));
14391    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientPaid")) {
14392      res.setPatientPaid(parseMoney(xpp));
14393    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14394      res.setQuantity(parseQuantity(xpp));
14395    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
14396      res.setUnitPrice(parseMoney(xpp));
14397    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
14398      res.setFactorElement(parseDecimal(xpp));
14399    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tax")) {
14400      res.setTax(parseMoney(xpp));
14401    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
14402      res.setNet(parseMoney(xpp));
14403    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
14404      res.getNoteNumber().add(parsePositiveInt(xpp));
14405    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewOutcome")) {
14406      res.setReviewOutcome(parseExplanationOfBenefitItemReviewOutcomeComponent(xpp));
14407    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
14408      res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp));
14409    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
14410      res.getSubDetail().add(parseExplanationOfBenefitAddedItemDetailSubDetailComponent(xpp));
14411    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14412      return false;
14413    }
14414    return true;
14415  }
14416
14417  protected ExplanationOfBenefit.AddedItemDetailSubDetailComponent parseExplanationOfBenefitAddedItemDetailSubDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14418    ExplanationOfBenefit.AddedItemDetailSubDetailComponent res = new ExplanationOfBenefit.AddedItemDetailSubDetailComponent();
14419    parseElementAttributes(xpp, res);
14420    next(xpp);
14421    int eventType = nextNoWhitespace(xpp);
14422    while (eventType != XmlPullParser.END_TAG) {
14423    if (!parseExplanationOfBenefitAddedItemDetailSubDetailComponentContent(eventType, xpp, res))
14424        unknownContent(xpp);
14425      eventType = nextNoWhitespace(xpp);
14426    }
14427    next(xpp);
14428    parseElementClose(res);
14429    return res;
14430  }
14431
14432  protected boolean parseExplanationOfBenefitAddedItemDetailSubDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.AddedItemDetailSubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14433    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("traceNumber")) {
14434      res.getTraceNumber().add(parseIdentifier(xpp));
14435    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
14436      res.setRevenue(parseCodeableConcept(xpp));
14437    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
14438      res.setProductOrService(parseCodeableConcept(xpp));
14439    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrServiceEnd")) {
14440      res.setProductOrServiceEnd(parseCodeableConcept(xpp));
14441    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
14442      res.getModifier().add(parseCodeableConcept(xpp));
14443    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientPaid")) {
14444      res.setPatientPaid(parseMoney(xpp));
14445    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14446      res.setQuantity(parseQuantity(xpp));
14447    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
14448      res.setUnitPrice(parseMoney(xpp));
14449    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
14450      res.setFactorElement(parseDecimal(xpp));
14451    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tax")) {
14452      res.setTax(parseMoney(xpp));
14453    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
14454      res.setNet(parseMoney(xpp));
14455    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
14456      res.getNoteNumber().add(parsePositiveInt(xpp));
14457    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewOutcome")) {
14458      res.setReviewOutcome(parseExplanationOfBenefitItemReviewOutcomeComponent(xpp));
14459    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
14460      res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp));
14461    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14462      return false;
14463    }
14464    return true;
14465  }
14466
14467  protected ExplanationOfBenefit.TotalComponent parseExplanationOfBenefitTotalComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14468    ExplanationOfBenefit.TotalComponent res = new ExplanationOfBenefit.TotalComponent();
14469    parseElementAttributes(xpp, res);
14470    next(xpp);
14471    int eventType = nextNoWhitespace(xpp);
14472    while (eventType != XmlPullParser.END_TAG) {
14473    if (!parseExplanationOfBenefitTotalComponentContent(eventType, xpp, res))
14474        unknownContent(xpp);
14475      eventType = nextNoWhitespace(xpp);
14476    }
14477    next(xpp);
14478    parseElementClose(res);
14479    return res;
14480  }
14481
14482  protected boolean parseExplanationOfBenefitTotalComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.TotalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14483    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
14484      res.setCategory(parseCodeableConcept(xpp));
14485    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
14486      res.setAmount(parseMoney(xpp));
14487    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14488      return false;
14489    }
14490    return true;
14491  }
14492
14493  protected ExplanationOfBenefit.PaymentComponent parseExplanationOfBenefitPaymentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14494    ExplanationOfBenefit.PaymentComponent res = new ExplanationOfBenefit.PaymentComponent();
14495    parseElementAttributes(xpp, res);
14496    next(xpp);
14497    int eventType = nextNoWhitespace(xpp);
14498    while (eventType != XmlPullParser.END_TAG) {
14499    if (!parseExplanationOfBenefitPaymentComponentContent(eventType, xpp, res))
14500        unknownContent(xpp);
14501      eventType = nextNoWhitespace(xpp);
14502    }
14503    next(xpp);
14504    parseElementClose(res);
14505    return res;
14506  }
14507
14508  protected boolean parseExplanationOfBenefitPaymentComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.PaymentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14509    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14510      res.setType(parseCodeableConcept(xpp));
14511    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustment")) {
14512      res.setAdjustment(parseMoney(xpp));
14513    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustmentReason")) {
14514      res.setAdjustmentReason(parseCodeableConcept(xpp));
14515    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14516      res.setDateElement(parseDate(xpp));
14517    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
14518      res.setAmount(parseMoney(xpp));
14519    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14520      res.setIdentifier(parseIdentifier(xpp));
14521    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14522      return false;
14523    }
14524    return true;
14525  }
14526
14527  protected ExplanationOfBenefit.NoteComponent parseExplanationOfBenefitNoteComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14528    ExplanationOfBenefit.NoteComponent res = new ExplanationOfBenefit.NoteComponent();
14529    parseElementAttributes(xpp, res);
14530    next(xpp);
14531    int eventType = nextNoWhitespace(xpp);
14532    while (eventType != XmlPullParser.END_TAG) {
14533    if (!parseExplanationOfBenefitNoteComponentContent(eventType, xpp, res))
14534        unknownContent(xpp);
14535      eventType = nextNoWhitespace(xpp);
14536    }
14537    next(xpp);
14538    parseElementClose(res);
14539    return res;
14540  }
14541
14542  protected boolean parseExplanationOfBenefitNoteComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.NoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14543    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
14544      res.setNumberElement(parsePositiveInt(xpp));
14545    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14546      res.setType(parseCodeableConcept(xpp));
14547    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
14548      res.setTextElement(parseString(xpp));
14549    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
14550      res.setLanguage(parseCodeableConcept(xpp));
14551    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14552      return false;
14553    }
14554    return true;
14555  }
14556
14557  protected ExplanationOfBenefit.BenefitBalanceComponent parseExplanationOfBenefitBenefitBalanceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14558    ExplanationOfBenefit.BenefitBalanceComponent res = new ExplanationOfBenefit.BenefitBalanceComponent();
14559    parseElementAttributes(xpp, res);
14560    next(xpp);
14561    int eventType = nextNoWhitespace(xpp);
14562    while (eventType != XmlPullParser.END_TAG) {
14563    if (!parseExplanationOfBenefitBenefitBalanceComponentContent(eventType, xpp, res))
14564        unknownContent(xpp);
14565      eventType = nextNoWhitespace(xpp);
14566    }
14567    next(xpp);
14568    parseElementClose(res);
14569    return res;
14570  }
14571
14572  protected boolean parseExplanationOfBenefitBenefitBalanceComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.BenefitBalanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14573    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
14574      res.setCategory(parseCodeableConcept(xpp));
14575    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excluded")) {
14576      res.setExcludedElement(parseBoolean(xpp));
14577    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14578      res.setNameElement(parseString(xpp));
14579    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14580      res.setDescriptionElement(parseString(xpp));
14581    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
14582      res.setNetwork(parseCodeableConcept(xpp));
14583    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
14584      res.setUnit(parseCodeableConcept(xpp));
14585    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
14586      res.setTerm(parseCodeableConcept(xpp));
14587    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("financial")) {
14588      res.getFinancial().add(parseExplanationOfBenefitBenefitComponent(xpp));
14589    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14590      return false;
14591    }
14592    return true;
14593  }
14594
14595  protected ExplanationOfBenefit.BenefitComponent parseExplanationOfBenefitBenefitComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14596    ExplanationOfBenefit.BenefitComponent res = new ExplanationOfBenefit.BenefitComponent();
14597    parseElementAttributes(xpp, res);
14598    next(xpp);
14599    int eventType = nextNoWhitespace(xpp);
14600    while (eventType != XmlPullParser.END_TAG) {
14601    if (!parseExplanationOfBenefitBenefitComponentContent(eventType, xpp, res))
14602        unknownContent(xpp);
14603      eventType = nextNoWhitespace(xpp);
14604    }
14605    next(xpp);
14606    parseElementClose(res);
14607    return res;
14608  }
14609
14610  protected boolean parseExplanationOfBenefitBenefitComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit.BenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14611    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14612      res.setType(parseCodeableConcept(xpp));
14613    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
14614      res.setAllowed(parseType("allowed", xpp));
14615    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "used")) {
14616      res.setUsed(parseType("used", xpp));
14617    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14618      return false;
14619    }
14620    return true;
14621  }
14622
14623  protected FamilyMemberHistory parseFamilyMemberHistory(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14624    FamilyMemberHistory res = new FamilyMemberHistory();
14625    parseResourceAttributes(xpp, res);
14626    next(xpp);
14627    int eventType = nextNoWhitespace(xpp);
14628    while (eventType != XmlPullParser.END_TAG) {
14629    if (!parseFamilyMemberHistoryContent(eventType, xpp, res))
14630        unknownContent(xpp);
14631      eventType = nextNoWhitespace(xpp);
14632    }
14633    next(xpp);
14634    parseElementClose(res);
14635    return res;
14636  }
14637
14638  protected boolean parseFamilyMemberHistoryContent(int eventType, XmlPullParser xpp, FamilyMemberHistory res) throws XmlPullParserException, IOException, FHIRFormatError {
14639    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14640      res.getIdentifier().add(parseIdentifier(xpp));
14641    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
14642      res.getInstantiatesCanonical().add(parseCanonical(xpp));
14643    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
14644      res.getInstantiatesUri().add(parseUri(xpp));
14645    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14646      res.setStatusElement(parseEnumeration(xpp, FamilyMemberHistory.FamilyHistoryStatus.NULL, new FamilyMemberHistory.FamilyHistoryStatusEnumFactory()));
14647    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
14648      res.setDataAbsentReason(parseCodeableConcept(xpp));
14649    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
14650      res.setPatient(parseReference(xpp));
14651    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14652      res.setDateElement(parseDateTime(xpp));
14653    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
14654      res.getParticipant().add(parseFamilyMemberHistoryParticipantComponent(xpp));
14655    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14656      res.setNameElement(parseString(xpp));
14657    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
14658      res.setRelationship(parseCodeableConcept(xpp));
14659    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sex")) {
14660      res.setSex(parseCodeableConcept(xpp));
14661    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "born")) {
14662      res.setBorn(parseType("born", xpp));
14663    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
14664      res.setAge(parseType("age", xpp));
14665    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("estimatedAge")) {
14666      res.setEstimatedAgeElement(parseBoolean(xpp));
14667    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
14668      res.setDeceased(parseType("deceased", xpp));
14669    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
14670      res.getReason().add(parseCodeableReference(xpp));
14671    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14672      res.getNote().add(parseAnnotation(xpp));
14673    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
14674      res.getCondition().add(parseFamilyMemberHistoryConditionComponent(xpp));
14675    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
14676      res.getProcedure().add(parseFamilyMemberHistoryProcedureComponent(xpp));
14677    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
14678      return false;
14679    }
14680    return true;
14681  }
14682
14683  protected FamilyMemberHistory.FamilyMemberHistoryParticipantComponent parseFamilyMemberHistoryParticipantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14684    FamilyMemberHistory.FamilyMemberHistoryParticipantComponent res = new FamilyMemberHistory.FamilyMemberHistoryParticipantComponent();
14685    parseElementAttributes(xpp, res);
14686    next(xpp);
14687    int eventType = nextNoWhitespace(xpp);
14688    while (eventType != XmlPullParser.END_TAG) {
14689    if (!parseFamilyMemberHistoryParticipantComponentContent(eventType, xpp, res))
14690        unknownContent(xpp);
14691      eventType = nextNoWhitespace(xpp);
14692    }
14693    next(xpp);
14694    parseElementClose(res);
14695    return res;
14696  }
14697
14698  protected boolean parseFamilyMemberHistoryParticipantComponentContent(int eventType, XmlPullParser xpp, FamilyMemberHistory.FamilyMemberHistoryParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14699    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
14700      res.setFunction(parseCodeableConcept(xpp));
14701    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
14702      res.setActor(parseReference(xpp));
14703    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14704      return false;
14705    }
14706    return true;
14707  }
14708
14709  protected FamilyMemberHistory.FamilyMemberHistoryConditionComponent parseFamilyMemberHistoryConditionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14710    FamilyMemberHistory.FamilyMemberHistoryConditionComponent res = new FamilyMemberHistory.FamilyMemberHistoryConditionComponent();
14711    parseElementAttributes(xpp, res);
14712    next(xpp);
14713    int eventType = nextNoWhitespace(xpp);
14714    while (eventType != XmlPullParser.END_TAG) {
14715    if (!parseFamilyMemberHistoryConditionComponentContent(eventType, xpp, res))
14716        unknownContent(xpp);
14717      eventType = nextNoWhitespace(xpp);
14718    }
14719    next(xpp);
14720    parseElementClose(res);
14721    return res;
14722  }
14723
14724  protected boolean parseFamilyMemberHistoryConditionComponentContent(int eventType, XmlPullParser xpp, FamilyMemberHistory.FamilyMemberHistoryConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14725    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14726      res.setCode(parseCodeableConcept(xpp));
14727    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
14728      res.setOutcome(parseCodeableConcept(xpp));
14729    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributedToDeath")) {
14730      res.setContributedToDeathElement(parseBoolean(xpp));
14731    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
14732      res.setOnset(parseType("onset", xpp));
14733    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14734      res.getNote().add(parseAnnotation(xpp));
14735    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14736      return false;
14737    }
14738    return true;
14739  }
14740
14741  protected FamilyMemberHistory.FamilyMemberHistoryProcedureComponent parseFamilyMemberHistoryProcedureComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14742    FamilyMemberHistory.FamilyMemberHistoryProcedureComponent res = new FamilyMemberHistory.FamilyMemberHistoryProcedureComponent();
14743    parseElementAttributes(xpp, res);
14744    next(xpp);
14745    int eventType = nextNoWhitespace(xpp);
14746    while (eventType != XmlPullParser.END_TAG) {
14747    if (!parseFamilyMemberHistoryProcedureComponentContent(eventType, xpp, res))
14748        unknownContent(xpp);
14749      eventType = nextNoWhitespace(xpp);
14750    }
14751    next(xpp);
14752    parseElementClose(res);
14753    return res;
14754  }
14755
14756  protected boolean parseFamilyMemberHistoryProcedureComponentContent(int eventType, XmlPullParser xpp, FamilyMemberHistory.FamilyMemberHistoryProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14757    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14758      res.setCode(parseCodeableConcept(xpp));
14759    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
14760      res.setOutcome(parseCodeableConcept(xpp));
14761    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributedToDeath")) {
14762      res.setContributedToDeathElement(parseBoolean(xpp));
14763    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "performed")) {
14764      res.setPerformed(parseType("performed", xpp));
14765    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14766      res.getNote().add(parseAnnotation(xpp));
14767    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14768      return false;
14769    }
14770    return true;
14771  }
14772
14773  protected Flag parseFlag(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14774    Flag res = new Flag();
14775    parseResourceAttributes(xpp, res);
14776    next(xpp);
14777    int eventType = nextNoWhitespace(xpp);
14778    while (eventType != XmlPullParser.END_TAG) {
14779    if (!parseFlagContent(eventType, xpp, res))
14780        unknownContent(xpp);
14781      eventType = nextNoWhitespace(xpp);
14782    }
14783    next(xpp);
14784    parseElementClose(res);
14785    return res;
14786  }
14787
14788  protected boolean parseFlagContent(int eventType, XmlPullParser xpp, Flag res) throws XmlPullParserException, IOException, FHIRFormatError {
14789    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14790      res.getIdentifier().add(parseIdentifier(xpp));
14791    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14792      res.setStatusElement(parseEnumeration(xpp, Flag.FlagStatus.NULL, new Flag.FlagStatusEnumFactory()));
14793    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
14794      res.getCategory().add(parseCodeableConcept(xpp));
14795    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14796      res.setCode(parseCodeableConcept(xpp));
14797    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14798      res.setSubject(parseReference(xpp));
14799    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
14800      res.setPeriod(parsePeriod(xpp));
14801    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
14802      res.setEncounter(parseReference(xpp));
14803    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
14804      res.setAuthor(parseReference(xpp));
14805    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
14806      return false;
14807    }
14808    return true;
14809  }
14810
14811  protected FormularyItem parseFormularyItem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14812    FormularyItem res = new FormularyItem();
14813    parseResourceAttributes(xpp, res);
14814    next(xpp);
14815    int eventType = nextNoWhitespace(xpp);
14816    while (eventType != XmlPullParser.END_TAG) {
14817    if (!parseFormularyItemContent(eventType, xpp, res))
14818        unknownContent(xpp);
14819      eventType = nextNoWhitespace(xpp);
14820    }
14821    next(xpp);
14822    parseElementClose(res);
14823    return res;
14824  }
14825
14826  protected boolean parseFormularyItemContent(int eventType, XmlPullParser xpp, FormularyItem res) throws XmlPullParserException, IOException, FHIRFormatError {
14827    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14828      res.getIdentifier().add(parseIdentifier(xpp));
14829    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
14830      res.setCode(parseCodeableConcept(xpp));
14831    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14832      res.setStatusElement(parseEnumeration(xpp, FormularyItem.FormularyItemStatusCodes.NULL, new FormularyItem.FormularyItemStatusCodesEnumFactory()));
14833    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
14834      return false;
14835    }
14836    return true;
14837  }
14838
14839  protected GenomicStudy parseGenomicStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14840    GenomicStudy res = new GenomicStudy();
14841    parseResourceAttributes(xpp, res);
14842    next(xpp);
14843    int eventType = nextNoWhitespace(xpp);
14844    while (eventType != XmlPullParser.END_TAG) {
14845    if (!parseGenomicStudyContent(eventType, xpp, res))
14846        unknownContent(xpp);
14847      eventType = nextNoWhitespace(xpp);
14848    }
14849    next(xpp);
14850    parseElementClose(res);
14851    return res;
14852  }
14853
14854  protected boolean parseGenomicStudyContent(int eventType, XmlPullParser xpp, GenomicStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
14855    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14856      res.getIdentifier().add(parseIdentifier(xpp));
14857    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14858      res.setStatusElement(parseEnumeration(xpp, GenomicStudy.GenomicStudyStatus.NULL, new GenomicStudy.GenomicStudyStatusEnumFactory()));
14859    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14860      res.getType().add(parseCodeableConcept(xpp));
14861    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14862      res.setSubject(parseReference(xpp));
14863    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
14864      res.setEncounter(parseReference(xpp));
14865    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("startDate")) {
14866      res.setStartDateElement(parseDateTime(xpp));
14867    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
14868      res.getBasedOn().add(parseReference(xpp));
14869    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referrer")) {
14870      res.setReferrer(parseReference(xpp));
14871    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpreter")) {
14872      res.getInterpreter().add(parseReference(xpp));
14873    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
14874      res.getReason().add(parseCodeableReference(xpp));
14875    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
14876      res.setInstantiatesCanonicalElement(parseCanonical(xpp));
14877    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
14878      res.setInstantiatesUriElement(parseUri(xpp));
14879    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14880      res.getNote().add(parseAnnotation(xpp));
14881    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
14882      res.setDescriptionElement(parseMarkdown(xpp));
14883    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("analysis")) {
14884      res.getAnalysis().add(parseGenomicStudyAnalysisComponent(xpp));
14885    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
14886      return false;
14887    }
14888    return true;
14889  }
14890
14891  protected GenomicStudy.GenomicStudyAnalysisComponent parseGenomicStudyAnalysisComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14892    GenomicStudy.GenomicStudyAnalysisComponent res = new GenomicStudy.GenomicStudyAnalysisComponent();
14893    parseElementAttributes(xpp, res);
14894    next(xpp);
14895    int eventType = nextNoWhitespace(xpp);
14896    while (eventType != XmlPullParser.END_TAG) {
14897    if (!parseGenomicStudyAnalysisComponentContent(eventType, xpp, res))
14898        unknownContent(xpp);
14899      eventType = nextNoWhitespace(xpp);
14900    }
14901    next(xpp);
14902    parseElementClose(res);
14903    return res;
14904  }
14905
14906  protected boolean parseGenomicStudyAnalysisComponentContent(int eventType, XmlPullParser xpp, GenomicStudy.GenomicStudyAnalysisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14907    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14908      res.getIdentifier().add(parseIdentifier(xpp));
14909    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("methodType")) {
14910      res.getMethodType().add(parseCodeableConcept(xpp));
14911    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("changeType")) {
14912      res.getChangeType().add(parseCodeableConcept(xpp));
14913    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genomeBuild")) {
14914      res.setGenomeBuild(parseCodeableConcept(xpp));
14915    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
14916      res.setInstantiatesCanonicalElement(parseCanonical(xpp));
14917    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
14918      res.setInstantiatesUriElement(parseUri(xpp));
14919    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
14920      res.setTitleElement(parseString(xpp));
14921    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
14922      res.getFocus().add(parseReference(xpp));
14923    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
14924      res.getSpecimen().add(parseReference(xpp));
14925    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14926      res.setDateElement(parseDateTime(xpp));
14927    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14928      res.getNote().add(parseAnnotation(xpp));
14929    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocolPerformed")) {
14930      res.setProtocolPerformed(parseReference(xpp));
14931    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regionsStudied")) {
14932      res.getRegionsStudied().add(parseReference(xpp));
14933    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regionsCalled")) {
14934      res.getRegionsCalled().add(parseReference(xpp));
14935    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
14936      res.getInput().add(parseGenomicStudyAnalysisInputComponent(xpp));
14937    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
14938      res.getOutput().add(parseGenomicStudyAnalysisOutputComponent(xpp));
14939    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
14940      res.getPerformer().add(parseGenomicStudyAnalysisPerformerComponent(xpp));
14941    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
14942      res.getDevice().add(parseGenomicStudyAnalysisDeviceComponent(xpp));
14943    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14944      return false;
14945    }
14946    return true;
14947  }
14948
14949  protected GenomicStudy.GenomicStudyAnalysisInputComponent parseGenomicStudyAnalysisInputComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14950    GenomicStudy.GenomicStudyAnalysisInputComponent res = new GenomicStudy.GenomicStudyAnalysisInputComponent();
14951    parseElementAttributes(xpp, res);
14952    next(xpp);
14953    int eventType = nextNoWhitespace(xpp);
14954    while (eventType != XmlPullParser.END_TAG) {
14955    if (!parseGenomicStudyAnalysisInputComponentContent(eventType, xpp, res))
14956        unknownContent(xpp);
14957      eventType = nextNoWhitespace(xpp);
14958    }
14959    next(xpp);
14960    parseElementClose(res);
14961    return res;
14962  }
14963
14964  protected boolean parseGenomicStudyAnalysisInputComponentContent(int eventType, XmlPullParser xpp, GenomicStudy.GenomicStudyAnalysisInputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14965    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("file")) {
14966      res.setFile(parseReference(xpp));
14967    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14968      res.setType(parseCodeableConcept(xpp));
14969    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "generatedBy")) {
14970      res.setGeneratedBy(parseType("generatedBy", xpp));
14971    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14972      return false;
14973    }
14974    return true;
14975  }
14976
14977  protected GenomicStudy.GenomicStudyAnalysisOutputComponent parseGenomicStudyAnalysisOutputComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14978    GenomicStudy.GenomicStudyAnalysisOutputComponent res = new GenomicStudy.GenomicStudyAnalysisOutputComponent();
14979    parseElementAttributes(xpp, res);
14980    next(xpp);
14981    int eventType = nextNoWhitespace(xpp);
14982    while (eventType != XmlPullParser.END_TAG) {
14983    if (!parseGenomicStudyAnalysisOutputComponentContent(eventType, xpp, res))
14984        unknownContent(xpp);
14985      eventType = nextNoWhitespace(xpp);
14986    }
14987    next(xpp);
14988    parseElementClose(res);
14989    return res;
14990  }
14991
14992  protected boolean parseGenomicStudyAnalysisOutputComponentContent(int eventType, XmlPullParser xpp, GenomicStudy.GenomicStudyAnalysisOutputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14993    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("file")) {
14994      res.setFile(parseReference(xpp));
14995    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14996      res.setType(parseCodeableConcept(xpp));
14997    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
14998      return false;
14999    }
15000    return true;
15001  }
15002
15003  protected GenomicStudy.GenomicStudyAnalysisPerformerComponent parseGenomicStudyAnalysisPerformerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15004    GenomicStudy.GenomicStudyAnalysisPerformerComponent res = new GenomicStudy.GenomicStudyAnalysisPerformerComponent();
15005    parseElementAttributes(xpp, res);
15006    next(xpp);
15007    int eventType = nextNoWhitespace(xpp);
15008    while (eventType != XmlPullParser.END_TAG) {
15009    if (!parseGenomicStudyAnalysisPerformerComponentContent(eventType, xpp, res))
15010        unknownContent(xpp);
15011      eventType = nextNoWhitespace(xpp);
15012    }
15013    next(xpp);
15014    parseElementClose(res);
15015    return res;
15016  }
15017
15018  protected boolean parseGenomicStudyAnalysisPerformerComponentContent(int eventType, XmlPullParser xpp, GenomicStudy.GenomicStudyAnalysisPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15019    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
15020      res.setActor(parseReference(xpp));
15021    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
15022      res.setRole(parseCodeableConcept(xpp));
15023    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15024      return false;
15025    }
15026    return true;
15027  }
15028
15029  protected GenomicStudy.GenomicStudyAnalysisDeviceComponent parseGenomicStudyAnalysisDeviceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15030    GenomicStudy.GenomicStudyAnalysisDeviceComponent res = new GenomicStudy.GenomicStudyAnalysisDeviceComponent();
15031    parseElementAttributes(xpp, res);
15032    next(xpp);
15033    int eventType = nextNoWhitespace(xpp);
15034    while (eventType != XmlPullParser.END_TAG) {
15035    if (!parseGenomicStudyAnalysisDeviceComponentContent(eventType, xpp, res))
15036        unknownContent(xpp);
15037      eventType = nextNoWhitespace(xpp);
15038    }
15039    next(xpp);
15040    parseElementClose(res);
15041    return res;
15042  }
15043
15044  protected boolean parseGenomicStudyAnalysisDeviceComponentContent(int eventType, XmlPullParser xpp, GenomicStudy.GenomicStudyAnalysisDeviceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15045    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
15046      res.setDevice(parseReference(xpp));
15047    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
15048      res.setFunction(parseCodeableConcept(xpp));
15049    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15050      return false;
15051    }
15052    return true;
15053  }
15054
15055  protected Goal parseGoal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15056    Goal res = new Goal();
15057    parseResourceAttributes(xpp, res);
15058    next(xpp);
15059    int eventType = nextNoWhitespace(xpp);
15060    while (eventType != XmlPullParser.END_TAG) {
15061    if (!parseGoalContent(eventType, xpp, res))
15062        unknownContent(xpp);
15063      eventType = nextNoWhitespace(xpp);
15064    }
15065    next(xpp);
15066    parseElementClose(res);
15067    return res;
15068  }
15069
15070  protected boolean parseGoalContent(int eventType, XmlPullParser xpp, Goal res) throws XmlPullParserException, IOException, FHIRFormatError {
15071    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15072      res.getIdentifier().add(parseIdentifier(xpp));
15073    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lifecycleStatus")) {
15074      res.setLifecycleStatusElement(parseEnumeration(xpp, Goal.GoalLifecycleStatus.NULL, new Goal.GoalLifecycleStatusEnumFactory()));
15075    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("achievementStatus")) {
15076      res.setAchievementStatus(parseCodeableConcept(xpp));
15077    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
15078      res.getCategory().add(parseCodeableConcept(xpp));
15079    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("continuous")) {
15080      res.setContinuousElement(parseBoolean(xpp));
15081    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
15082      res.setPriority(parseCodeableConcept(xpp));
15083    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15084      res.setDescription(parseCodeableConcept(xpp));
15085    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15086      res.setSubject(parseReference(xpp));
15087    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "start")) {
15088      res.setStart(parseType("start", xpp));
15089    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
15090      res.getTarget().add(parseGoalTargetComponent(xpp));
15091    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
15092      res.setStatusDateElement(parseDate(xpp));
15093    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
15094      res.setStatusReasonElement(parseString(xpp));
15095    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
15096      res.setSource(parseReference(xpp));
15097    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
15098      res.getAddresses().add(parseReference(xpp));
15099    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
15100      res.getNote().add(parseAnnotation(xpp));
15101    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
15102      res.getOutcome().add(parseCodeableReference(xpp));
15103    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
15104      return false;
15105    }
15106    return true;
15107  }
15108
15109  protected Goal.GoalTargetComponent parseGoalTargetComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15110    Goal.GoalTargetComponent res = new Goal.GoalTargetComponent();
15111    parseElementAttributes(xpp, res);
15112    next(xpp);
15113    int eventType = nextNoWhitespace(xpp);
15114    while (eventType != XmlPullParser.END_TAG) {
15115    if (!parseGoalTargetComponentContent(eventType, xpp, res))
15116        unknownContent(xpp);
15117      eventType = nextNoWhitespace(xpp);
15118    }
15119    next(xpp);
15120    parseElementClose(res);
15121    return res;
15122  }
15123
15124  protected boolean parseGoalTargetComponentContent(int eventType, XmlPullParser xpp, Goal.GoalTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15125    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
15126      res.setMeasure(parseCodeableConcept(xpp));
15127    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "detail")) {
15128      res.setDetail(parseType("detail", xpp));
15129    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "due")) {
15130      res.setDue(parseType("due", xpp));
15131    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15132      return false;
15133    }
15134    return true;
15135  }
15136
15137  protected GraphDefinition parseGraphDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15138    GraphDefinition res = new GraphDefinition();
15139    parseResourceAttributes(xpp, res);
15140    next(xpp);
15141    int eventType = nextNoWhitespace(xpp);
15142    while (eventType != XmlPullParser.END_TAG) {
15143    if (!parseGraphDefinitionContent(eventType, xpp, res))
15144        unknownContent(xpp);
15145      eventType = nextNoWhitespace(xpp);
15146    }
15147    next(xpp);
15148    parseElementClose(res);
15149    return res;
15150  }
15151
15152  protected boolean parseGraphDefinitionContent(int eventType, XmlPullParser xpp, GraphDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
15153    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
15154      res.setUrlElement(parseUri(xpp));
15155    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15156      res.getIdentifier().add(parseIdentifier(xpp));
15157    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
15158      res.setVersionElement(parseString(xpp));
15159    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
15160      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
15161    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15162      res.setNameElement(parseString(xpp));
15163    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
15164      res.setTitleElement(parseString(xpp));
15165    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15166      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
15167    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
15168      res.setExperimentalElement(parseBoolean(xpp));
15169    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
15170      res.setDateElement(parseDateTime(xpp));
15171    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
15172      res.setPublisherElement(parseString(xpp));
15173    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15174      res.getContact().add(parseContactDetail(xpp));
15175    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15176      res.setDescriptionElement(parseMarkdown(xpp));
15177    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
15178      res.getUseContext().add(parseUsageContext(xpp));
15179    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
15180      res.getJurisdiction().add(parseCodeableConcept(xpp));
15181    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
15182      res.setPurposeElement(parseMarkdown(xpp));
15183    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
15184      res.setCopyrightElement(parseMarkdown(xpp));
15185    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
15186      res.setCopyrightLabelElement(parseString(xpp));
15187    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
15188      res.setStartElement(parseId(xpp));
15189    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("node")) {
15190      res.getNode().add(parseGraphDefinitionNodeComponent(xpp));
15191    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
15192      res.getLink().add(parseGraphDefinitionLinkComponent(xpp));
15193    } else if (!parseCanonicalResourceContent(eventType, xpp, res)){ 
15194      return false;
15195    }
15196    return true;
15197  }
15198
15199  protected GraphDefinition.GraphDefinitionNodeComponent parseGraphDefinitionNodeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15200    GraphDefinition.GraphDefinitionNodeComponent res = new GraphDefinition.GraphDefinitionNodeComponent();
15201    parseElementAttributes(xpp, res);
15202    next(xpp);
15203    int eventType = nextNoWhitespace(xpp);
15204    while (eventType != XmlPullParser.END_TAG) {
15205    if (!parseGraphDefinitionNodeComponentContent(eventType, xpp, res))
15206        unknownContent(xpp);
15207      eventType = nextNoWhitespace(xpp);
15208    }
15209    next(xpp);
15210    parseElementClose(res);
15211    return res;
15212  }
15213
15214  protected boolean parseGraphDefinitionNodeComponentContent(int eventType, XmlPullParser xpp, GraphDefinition.GraphDefinitionNodeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15215    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nodeId")) {
15216      res.setNodeIdElement(parseId(xpp));
15217    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15218      res.setDescriptionElement(parseString(xpp));
15219    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15220      res.setTypeElement(parseEnumeration(xpp, Enumerations.VersionIndependentResourceTypesAll.NULL, new Enumerations.VersionIndependentResourceTypesAllEnumFactory()));
15221    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
15222      res.setProfileElement(parseCanonical(xpp));
15223    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15224      return false;
15225    }
15226    return true;
15227  }
15228
15229  protected GraphDefinition.GraphDefinitionLinkComponent parseGraphDefinitionLinkComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15230    GraphDefinition.GraphDefinitionLinkComponent res = new GraphDefinition.GraphDefinitionLinkComponent();
15231    parseElementAttributes(xpp, res);
15232    next(xpp);
15233    int eventType = nextNoWhitespace(xpp);
15234    while (eventType != XmlPullParser.END_TAG) {
15235    if (!parseGraphDefinitionLinkComponentContent(eventType, xpp, res))
15236        unknownContent(xpp);
15237      eventType = nextNoWhitespace(xpp);
15238    }
15239    next(xpp);
15240    parseElementClose(res);
15241    return res;
15242  }
15243
15244  protected boolean parseGraphDefinitionLinkComponentContent(int eventType, XmlPullParser xpp, GraphDefinition.GraphDefinitionLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15245    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15246      res.setDescriptionElement(parseString(xpp));
15247    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
15248      res.setMinElement(parseInteger(xpp));
15249    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
15250      res.setMaxElement(parseString(xpp));
15251    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
15252      res.setSourceIdElement(parseId(xpp));
15253    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
15254      res.setPathElement(parseString(xpp));
15255    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceName")) {
15256      res.setSliceNameElement(parseString(xpp));
15257    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetId")) {
15258      res.setTargetIdElement(parseId(xpp));
15259    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("params")) {
15260      res.setParamsElement(parseString(xpp));
15261    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
15262      res.getCompartment().add(parseGraphDefinitionLinkCompartmentComponent(xpp));
15263    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15264      return false;
15265    }
15266    return true;
15267  }
15268
15269  protected GraphDefinition.GraphDefinitionLinkCompartmentComponent parseGraphDefinitionLinkCompartmentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15270    GraphDefinition.GraphDefinitionLinkCompartmentComponent res = new GraphDefinition.GraphDefinitionLinkCompartmentComponent();
15271    parseElementAttributes(xpp, res);
15272    next(xpp);
15273    int eventType = nextNoWhitespace(xpp);
15274    while (eventType != XmlPullParser.END_TAG) {
15275    if (!parseGraphDefinitionLinkCompartmentComponentContent(eventType, xpp, res))
15276        unknownContent(xpp);
15277      eventType = nextNoWhitespace(xpp);
15278    }
15279    next(xpp);
15280    parseElementClose(res);
15281    return res;
15282  }
15283
15284  protected boolean parseGraphDefinitionLinkCompartmentComponentContent(int eventType, XmlPullParser xpp, GraphDefinition.GraphDefinitionLinkCompartmentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15285    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
15286      res.setUseElement(parseEnumeration(xpp, GraphDefinition.GraphCompartmentUse.NULL, new GraphDefinition.GraphCompartmentUseEnumFactory()));
15287    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
15288      res.setRuleElement(parseEnumeration(xpp, GraphDefinition.GraphCompartmentRule.NULL, new GraphDefinition.GraphCompartmentRuleEnumFactory()));
15289    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15290      res.setCodeElement(parseEnumeration(xpp, Enumerations.CompartmentType.NULL, new Enumerations.CompartmentTypeEnumFactory()));
15291    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
15292      res.setExpressionElement(parseString(xpp));
15293    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15294      res.setDescriptionElement(parseString(xpp));
15295    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15296      return false;
15297    }
15298    return true;
15299  }
15300
15301  protected Group parseGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15302    Group res = new Group();
15303    parseResourceAttributes(xpp, res);
15304    next(xpp);
15305    int eventType = nextNoWhitespace(xpp);
15306    while (eventType != XmlPullParser.END_TAG) {
15307    if (!parseGroupContent(eventType, xpp, res))
15308        unknownContent(xpp);
15309      eventType = nextNoWhitespace(xpp);
15310    }
15311    next(xpp);
15312    parseElementClose(res);
15313    return res;
15314  }
15315
15316  protected boolean parseGroupContent(int eventType, XmlPullParser xpp, Group res) throws XmlPullParserException, IOException, FHIRFormatError {
15317    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15318      res.getIdentifier().add(parseIdentifier(xpp));
15319    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
15320      res.setActiveElement(parseBoolean(xpp));
15321    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15322      res.setTypeElement(parseEnumeration(xpp, Group.GroupType.NULL, new Group.GroupTypeEnumFactory()));
15323    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("membership")) {
15324      res.setMembershipElement(parseEnumeration(xpp, Group.GroupMembershipBasis.NULL, new Group.GroupMembershipBasisEnumFactory()));
15325    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15326      res.setCode(parseCodeableConcept(xpp));
15327    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15328      res.setNameElement(parseString(xpp));
15329    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15330      res.setDescriptionElement(parseMarkdown(xpp));
15331    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15332      res.setQuantityElement(parseUnsignedInt(xpp));
15333    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingEntity")) {
15334      res.setManagingEntity(parseReference(xpp));
15335    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
15336      res.getCharacteristic().add(parseGroupCharacteristicComponent(xpp));
15337    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
15338      res.getMember().add(parseGroupMemberComponent(xpp));
15339    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
15340      return false;
15341    }
15342    return true;
15343  }
15344
15345  protected Group.GroupCharacteristicComponent parseGroupCharacteristicComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15346    Group.GroupCharacteristicComponent res = new Group.GroupCharacteristicComponent();
15347    parseElementAttributes(xpp, res);
15348    next(xpp);
15349    int eventType = nextNoWhitespace(xpp);
15350    while (eventType != XmlPullParser.END_TAG) {
15351    if (!parseGroupCharacteristicComponentContent(eventType, xpp, res))
15352        unknownContent(xpp);
15353      eventType = nextNoWhitespace(xpp);
15354    }
15355    next(xpp);
15356    parseElementClose(res);
15357    return res;
15358  }
15359
15360  protected boolean parseGroupCharacteristicComponentContent(int eventType, XmlPullParser xpp, Group.GroupCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15361    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15362      res.setCode(parseCodeableConcept(xpp));
15363    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
15364      res.setValue(parseType("value", xpp));
15365    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
15366      res.setExcludeElement(parseBoolean(xpp));
15367    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
15368      res.setPeriod(parsePeriod(xpp));
15369    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15370      return false;
15371    }
15372    return true;
15373  }
15374
15375  protected Group.GroupMemberComponent parseGroupMemberComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15376    Group.GroupMemberComponent res = new Group.GroupMemberComponent();
15377    parseElementAttributes(xpp, res);
15378    next(xpp);
15379    int eventType = nextNoWhitespace(xpp);
15380    while (eventType != XmlPullParser.END_TAG) {
15381    if (!parseGroupMemberComponentContent(eventType, xpp, res))
15382        unknownContent(xpp);
15383      eventType = nextNoWhitespace(xpp);
15384    }
15385    next(xpp);
15386    parseElementClose(res);
15387    return res;
15388  }
15389
15390  protected boolean parseGroupMemberComponentContent(int eventType, XmlPullParser xpp, Group.GroupMemberComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15391    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
15392      res.setEntity(parseReference(xpp));
15393    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
15394      res.setPeriod(parsePeriod(xpp));
15395    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
15396      res.setInactiveElement(parseBoolean(xpp));
15397    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15398      return false;
15399    }
15400    return true;
15401  }
15402
15403  protected GuidanceResponse parseGuidanceResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15404    GuidanceResponse res = new GuidanceResponse();
15405    parseResourceAttributes(xpp, res);
15406    next(xpp);
15407    int eventType = nextNoWhitespace(xpp);
15408    while (eventType != XmlPullParser.END_TAG) {
15409    if (!parseGuidanceResponseContent(eventType, xpp, res))
15410        unknownContent(xpp);
15411      eventType = nextNoWhitespace(xpp);
15412    }
15413    next(xpp);
15414    parseElementClose(res);
15415    return res;
15416  }
15417
15418  protected boolean parseGuidanceResponseContent(int eventType, XmlPullParser xpp, GuidanceResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
15419    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestIdentifier")) {
15420      res.setRequestIdentifier(parseIdentifier(xpp));
15421    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15422      res.getIdentifier().add(parseIdentifier(xpp));
15423    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "module")) {
15424      res.setModule(parseType("module", xpp));
15425    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15426      res.setStatusElement(parseEnumeration(xpp, GuidanceResponse.GuidanceResponseStatus.NULL, new GuidanceResponse.GuidanceResponseStatusEnumFactory()));
15427    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15428      res.setSubject(parseReference(xpp));
15429    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
15430      res.setEncounter(parseReference(xpp));
15431    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occurrenceDateTime")) {
15432      res.setOccurrenceDateTimeElement(parseDateTime(xpp));
15433    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
15434      res.setPerformer(parseReference(xpp));
15435    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
15436      res.getReason().add(parseCodeableReference(xpp));
15437    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
15438      res.getNote().add(parseAnnotation(xpp));
15439    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluationMessage")) {
15440      res.setEvaluationMessage(parseReference(xpp));
15441    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outputParameters")) {
15442      res.setOutputParameters(parseReference(xpp));
15443    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
15444      res.getResult().add(parseReference(xpp));
15445    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
15446      res.getDataRequirement().add(parseDataRequirement(xpp));
15447    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
15448      return false;
15449    }
15450    return true;
15451  }
15452
15453  protected HealthcareService parseHealthcareService(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15454    HealthcareService res = new HealthcareService();
15455    parseResourceAttributes(xpp, res);
15456    next(xpp);
15457    int eventType = nextNoWhitespace(xpp);
15458    while (eventType != XmlPullParser.END_TAG) {
15459    if (!parseHealthcareServiceContent(eventType, xpp, res))
15460        unknownContent(xpp);
15461      eventType = nextNoWhitespace(xpp);
15462    }
15463    next(xpp);
15464    parseElementClose(res);
15465    return res;
15466  }
15467
15468  protected boolean parseHealthcareServiceContent(int eventType, XmlPullParser xpp, HealthcareService res) throws XmlPullParserException, IOException, FHIRFormatError {
15469    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15470      res.getIdentifier().add(parseIdentifier(xpp));
15471    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
15472      res.setActiveElement(parseBoolean(xpp));
15473    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("providedBy")) {
15474      res.setProvidedBy(parseReference(xpp));
15475    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offeredIn")) {
15476      res.getOfferedIn().add(parseReference(xpp));
15477    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
15478      res.getCategory().add(parseCodeableConcept(xpp));
15479    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15480      res.getType().add(parseCodeableConcept(xpp));
15481    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
15482      res.getSpecialty().add(parseCodeableConcept(xpp));
15483    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
15484      res.getLocation().add(parseReference(xpp));
15485    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15486      res.setNameElement(parseString(xpp));
15487    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
15488      res.setCommentElement(parseMarkdown(xpp));
15489    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extraDetails")) {
15490      res.setExtraDetailsElement(parseMarkdown(xpp));
15491    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
15492      res.setPhoto(parseAttachment(xpp));
15493    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15494      res.getContact().add(parseExtendedContactDetail(xpp));
15495    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
15496      res.getCoverageArea().add(parseReference(xpp));
15497    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvisionCode")) {
15498      res.getServiceProvisionCode().add(parseCodeableConcept(xpp));
15499    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibility")) {
15500      res.getEligibility().add(parseHealthcareServiceEligibilityComponent(xpp));
15501    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("program")) {
15502      res.getProgram().add(parseCodeableConcept(xpp));
15503    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
15504      res.getCharacteristic().add(parseCodeableConcept(xpp));
15505    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
15506      res.getCommunication().add(parseCodeableConcept(xpp));
15507    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralMethod")) {
15508      res.getReferralMethod().add(parseCodeableConcept(xpp));
15509    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentRequired")) {
15510      res.setAppointmentRequiredElement(parseBoolean(xpp));
15511    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availability")) {
15512      res.getAvailability().add(parseAvailability(xpp));
15513    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
15514      res.getEndpoint().add(parseReference(xpp));
15515    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
15516      return false;
15517    }
15518    return true;
15519  }
15520
15521  protected HealthcareService.HealthcareServiceEligibilityComponent parseHealthcareServiceEligibilityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15522    HealthcareService.HealthcareServiceEligibilityComponent res = new HealthcareService.HealthcareServiceEligibilityComponent();
15523    parseElementAttributes(xpp, res);
15524    next(xpp);
15525    int eventType = nextNoWhitespace(xpp);
15526    while (eventType != XmlPullParser.END_TAG) {
15527    if (!parseHealthcareServiceEligibilityComponentContent(eventType, xpp, res))
15528        unknownContent(xpp);
15529      eventType = nextNoWhitespace(xpp);
15530    }
15531    next(xpp);
15532    parseElementClose(res);
15533    return res;
15534  }
15535
15536  protected boolean parseHealthcareServiceEligibilityComponentContent(int eventType, XmlPullParser xpp, HealthcareService.HealthcareServiceEligibilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15537    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15538      res.setCode(parseCodeableConcept(xpp));
15539    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
15540      res.setCommentElement(parseMarkdown(xpp));
15541    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15542      return false;
15543    }
15544    return true;
15545  }
15546
15547  protected ImagingSelection parseImagingSelection(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15548    ImagingSelection res = new ImagingSelection();
15549    parseResourceAttributes(xpp, res);
15550    next(xpp);
15551    int eventType = nextNoWhitespace(xpp);
15552    while (eventType != XmlPullParser.END_TAG) {
15553    if (!parseImagingSelectionContent(eventType, xpp, res))
15554        unknownContent(xpp);
15555      eventType = nextNoWhitespace(xpp);
15556    }
15557    next(xpp);
15558    parseElementClose(res);
15559    return res;
15560  }
15561
15562  protected boolean parseImagingSelectionContent(int eventType, XmlPullParser xpp, ImagingSelection res) throws XmlPullParserException, IOException, FHIRFormatError {
15563    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15564      res.getIdentifier().add(parseIdentifier(xpp));
15565    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15566      res.setStatusElement(parseEnumeration(xpp, ImagingSelection.ImagingSelectionStatus.NULL, new ImagingSelection.ImagingSelectionStatusEnumFactory()));
15567    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15568      res.setSubject(parseReference(xpp));
15569    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
15570      res.setIssuedElement(parseInstant(xpp));
15571    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
15572      res.getPerformer().add(parseImagingSelectionPerformerComponent(xpp));
15573    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
15574      res.getBasedOn().add(parseReference(xpp));
15575    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
15576      res.getCategory().add(parseCodeableConcept(xpp));
15577    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15578      res.setCode(parseCodeableConcept(xpp));
15579    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyUid")) {
15580      res.setStudyUidElement(parseId(xpp));
15581    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
15582      res.getDerivedFrom().add(parseReference(xpp));
15583    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
15584      res.getEndpoint().add(parseReference(xpp));
15585    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriesUid")) {
15586      res.setSeriesUidElement(parseId(xpp));
15587    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriesNumber")) {
15588      res.setSeriesNumberElement(parseUnsignedInt(xpp));
15589    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frameOfReferenceUid")) {
15590      res.setFrameOfReferenceUidElement(parseId(xpp));
15591    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
15592      res.setBodySite(parseCodeableReference(xpp));
15593    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
15594      res.getFocus().add(parseReference(xpp));
15595    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
15596      res.getInstance().add(parseImagingSelectionInstanceComponent(xpp));
15597    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
15598      return false;
15599    }
15600    return true;
15601  }
15602
15603  protected ImagingSelection.ImagingSelectionPerformerComponent parseImagingSelectionPerformerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15604    ImagingSelection.ImagingSelectionPerformerComponent res = new ImagingSelection.ImagingSelectionPerformerComponent();
15605    parseElementAttributes(xpp, res);
15606    next(xpp);
15607    int eventType = nextNoWhitespace(xpp);
15608    while (eventType != XmlPullParser.END_TAG) {
15609    if (!parseImagingSelectionPerformerComponentContent(eventType, xpp, res))
15610        unknownContent(xpp);
15611      eventType = nextNoWhitespace(xpp);
15612    }
15613    next(xpp);
15614    parseElementClose(res);
15615    return res;
15616  }
15617
15618  protected boolean parseImagingSelectionPerformerComponentContent(int eventType, XmlPullParser xpp, ImagingSelection.ImagingSelectionPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15619    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
15620      res.setFunction(parseCodeableConcept(xpp));
15621    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
15622      res.setActor(parseReference(xpp));
15623    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15624      return false;
15625    }
15626    return true;
15627  }
15628
15629  protected ImagingSelection.ImagingSelectionInstanceComponent parseImagingSelectionInstanceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15630    ImagingSelection.ImagingSelectionInstanceComponent res = new ImagingSelection.ImagingSelectionInstanceComponent();
15631    parseElementAttributes(xpp, res);
15632    next(xpp);
15633    int eventType = nextNoWhitespace(xpp);
15634    while (eventType != XmlPullParser.END_TAG) {
15635    if (!parseImagingSelectionInstanceComponentContent(eventType, xpp, res))
15636        unknownContent(xpp);
15637      eventType = nextNoWhitespace(xpp);
15638    }
15639    next(xpp);
15640    parseElementClose(res);
15641    return res;
15642  }
15643
15644  protected boolean parseImagingSelectionInstanceComponentContent(int eventType, XmlPullParser xpp, ImagingSelection.ImagingSelectionInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15645    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
15646      res.setUidElement(parseId(xpp));
15647    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
15648      res.setNumberElement(parseUnsignedInt(xpp));
15649    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
15650      res.setSopClass(parseCoding(xpp));
15651    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subset")) {
15652      res.getSubset().add(parseString(xpp));
15653    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imageRegion2D")) {
15654      res.getImageRegion2D().add(parseImagingSelectionImageRegion2DComponent(xpp));
15655    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imageRegion3D")) {
15656      res.getImageRegion3D().add(parseImagingSelectionImageRegion3DComponent(xpp));
15657    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15658      return false;
15659    }
15660    return true;
15661  }
15662
15663  protected ImagingSelection.ImageRegion2DComponent parseImagingSelectionImageRegion2DComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15664    ImagingSelection.ImageRegion2DComponent res = new ImagingSelection.ImageRegion2DComponent();
15665    parseElementAttributes(xpp, res);
15666    next(xpp);
15667    int eventType = nextNoWhitespace(xpp);
15668    while (eventType != XmlPullParser.END_TAG) {
15669    if (!parseImagingSelectionImageRegion2DComponentContent(eventType, xpp, res))
15670        unknownContent(xpp);
15671      eventType = nextNoWhitespace(xpp);
15672    }
15673    next(xpp);
15674    parseElementClose(res);
15675    return res;
15676  }
15677
15678  protected boolean parseImagingSelectionImageRegion2DComponentContent(int eventType, XmlPullParser xpp, ImagingSelection.ImageRegion2DComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15679    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regionType")) {
15680      res.setRegionTypeElement(parseEnumeration(xpp, ImagingSelection.ImagingSelection2DGraphicType.NULL, new ImagingSelection.ImagingSelection2DGraphicTypeEnumFactory()));
15681    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coordinate")) {
15682      res.getCoordinate().add(parseDecimal(xpp));
15683    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15684      return false;
15685    }
15686    return true;
15687  }
15688
15689  protected ImagingSelection.ImageRegion3DComponent parseImagingSelectionImageRegion3DComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15690    ImagingSelection.ImageRegion3DComponent res = new ImagingSelection.ImageRegion3DComponent();
15691    parseElementAttributes(xpp, res);
15692    next(xpp);
15693    int eventType = nextNoWhitespace(xpp);
15694    while (eventType != XmlPullParser.END_TAG) {
15695    if (!parseImagingSelectionImageRegion3DComponentContent(eventType, xpp, res))
15696        unknownContent(xpp);
15697      eventType = nextNoWhitespace(xpp);
15698    }
15699    next(xpp);
15700    parseElementClose(res);
15701    return res;
15702  }
15703
15704  protected boolean parseImagingSelectionImageRegion3DComponentContent(int eventType, XmlPullParser xpp, ImagingSelection.ImageRegion3DComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15705    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regionType")) {
15706      res.setRegionTypeElement(parseEnumeration(xpp, ImagingSelection.ImagingSelection3DGraphicType.NULL, new ImagingSelection.ImagingSelection3DGraphicTypeEnumFactory()));
15707    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coordinate")) {
15708      res.getCoordinate().add(parseDecimal(xpp));
15709    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15710      return false;
15711    }
15712    return true;
15713  }
15714
15715  protected ImagingStudy parseImagingStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15716    ImagingStudy res = new ImagingStudy();
15717    parseResourceAttributes(xpp, res);
15718    next(xpp);
15719    int eventType = nextNoWhitespace(xpp);
15720    while (eventType != XmlPullParser.END_TAG) {
15721    if (!parseImagingStudyContent(eventType, xpp, res))
15722        unknownContent(xpp);
15723      eventType = nextNoWhitespace(xpp);
15724    }
15725    next(xpp);
15726    parseElementClose(res);
15727    return res;
15728  }
15729
15730  protected boolean parseImagingStudyContent(int eventType, XmlPullParser xpp, ImagingStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
15731    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15732      res.getIdentifier().add(parseIdentifier(xpp));
15733    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15734      res.setStatusElement(parseEnumeration(xpp, ImagingStudy.ImagingStudyStatus.NULL, new ImagingStudy.ImagingStudyStatusEnumFactory()));
15735    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
15736      res.getModality().add(parseCodeableConcept(xpp));
15737    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15738      res.setSubject(parseReference(xpp));
15739    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
15740      res.setEncounter(parseReference(xpp));
15741    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
15742      res.setStartedElement(parseDateTime(xpp));
15743    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
15744      res.getBasedOn().add(parseReference(xpp));
15745    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
15746      res.getPartOf().add(parseReference(xpp));
15747    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referrer")) {
15748      res.setReferrer(parseReference(xpp));
15749    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
15750      res.getEndpoint().add(parseReference(xpp));
15751    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSeries")) {
15752      res.setNumberOfSeriesElement(parseUnsignedInt(xpp));
15753    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
15754      res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
15755    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
15756      res.getProcedure().add(parseCodeableReference(xpp));
15757    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
15758      res.setLocation(parseReference(xpp));
15759    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
15760      res.getReason().add(parseCodeableReference(xpp));
15761    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
15762      res.getNote().add(parseAnnotation(xpp));
15763    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15764      res.setDescriptionElement(parseString(xpp));
15765    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
15766      res.getSeries().add(parseImagingStudySeriesComponent(xpp));
15767    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
15768      return false;
15769    }
15770    return true;
15771  }
15772
15773  protected ImagingStudy.ImagingStudySeriesComponent parseImagingStudySeriesComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15774    ImagingStudy.ImagingStudySeriesComponent res = new ImagingStudy.ImagingStudySeriesComponent();
15775    parseElementAttributes(xpp, res);
15776    next(xpp);
15777    int eventType = nextNoWhitespace(xpp);
15778    while (eventType != XmlPullParser.END_TAG) {
15779    if (!parseImagingStudySeriesComponentContent(eventType, xpp, res))
15780        unknownContent(xpp);
15781      eventType = nextNoWhitespace(xpp);
15782    }
15783    next(xpp);
15784    parseElementClose(res);
15785    return res;
15786  }
15787
15788  protected boolean parseImagingStudySeriesComponentContent(int eventType, XmlPullParser xpp, ImagingStudy.ImagingStudySeriesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15789    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
15790      res.setUidElement(parseId(xpp));
15791    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
15792      res.setNumberElement(parseUnsignedInt(xpp));
15793    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
15794      res.setModality(parseCodeableConcept(xpp));
15795    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15796      res.setDescriptionElement(parseString(xpp));
15797    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
15798      res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
15799    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
15800      res.getEndpoint().add(parseReference(xpp));
15801    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
15802      res.setBodySite(parseCodeableReference(xpp));
15803    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("laterality")) {
15804      res.setLaterality(parseCodeableConcept(xpp));
15805    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
15806      res.getSpecimen().add(parseReference(xpp));
15807    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
15808      res.setStartedElement(parseDateTime(xpp));
15809    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
15810      res.getPerformer().add(parseImagingStudySeriesPerformerComponent(xpp));
15811    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
15812      res.getInstance().add(parseImagingStudySeriesInstanceComponent(xpp));
15813    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15814      return false;
15815    }
15816    return true;
15817  }
15818
15819  protected ImagingStudy.ImagingStudySeriesPerformerComponent parseImagingStudySeriesPerformerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15820    ImagingStudy.ImagingStudySeriesPerformerComponent res = new ImagingStudy.ImagingStudySeriesPerformerComponent();
15821    parseElementAttributes(xpp, res);
15822    next(xpp);
15823    int eventType = nextNoWhitespace(xpp);
15824    while (eventType != XmlPullParser.END_TAG) {
15825    if (!parseImagingStudySeriesPerformerComponentContent(eventType, xpp, res))
15826        unknownContent(xpp);
15827      eventType = nextNoWhitespace(xpp);
15828    }
15829    next(xpp);
15830    parseElementClose(res);
15831    return res;
15832  }
15833
15834  protected boolean parseImagingStudySeriesPerformerComponentContent(int eventType, XmlPullParser xpp, ImagingStudy.ImagingStudySeriesPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15835    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
15836      res.setFunction(parseCodeableConcept(xpp));
15837    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
15838      res.setActor(parseReference(xpp));
15839    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15840      return false;
15841    }
15842    return true;
15843  }
15844
15845  protected ImagingStudy.ImagingStudySeriesInstanceComponent parseImagingStudySeriesInstanceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15846    ImagingStudy.ImagingStudySeriesInstanceComponent res = new ImagingStudy.ImagingStudySeriesInstanceComponent();
15847    parseElementAttributes(xpp, res);
15848    next(xpp);
15849    int eventType = nextNoWhitespace(xpp);
15850    while (eventType != XmlPullParser.END_TAG) {
15851    if (!parseImagingStudySeriesInstanceComponentContent(eventType, xpp, res))
15852        unknownContent(xpp);
15853      eventType = nextNoWhitespace(xpp);
15854    }
15855    next(xpp);
15856    parseElementClose(res);
15857    return res;
15858  }
15859
15860  protected boolean parseImagingStudySeriesInstanceComponentContent(int eventType, XmlPullParser xpp, ImagingStudy.ImagingStudySeriesInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15861    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
15862      res.setUidElement(parseId(xpp));
15863    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
15864      res.setSopClass(parseCoding(xpp));
15865    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
15866      res.setNumberElement(parseUnsignedInt(xpp));
15867    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
15868      res.setTitleElement(parseString(xpp));
15869    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15870      return false;
15871    }
15872    return true;
15873  }
15874
15875  protected Immunization parseImmunization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15876    Immunization res = new Immunization();
15877    parseResourceAttributes(xpp, res);
15878    next(xpp);
15879    int eventType = nextNoWhitespace(xpp);
15880    while (eventType != XmlPullParser.END_TAG) {
15881    if (!parseImmunizationContent(eventType, xpp, res))
15882        unknownContent(xpp);
15883      eventType = nextNoWhitespace(xpp);
15884    }
15885    next(xpp);
15886    parseElementClose(res);
15887    return res;
15888  }
15889
15890  protected boolean parseImmunizationContent(int eventType, XmlPullParser xpp, Immunization res) throws XmlPullParserException, IOException, FHIRFormatError {
15891    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15892      res.getIdentifier().add(parseIdentifier(xpp));
15893    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
15894      res.getBasedOn().add(parseReference(xpp));
15895    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15896      res.setStatusElement(parseEnumeration(xpp, Immunization.ImmunizationStatusCodes.NULL, new Immunization.ImmunizationStatusCodesEnumFactory()));
15897    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
15898      res.setStatusReason(parseCodeableConcept(xpp));
15899    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
15900      res.setVaccineCode(parseCodeableConcept(xpp));
15901    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administeredProduct")) {
15902      res.setAdministeredProduct(parseCodeableReference(xpp));
15903    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
15904      res.setManufacturer(parseCodeableReference(xpp));
15905    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
15906      res.setLotNumberElement(parseString(xpp));
15907    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
15908      res.setExpirationDateElement(parseDate(xpp));
15909    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
15910      res.setPatient(parseReference(xpp));
15911    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
15912      res.setEncounter(parseReference(xpp));
15913    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
15914      res.getSupportingInformation().add(parseReference(xpp));
15915    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
15916      res.setOccurrence(parseType("occurrence", xpp));
15917    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primarySource")) {
15918      res.setPrimarySourceElement(parseBoolean(xpp));
15919    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSource")) {
15920      res.setInformationSource(parseCodeableReference(xpp));
15921    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
15922      res.setLocation(parseReference(xpp));
15923    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
15924      res.setSite(parseCodeableConcept(xpp));
15925    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
15926      res.setRoute(parseCodeableConcept(xpp));
15927    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseQuantity")) {
15928      res.setDoseQuantity(parseQuantity(xpp));
15929    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
15930      res.getPerformer().add(parseImmunizationPerformerComponent(xpp));
15931    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
15932      res.getNote().add(parseAnnotation(xpp));
15933    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
15934      res.getReason().add(parseCodeableReference(xpp));
15935    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isSubpotent")) {
15936      res.setIsSubpotentElement(parseBoolean(xpp));
15937    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subpotentReason")) {
15938      res.getSubpotentReason().add(parseCodeableConcept(xpp));
15939    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programEligibility")) {
15940      res.getProgramEligibility().add(parseImmunizationProgramEligibilityComponent(xpp));
15941    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundingSource")) {
15942      res.setFundingSource(parseCodeableConcept(xpp));
15943    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
15944      res.getReaction().add(parseImmunizationReactionComponent(xpp));
15945    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocolApplied")) {
15946      res.getProtocolApplied().add(parseImmunizationProtocolAppliedComponent(xpp));
15947    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
15948      return false;
15949    }
15950    return true;
15951  }
15952
15953  protected Immunization.ImmunizationPerformerComponent parseImmunizationPerformerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15954    Immunization.ImmunizationPerformerComponent res = new Immunization.ImmunizationPerformerComponent();
15955    parseElementAttributes(xpp, res);
15956    next(xpp);
15957    int eventType = nextNoWhitespace(xpp);
15958    while (eventType != XmlPullParser.END_TAG) {
15959    if (!parseImmunizationPerformerComponentContent(eventType, xpp, res))
15960        unknownContent(xpp);
15961      eventType = nextNoWhitespace(xpp);
15962    }
15963    next(xpp);
15964    parseElementClose(res);
15965    return res;
15966  }
15967
15968  protected boolean parseImmunizationPerformerComponentContent(int eventType, XmlPullParser xpp, Immunization.ImmunizationPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15969    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
15970      res.setFunction(parseCodeableConcept(xpp));
15971    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
15972      res.setActor(parseReference(xpp));
15973    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
15974      return false;
15975    }
15976    return true;
15977  }
15978
15979  protected Immunization.ImmunizationProgramEligibilityComponent parseImmunizationProgramEligibilityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15980    Immunization.ImmunizationProgramEligibilityComponent res = new Immunization.ImmunizationProgramEligibilityComponent();
15981    parseElementAttributes(xpp, res);
15982    next(xpp);
15983    int eventType = nextNoWhitespace(xpp);
15984    while (eventType != XmlPullParser.END_TAG) {
15985    if (!parseImmunizationProgramEligibilityComponentContent(eventType, xpp, res))
15986        unknownContent(xpp);
15987      eventType = nextNoWhitespace(xpp);
15988    }
15989    next(xpp);
15990    parseElementClose(res);
15991    return res;
15992  }
15993
15994  protected boolean parseImmunizationProgramEligibilityComponentContent(int eventType, XmlPullParser xpp, Immunization.ImmunizationProgramEligibilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15995    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("program")) {
15996      res.setProgram(parseCodeableConcept(xpp));
15997    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programStatus")) {
15998      res.setProgramStatus(parseCodeableConcept(xpp));
15999    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16000      return false;
16001    }
16002    return true;
16003  }
16004
16005  protected Immunization.ImmunizationReactionComponent parseImmunizationReactionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16006    Immunization.ImmunizationReactionComponent res = new Immunization.ImmunizationReactionComponent();
16007    parseElementAttributes(xpp, res);
16008    next(xpp);
16009    int eventType = nextNoWhitespace(xpp);
16010    while (eventType != XmlPullParser.END_TAG) {
16011    if (!parseImmunizationReactionComponentContent(eventType, xpp, res))
16012        unknownContent(xpp);
16013      eventType = nextNoWhitespace(xpp);
16014    }
16015    next(xpp);
16016    parseElementClose(res);
16017    return res;
16018  }
16019
16020  protected boolean parseImmunizationReactionComponentContent(int eventType, XmlPullParser xpp, Immunization.ImmunizationReactionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16021    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
16022      res.setDateElement(parseDateTime(xpp));
16023    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifestation")) {
16024      res.setManifestation(parseCodeableReference(xpp));
16025    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reported")) {
16026      res.setReportedElement(parseBoolean(xpp));
16027    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16028      return false;
16029    }
16030    return true;
16031  }
16032
16033  protected Immunization.ImmunizationProtocolAppliedComponent parseImmunizationProtocolAppliedComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16034    Immunization.ImmunizationProtocolAppliedComponent res = new Immunization.ImmunizationProtocolAppliedComponent();
16035    parseElementAttributes(xpp, res);
16036    next(xpp);
16037    int eventType = nextNoWhitespace(xpp);
16038    while (eventType != XmlPullParser.END_TAG) {
16039    if (!parseImmunizationProtocolAppliedComponentContent(eventType, xpp, res))
16040        unknownContent(xpp);
16041      eventType = nextNoWhitespace(xpp);
16042    }
16043    next(xpp);
16044    parseElementClose(res);
16045    return res;
16046  }
16047
16048  protected boolean parseImmunizationProtocolAppliedComponentContent(int eventType, XmlPullParser xpp, Immunization.ImmunizationProtocolAppliedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16049    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
16050      res.setSeriesElement(parseString(xpp));
16051    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
16052      res.setAuthority(parseReference(xpp));
16053    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
16054      res.getTargetDisease().add(parseCodeableConcept(xpp));
16055    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseNumber")) {
16056      res.setDoseNumberElement(parseString(xpp));
16057    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriesDoses")) {
16058      res.setSeriesDosesElement(parseString(xpp));
16059    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16060      return false;
16061    }
16062    return true;
16063  }
16064
16065  protected ImmunizationEvaluation parseImmunizationEvaluation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16066    ImmunizationEvaluation res = new ImmunizationEvaluation();
16067    parseResourceAttributes(xpp, res);
16068    next(xpp);
16069    int eventType = nextNoWhitespace(xpp);
16070    while (eventType != XmlPullParser.END_TAG) {
16071    if (!parseImmunizationEvaluationContent(eventType, xpp, res))
16072        unknownContent(xpp);
16073      eventType = nextNoWhitespace(xpp);
16074    }
16075    next(xpp);
16076    parseElementClose(res);
16077    return res;
16078  }
16079
16080  protected boolean parseImmunizationEvaluationContent(int eventType, XmlPullParser xpp, ImmunizationEvaluation res) throws XmlPullParserException, IOException, FHIRFormatError {
16081    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16082      res.getIdentifier().add(parseIdentifier(xpp));
16083    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16084      res.setStatusElement(parseEnumeration(xpp, ImmunizationEvaluation.ImmunizationEvaluationStatusCodes.NULL, new ImmunizationEvaluation.ImmunizationEvaluationStatusCodesEnumFactory()));
16085    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
16086      res.setPatient(parseReference(xpp));
16087    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
16088      res.setDateElement(parseDateTime(xpp));
16089    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
16090      res.setAuthority(parseReference(xpp));
16091    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
16092      res.setTargetDisease(parseCodeableConcept(xpp));
16093    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immunizationEvent")) {
16094      res.setImmunizationEvent(parseReference(xpp));
16095    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatus")) {
16096      res.setDoseStatus(parseCodeableConcept(xpp));
16097    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatusReason")) {
16098      res.getDoseStatusReason().add(parseCodeableConcept(xpp));
16099    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16100      res.setDescriptionElement(parseMarkdown(xpp));
16101    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
16102      res.setSeriesElement(parseString(xpp));
16103    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseNumber")) {
16104      res.setDoseNumberElement(parseString(xpp));
16105    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriesDoses")) {
16106      res.setSeriesDosesElement(parseString(xpp));
16107    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
16108      return false;
16109    }
16110    return true;
16111  }
16112
16113  protected ImmunizationRecommendation parseImmunizationRecommendation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16114    ImmunizationRecommendation res = new ImmunizationRecommendation();
16115    parseResourceAttributes(xpp, res);
16116    next(xpp);
16117    int eventType = nextNoWhitespace(xpp);
16118    while (eventType != XmlPullParser.END_TAG) {
16119    if (!parseImmunizationRecommendationContent(eventType, xpp, res))
16120        unknownContent(xpp);
16121      eventType = nextNoWhitespace(xpp);
16122    }
16123    next(xpp);
16124    parseElementClose(res);
16125    return res;
16126  }
16127
16128  protected boolean parseImmunizationRecommendationContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation res) throws XmlPullParserException, IOException, FHIRFormatError {
16129    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16130      res.getIdentifier().add(parseIdentifier(xpp));
16131    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
16132      res.setPatient(parseReference(xpp));
16133    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
16134      res.setDateElement(parseDateTime(xpp));
16135    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
16136      res.setAuthority(parseReference(xpp));
16137    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recommendation")) {
16138      res.getRecommendation().add(parseImmunizationRecommendationRecommendationComponent(xpp));
16139    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
16140      return false;
16141    }
16142    return true;
16143  }
16144
16145  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent parseImmunizationRecommendationRecommendationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16146    ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent();
16147    parseElementAttributes(xpp, res);
16148    next(xpp);
16149    int eventType = nextNoWhitespace(xpp);
16150    while (eventType != XmlPullParser.END_TAG) {
16151    if (!parseImmunizationRecommendationRecommendationComponentContent(eventType, xpp, res))
16152        unknownContent(xpp);
16153      eventType = nextNoWhitespace(xpp);
16154    }
16155    next(xpp);
16156    parseElementClose(res);
16157    return res;
16158  }
16159
16160  protected boolean parseImmunizationRecommendationRecommendationComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16161    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
16162      res.getVaccineCode().add(parseCodeableConcept(xpp));
16163    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
16164      res.getTargetDisease().add(parseCodeableConcept(xpp));
16165    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contraindicatedVaccineCode")) {
16166      res.getContraindicatedVaccineCode().add(parseCodeableConcept(xpp));
16167    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forecastStatus")) {
16168      res.setForecastStatus(parseCodeableConcept(xpp));
16169    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forecastReason")) {
16170      res.getForecastReason().add(parseCodeableConcept(xpp));
16171    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateCriterion")) {
16172      res.getDateCriterion().add(parseImmunizationRecommendationRecommendationDateCriterionComponent(xpp));
16173    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16174      res.setDescriptionElement(parseMarkdown(xpp));
16175    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
16176      res.setSeriesElement(parseString(xpp));
16177    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseNumber")) {
16178      res.setDoseNumberElement(parseString(xpp));
16179    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriesDoses")) {
16180      res.setSeriesDosesElement(parseString(xpp));
16181    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingImmunization")) {
16182      res.getSupportingImmunization().add(parseReference(xpp));
16183    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingPatientInformation")) {
16184      res.getSupportingPatientInformation().add(parseReference(xpp));
16185    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16186      return false;
16187    }
16188    return true;
16189  }
16190
16191  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent parseImmunizationRecommendationRecommendationDateCriterionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16192    ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent();
16193    parseElementAttributes(xpp, res);
16194    next(xpp);
16195    int eventType = nextNoWhitespace(xpp);
16196    while (eventType != XmlPullParser.END_TAG) {
16197    if (!parseImmunizationRecommendationRecommendationDateCriterionComponentContent(eventType, xpp, res))
16198        unknownContent(xpp);
16199      eventType = nextNoWhitespace(xpp);
16200    }
16201    next(xpp);
16202    parseElementClose(res);
16203    return res;
16204  }
16205
16206  protected boolean parseImmunizationRecommendationRecommendationDateCriterionComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16207    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16208      res.setCode(parseCodeableConcept(xpp));
16209    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16210      res.setValueElement(parseDateTime(xpp));
16211    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16212      return false;
16213    }
16214    return true;
16215  }
16216
16217  protected ImplementationGuide parseImplementationGuide(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16218    ImplementationGuide res = new ImplementationGuide();
16219    parseResourceAttributes(xpp, res);
16220    next(xpp);
16221    int eventType = nextNoWhitespace(xpp);
16222    while (eventType != XmlPullParser.END_TAG) {
16223    if (!parseImplementationGuideContent(eventType, xpp, res))
16224        unknownContent(xpp);
16225      eventType = nextNoWhitespace(xpp);
16226    }
16227    next(xpp);
16228    parseElementClose(res);
16229    return res;
16230  }
16231
16232  protected boolean parseImplementationGuideContent(int eventType, XmlPullParser xpp, ImplementationGuide res) throws XmlPullParserException, IOException, FHIRFormatError {
16233    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
16234      res.setUrlElement(parseUri(xpp));
16235    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16236      res.getIdentifier().add(parseIdentifier(xpp));
16237    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
16238      res.setVersionElement(parseString(xpp));
16239    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
16240      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
16241    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16242      res.setNameElement(parseString(xpp));
16243    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
16244      res.setTitleElement(parseString(xpp));
16245    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16246      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
16247    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
16248      res.setExperimentalElement(parseBoolean(xpp));
16249    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
16250      res.setDateElement(parseDateTime(xpp));
16251    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
16252      res.setPublisherElement(parseString(xpp));
16253    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16254      res.getContact().add(parseContactDetail(xpp));
16255    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16256      res.setDescriptionElement(parseMarkdown(xpp));
16257    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
16258      res.getUseContext().add(parseUsageContext(xpp));
16259    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
16260      res.getJurisdiction().add(parseCodeableConcept(xpp));
16261    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
16262      res.setPurposeElement(parseMarkdown(xpp));
16263    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
16264      res.setCopyrightElement(parseMarkdown(xpp));
16265    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
16266      res.setCopyrightLabelElement(parseString(xpp));
16267    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageId")) {
16268      res.setPackageIdElement(parseId(xpp));
16269    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("license")) {
16270      res.setLicenseElement(parseEnumeration(xpp, ImplementationGuide.SPDXLicense.NULL, new ImplementationGuide.SPDXLicenseEnumFactory()));
16271    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
16272      res.getFhirVersion().add(parseEnumeration(xpp, Enumerations.FHIRVersion.NULL, new Enumerations.FHIRVersionEnumFactory()));
16273    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependsOn")) {
16274      res.getDependsOn().add(parseImplementationGuideDependsOnComponent(xpp));
16275    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("global")) {
16276      res.getGlobal().add(parseImplementationGuideGlobalComponent(xpp));
16277    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
16278      res.setDefinition(parseImplementationGuideDefinitionComponent(xpp));
16279    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifest")) {
16280      res.setManifest(parseImplementationGuideManifestComponent(xpp));
16281    } else if (!parseCanonicalResourceContent(eventType, xpp, res)){ 
16282      return false;
16283    }
16284    return true;
16285  }
16286
16287  protected ImplementationGuide.ImplementationGuideDependsOnComponent parseImplementationGuideDependsOnComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16288    ImplementationGuide.ImplementationGuideDependsOnComponent res = new ImplementationGuide.ImplementationGuideDependsOnComponent();
16289    parseElementAttributes(xpp, res);
16290    next(xpp);
16291    int eventType = nextNoWhitespace(xpp);
16292    while (eventType != XmlPullParser.END_TAG) {
16293    if (!parseImplementationGuideDependsOnComponentContent(eventType, xpp, res))
16294        unknownContent(xpp);
16295      eventType = nextNoWhitespace(xpp);
16296    }
16297    next(xpp);
16298    parseElementClose(res);
16299    return res;
16300  }
16301
16302  protected boolean parseImplementationGuideDependsOnComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ImplementationGuideDependsOnComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16303    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
16304      res.setUriElement(parseCanonical(xpp));
16305    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageId")) {
16306      res.setPackageIdElement(parseId(xpp));
16307    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
16308      res.setVersionElement(parseString(xpp));
16309    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
16310      res.setReasonElement(parseMarkdown(xpp));
16311    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16312      return false;
16313    }
16314    return true;
16315  }
16316
16317  protected ImplementationGuide.ImplementationGuideGlobalComponent parseImplementationGuideGlobalComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16318    ImplementationGuide.ImplementationGuideGlobalComponent res = new ImplementationGuide.ImplementationGuideGlobalComponent();
16319    parseElementAttributes(xpp, res);
16320    next(xpp);
16321    int eventType = nextNoWhitespace(xpp);
16322    while (eventType != XmlPullParser.END_TAG) {
16323    if (!parseImplementationGuideGlobalComponentContent(eventType, xpp, res))
16324        unknownContent(xpp);
16325      eventType = nextNoWhitespace(xpp);
16326    }
16327    next(xpp);
16328    parseElementClose(res);
16329    return res;
16330  }
16331
16332  protected boolean parseImplementationGuideGlobalComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ImplementationGuideGlobalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16333    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16334      res.setTypeElement(parseCode(xpp));
16335    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
16336      res.setProfileElement(parseCanonical(xpp));
16337    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16338      return false;
16339    }
16340    return true;
16341  }
16342
16343  protected ImplementationGuide.ImplementationGuideDefinitionComponent parseImplementationGuideDefinitionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16344    ImplementationGuide.ImplementationGuideDefinitionComponent res = new ImplementationGuide.ImplementationGuideDefinitionComponent();
16345    parseElementAttributes(xpp, res);
16346    next(xpp);
16347    int eventType = nextNoWhitespace(xpp);
16348    while (eventType != XmlPullParser.END_TAG) {
16349    if (!parseImplementationGuideDefinitionComponentContent(eventType, xpp, res))
16350        unknownContent(xpp);
16351      eventType = nextNoWhitespace(xpp);
16352    }
16353    next(xpp);
16354    parseElementClose(res);
16355    return res;
16356  }
16357
16358  protected boolean parseImplementationGuideDefinitionComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ImplementationGuideDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16359    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("grouping")) {
16360      res.getGrouping().add(parseImplementationGuideDefinitionGroupingComponent(xpp));
16361    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16362      res.getResource().add(parseImplementationGuideDefinitionResourceComponent(xpp));
16363    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
16364      res.setPage(parseImplementationGuideDefinitionPageComponent(xpp));
16365    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
16366      res.getParameter().add(parseImplementationGuideDefinitionParameterComponent(xpp));
16367    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("template")) {
16368      res.getTemplate().add(parseImplementationGuideDefinitionTemplateComponent(xpp));
16369    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16370      return false;
16371    }
16372    return true;
16373  }
16374
16375  protected ImplementationGuide.ImplementationGuideDefinitionGroupingComponent parseImplementationGuideDefinitionGroupingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16376    ImplementationGuide.ImplementationGuideDefinitionGroupingComponent res = new ImplementationGuide.ImplementationGuideDefinitionGroupingComponent();
16377    parseElementAttributes(xpp, res);
16378    next(xpp);
16379    int eventType = nextNoWhitespace(xpp);
16380    while (eventType != XmlPullParser.END_TAG) {
16381    if (!parseImplementationGuideDefinitionGroupingComponentContent(eventType, xpp, res))
16382        unknownContent(xpp);
16383      eventType = nextNoWhitespace(xpp);
16384    }
16385    next(xpp);
16386    parseElementClose(res);
16387    return res;
16388  }
16389
16390  protected boolean parseImplementationGuideDefinitionGroupingComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ImplementationGuideDefinitionGroupingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16391    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16392      res.setNameElement(parseString(xpp));
16393    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16394      res.setDescriptionElement(parseMarkdown(xpp));
16395    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16396      return false;
16397    }
16398    return true;
16399  }
16400
16401  protected ImplementationGuide.ImplementationGuideDefinitionResourceComponent parseImplementationGuideDefinitionResourceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16402    ImplementationGuide.ImplementationGuideDefinitionResourceComponent res = new ImplementationGuide.ImplementationGuideDefinitionResourceComponent();
16403    parseElementAttributes(xpp, res);
16404    next(xpp);
16405    int eventType = nextNoWhitespace(xpp);
16406    while (eventType != XmlPullParser.END_TAG) {
16407    if (!parseImplementationGuideDefinitionResourceComponentContent(eventType, xpp, res))
16408        unknownContent(xpp);
16409      eventType = nextNoWhitespace(xpp);
16410    }
16411    next(xpp);
16412    parseElementClose(res);
16413    return res;
16414  }
16415
16416  protected boolean parseImplementationGuideDefinitionResourceComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ImplementationGuideDefinitionResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16417    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
16418      res.setReference(parseReference(xpp));
16419    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
16420      res.getFhirVersion().add(parseEnumeration(xpp, Enumerations.FHIRVersion.NULL, new Enumerations.FHIRVersionEnumFactory()));
16421    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16422      res.setNameElement(parseString(xpp));
16423    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16424      res.setDescriptionElement(parseMarkdown(xpp));
16425    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isExample")) {
16426      res.setIsExampleElement(parseBoolean(xpp));
16427    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
16428      res.getProfile().add(parseCanonical(xpp));
16429    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingId")) {
16430      res.setGroupingIdElement(parseId(xpp));
16431    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16432      return false;
16433    }
16434    return true;
16435  }
16436
16437  protected ImplementationGuide.ImplementationGuideDefinitionPageComponent parseImplementationGuideDefinitionPageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16438    ImplementationGuide.ImplementationGuideDefinitionPageComponent res = new ImplementationGuide.ImplementationGuideDefinitionPageComponent();
16439    parseElementAttributes(xpp, res);
16440    next(xpp);
16441    int eventType = nextNoWhitespace(xpp);
16442    while (eventType != XmlPullParser.END_TAG) {
16443    if (!parseImplementationGuideDefinitionPageComponentContent(eventType, xpp, res))
16444        unknownContent(xpp);
16445      eventType = nextNoWhitespace(xpp);
16446    }
16447    next(xpp);
16448    parseElementClose(res);
16449    return res;
16450  }
16451
16452  protected boolean parseImplementationGuideDefinitionPageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ImplementationGuideDefinitionPageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16453    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
16454      res.setSource(parseType("source", xpp));
16455    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16456      res.setNameElement(parseUrl(xpp));
16457    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
16458      res.setTitleElement(parseString(xpp));
16459    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generation")) {
16460      res.setGenerationElement(parseEnumeration(xpp, ImplementationGuide.GuidePageGeneration.NULL, new ImplementationGuide.GuidePageGenerationEnumFactory()));
16461    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
16462      res.getPage().add(parseImplementationGuideDefinitionPageComponent(xpp));
16463    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16464      return false;
16465    }
16466    return true;
16467  }
16468
16469  protected ImplementationGuide.ImplementationGuideDefinitionParameterComponent parseImplementationGuideDefinitionParameterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16470    ImplementationGuide.ImplementationGuideDefinitionParameterComponent res = new ImplementationGuide.ImplementationGuideDefinitionParameterComponent();
16471    parseElementAttributes(xpp, res);
16472    next(xpp);
16473    int eventType = nextNoWhitespace(xpp);
16474    while (eventType != XmlPullParser.END_TAG) {
16475    if (!parseImplementationGuideDefinitionParameterComponentContent(eventType, xpp, res))
16476        unknownContent(xpp);
16477      eventType = nextNoWhitespace(xpp);
16478    }
16479    next(xpp);
16480    parseElementClose(res);
16481    return res;
16482  }
16483
16484  protected boolean parseImplementationGuideDefinitionParameterComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ImplementationGuideDefinitionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16485    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16486      res.setCode(parseCoding(xpp));
16487    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16488      res.setValueElement(parseString(xpp));
16489    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16490      return false;
16491    }
16492    return true;
16493  }
16494
16495  protected ImplementationGuide.ImplementationGuideDefinitionTemplateComponent parseImplementationGuideDefinitionTemplateComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16496    ImplementationGuide.ImplementationGuideDefinitionTemplateComponent res = new ImplementationGuide.ImplementationGuideDefinitionTemplateComponent();
16497    parseElementAttributes(xpp, res);
16498    next(xpp);
16499    int eventType = nextNoWhitespace(xpp);
16500    while (eventType != XmlPullParser.END_TAG) {
16501    if (!parseImplementationGuideDefinitionTemplateComponentContent(eventType, xpp, res))
16502        unknownContent(xpp);
16503      eventType = nextNoWhitespace(xpp);
16504    }
16505    next(xpp);
16506    parseElementClose(res);
16507    return res;
16508  }
16509
16510  protected boolean parseImplementationGuideDefinitionTemplateComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ImplementationGuideDefinitionTemplateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16511    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16512      res.setCodeElement(parseCode(xpp));
16513    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
16514      res.setSourceElement(parseString(xpp));
16515    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
16516      res.setScopeElement(parseString(xpp));
16517    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16518      return false;
16519    }
16520    return true;
16521  }
16522
16523  protected ImplementationGuide.ImplementationGuideManifestComponent parseImplementationGuideManifestComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16524    ImplementationGuide.ImplementationGuideManifestComponent res = new ImplementationGuide.ImplementationGuideManifestComponent();
16525    parseElementAttributes(xpp, res);
16526    next(xpp);
16527    int eventType = nextNoWhitespace(xpp);
16528    while (eventType != XmlPullParser.END_TAG) {
16529    if (!parseImplementationGuideManifestComponentContent(eventType, xpp, res))
16530        unknownContent(xpp);
16531      eventType = nextNoWhitespace(xpp);
16532    }
16533    next(xpp);
16534    parseElementClose(res);
16535    return res;
16536  }
16537
16538  protected boolean parseImplementationGuideManifestComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ImplementationGuideManifestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16539    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rendering")) {
16540      res.setRenderingElement(parseUrl(xpp));
16541    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16542      res.getResource().add(parseImplementationGuideManifestResourceComponent(xpp));
16543    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
16544      res.getPage().add(parseImplementationGuideManifestPageComponent(xpp));
16545    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
16546      res.getImage().add(parseString(xpp));
16547    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("other")) {
16548      res.getOther().add(parseString(xpp));
16549    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16550      return false;
16551    }
16552    return true;
16553  }
16554
16555  protected ImplementationGuide.ManifestResourceComponent parseImplementationGuideManifestResourceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16556    ImplementationGuide.ManifestResourceComponent res = new ImplementationGuide.ManifestResourceComponent();
16557    parseElementAttributes(xpp, res);
16558    next(xpp);
16559    int eventType = nextNoWhitespace(xpp);
16560    while (eventType != XmlPullParser.END_TAG) {
16561    if (!parseImplementationGuideManifestResourceComponentContent(eventType, xpp, res))
16562        unknownContent(xpp);
16563      eventType = nextNoWhitespace(xpp);
16564    }
16565    next(xpp);
16566    parseElementClose(res);
16567    return res;
16568  }
16569
16570  protected boolean parseImplementationGuideManifestResourceComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ManifestResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16571    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
16572      res.setReference(parseReference(xpp));
16573    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isExample")) {
16574      res.setIsExampleElement(parseBoolean(xpp));
16575    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
16576      res.getProfile().add(parseCanonical(xpp));
16577    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relativePath")) {
16578      res.setRelativePathElement(parseUrl(xpp));
16579    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16580      return false;
16581    }
16582    return true;
16583  }
16584
16585  protected ImplementationGuide.ManifestPageComponent parseImplementationGuideManifestPageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16586    ImplementationGuide.ManifestPageComponent res = new ImplementationGuide.ManifestPageComponent();
16587    parseElementAttributes(xpp, res);
16588    next(xpp);
16589    int eventType = nextNoWhitespace(xpp);
16590    while (eventType != XmlPullParser.END_TAG) {
16591    if (!parseImplementationGuideManifestPageComponentContent(eventType, xpp, res))
16592        unknownContent(xpp);
16593      eventType = nextNoWhitespace(xpp);
16594    }
16595    next(xpp);
16596    parseElementClose(res);
16597    return res;
16598  }
16599
16600  protected boolean parseImplementationGuideManifestPageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide.ManifestPageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16601    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16602      res.setNameElement(parseString(xpp));
16603    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
16604      res.setTitleElement(parseString(xpp));
16605    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("anchor")) {
16606      res.getAnchor().add(parseString(xpp));
16607    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16608      return false;
16609    }
16610    return true;
16611  }
16612
16613  protected Ingredient parseIngredient(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16614    Ingredient res = new Ingredient();
16615    parseResourceAttributes(xpp, res);
16616    next(xpp);
16617    int eventType = nextNoWhitespace(xpp);
16618    while (eventType != XmlPullParser.END_TAG) {
16619    if (!parseIngredientContent(eventType, xpp, res))
16620        unknownContent(xpp);
16621      eventType = nextNoWhitespace(xpp);
16622    }
16623    next(xpp);
16624    parseElementClose(res);
16625    return res;
16626  }
16627
16628  protected boolean parseIngredientContent(int eventType, XmlPullParser xpp, Ingredient res) throws XmlPullParserException, IOException, FHIRFormatError {
16629    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16630      res.setIdentifier(parseIdentifier(xpp));
16631    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16632      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
16633    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("for")) {
16634      res.getFor().add(parseReference(xpp));
16635    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
16636      res.setRole(parseCodeableConcept(xpp));
16637    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
16638      res.getFunction().add(parseCodeableConcept(xpp));
16639    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
16640      res.setGroup(parseCodeableConcept(xpp));
16641    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergenicIndicator")) {
16642      res.setAllergenicIndicatorElement(parseBoolean(xpp));
16643    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
16644      res.setCommentElement(parseMarkdown(xpp));
16645    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
16646      res.getManufacturer().add(parseIngredientManufacturerComponent(xpp));
16647    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
16648      res.setSubstance(parseIngredientSubstanceComponent(xpp));
16649    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
16650      return false;
16651    }
16652    return true;
16653  }
16654
16655  protected Ingredient.IngredientManufacturerComponent parseIngredientManufacturerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16656    Ingredient.IngredientManufacturerComponent res = new Ingredient.IngredientManufacturerComponent();
16657    parseElementAttributes(xpp, res);
16658    next(xpp);
16659    int eventType = nextNoWhitespace(xpp);
16660    while (eventType != XmlPullParser.END_TAG) {
16661    if (!parseIngredientManufacturerComponentContent(eventType, xpp, res))
16662        unknownContent(xpp);
16663      eventType = nextNoWhitespace(xpp);
16664    }
16665    next(xpp);
16666    parseElementClose(res);
16667    return res;
16668  }
16669
16670  protected boolean parseIngredientManufacturerComponentContent(int eventType, XmlPullParser xpp, Ingredient.IngredientManufacturerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16671    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
16672      res.setRoleElement(parseEnumeration(xpp, Ingredient.IngredientManufacturerRole.NULL, new Ingredient.IngredientManufacturerRoleEnumFactory()));
16673    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
16674      res.setManufacturer(parseReference(xpp));
16675    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16676      return false;
16677    }
16678    return true;
16679  }
16680
16681  protected Ingredient.IngredientSubstanceComponent parseIngredientSubstanceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16682    Ingredient.IngredientSubstanceComponent res = new Ingredient.IngredientSubstanceComponent();
16683    parseElementAttributes(xpp, res);
16684    next(xpp);
16685    int eventType = nextNoWhitespace(xpp);
16686    while (eventType != XmlPullParser.END_TAG) {
16687    if (!parseIngredientSubstanceComponentContent(eventType, xpp, res))
16688        unknownContent(xpp);
16689      eventType = nextNoWhitespace(xpp);
16690    }
16691    next(xpp);
16692    parseElementClose(res);
16693    return res;
16694  }
16695
16696  protected boolean parseIngredientSubstanceComponentContent(int eventType, XmlPullParser xpp, Ingredient.IngredientSubstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16697    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16698      res.setCode(parseCodeableReference(xpp));
16699    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
16700      res.getStrength().add(parseIngredientSubstanceStrengthComponent(xpp));
16701    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16702      return false;
16703    }
16704    return true;
16705  }
16706
16707  protected Ingredient.IngredientSubstanceStrengthComponent parseIngredientSubstanceStrengthComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16708    Ingredient.IngredientSubstanceStrengthComponent res = new Ingredient.IngredientSubstanceStrengthComponent();
16709    parseElementAttributes(xpp, res);
16710    next(xpp);
16711    int eventType = nextNoWhitespace(xpp);
16712    while (eventType != XmlPullParser.END_TAG) {
16713    if (!parseIngredientSubstanceStrengthComponentContent(eventType, xpp, res))
16714        unknownContent(xpp);
16715      eventType = nextNoWhitespace(xpp);
16716    }
16717    next(xpp);
16718    parseElementClose(res);
16719    return res;
16720  }
16721
16722  protected boolean parseIngredientSubstanceStrengthComponentContent(int eventType, XmlPullParser xpp, Ingredient.IngredientSubstanceStrengthComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16723    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "presentation")) {
16724      res.setPresentation(parseType("presentation", xpp));
16725    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textPresentation")) {
16726      res.setTextPresentationElement(parseString(xpp));
16727    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "concentration")) {
16728      res.setConcentration(parseType("concentration", xpp));
16729    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textConcentration")) {
16730      res.setTextConcentrationElement(parseString(xpp));
16731    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
16732      res.setBasis(parseCodeableConcept(xpp));
16733    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPoint")) {
16734      res.setMeasurementPointElement(parseString(xpp));
16735    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
16736      res.getCountry().add(parseCodeableConcept(xpp));
16737    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceStrength")) {
16738      res.getReferenceStrength().add(parseIngredientSubstanceStrengthReferenceStrengthComponent(xpp));
16739    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16740      return false;
16741    }
16742    return true;
16743  }
16744
16745  protected Ingredient.IngredientSubstanceStrengthReferenceStrengthComponent parseIngredientSubstanceStrengthReferenceStrengthComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16746    Ingredient.IngredientSubstanceStrengthReferenceStrengthComponent res = new Ingredient.IngredientSubstanceStrengthReferenceStrengthComponent();
16747    parseElementAttributes(xpp, res);
16748    next(xpp);
16749    int eventType = nextNoWhitespace(xpp);
16750    while (eventType != XmlPullParser.END_TAG) {
16751    if (!parseIngredientSubstanceStrengthReferenceStrengthComponentContent(eventType, xpp, res))
16752        unknownContent(xpp);
16753      eventType = nextNoWhitespace(xpp);
16754    }
16755    next(xpp);
16756    parseElementClose(res);
16757    return res;
16758  }
16759
16760  protected boolean parseIngredientSubstanceStrengthReferenceStrengthComponentContent(int eventType, XmlPullParser xpp, Ingredient.IngredientSubstanceStrengthReferenceStrengthComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16761    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
16762      res.setSubstance(parseCodeableReference(xpp));
16763    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "strength")) {
16764      res.setStrength(parseType("strength", xpp));
16765    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPoint")) {
16766      res.setMeasurementPointElement(parseString(xpp));
16767    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
16768      res.getCountry().add(parseCodeableConcept(xpp));
16769    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16770      return false;
16771    }
16772    return true;
16773  }
16774
16775  protected InsurancePlan parseInsurancePlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16776    InsurancePlan res = new InsurancePlan();
16777    parseResourceAttributes(xpp, res);
16778    next(xpp);
16779    int eventType = nextNoWhitespace(xpp);
16780    while (eventType != XmlPullParser.END_TAG) {
16781    if (!parseInsurancePlanContent(eventType, xpp, res))
16782        unknownContent(xpp);
16783      eventType = nextNoWhitespace(xpp);
16784    }
16785    next(xpp);
16786    parseElementClose(res);
16787    return res;
16788  }
16789
16790  protected boolean parseInsurancePlanContent(int eventType, XmlPullParser xpp, InsurancePlan res) throws XmlPullParserException, IOException, FHIRFormatError {
16791    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16792      res.getIdentifier().add(parseIdentifier(xpp));
16793    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16794      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
16795    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16796      res.getType().add(parseCodeableConcept(xpp));
16797    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16798      res.setNameElement(parseString(xpp));
16799    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
16800      res.getAlias().add(parseString(xpp));
16801    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
16802      res.setPeriod(parsePeriod(xpp));
16803    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ownedBy")) {
16804      res.setOwnedBy(parseReference(xpp));
16805    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administeredBy")) {
16806      res.setAdministeredBy(parseReference(xpp));
16807    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
16808      res.getCoverageArea().add(parseReference(xpp));
16809    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16810      res.getContact().add(parseExtendedContactDetail(xpp));
16811    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
16812      res.getEndpoint().add(parseReference(xpp));
16813    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
16814      res.getNetwork().add(parseReference(xpp));
16815    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
16816      res.getCoverage().add(parseInsurancePlanCoverageComponent(xpp));
16817    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plan")) {
16818      res.getPlan().add(parseInsurancePlanPlanComponent(xpp));
16819    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
16820      return false;
16821    }
16822    return true;
16823  }
16824
16825  protected InsurancePlan.InsurancePlanCoverageComponent parseInsurancePlanCoverageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16826    InsurancePlan.InsurancePlanCoverageComponent res = new InsurancePlan.InsurancePlanCoverageComponent();
16827    parseElementAttributes(xpp, res);
16828    next(xpp);
16829    int eventType = nextNoWhitespace(xpp);
16830    while (eventType != XmlPullParser.END_TAG) {
16831    if (!parseInsurancePlanCoverageComponentContent(eventType, xpp, res))
16832        unknownContent(xpp);
16833      eventType = nextNoWhitespace(xpp);
16834    }
16835    next(xpp);
16836    parseElementClose(res);
16837    return res;
16838  }
16839
16840  protected boolean parseInsurancePlanCoverageComponentContent(int eventType, XmlPullParser xpp, InsurancePlan.InsurancePlanCoverageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16841    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16842      res.setType(parseCodeableConcept(xpp));
16843    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
16844      res.getNetwork().add(parseReference(xpp));
16845    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefit")) {
16846      res.getBenefit().add(parseInsurancePlanCoverageBenefitComponent(xpp));
16847    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16848      return false;
16849    }
16850    return true;
16851  }
16852
16853  protected InsurancePlan.CoverageBenefitComponent parseInsurancePlanCoverageBenefitComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16854    InsurancePlan.CoverageBenefitComponent res = new InsurancePlan.CoverageBenefitComponent();
16855    parseElementAttributes(xpp, res);
16856    next(xpp);
16857    int eventType = nextNoWhitespace(xpp);
16858    while (eventType != XmlPullParser.END_TAG) {
16859    if (!parseInsurancePlanCoverageBenefitComponentContent(eventType, xpp, res))
16860        unknownContent(xpp);
16861      eventType = nextNoWhitespace(xpp);
16862    }
16863    next(xpp);
16864    parseElementClose(res);
16865    return res;
16866  }
16867
16868  protected boolean parseInsurancePlanCoverageBenefitComponentContent(int eventType, XmlPullParser xpp, InsurancePlan.CoverageBenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16869    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16870      res.setType(parseCodeableConcept(xpp));
16871    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
16872      res.setRequirementElement(parseString(xpp));
16873    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("limit")) {
16874      res.getLimit().add(parseInsurancePlanCoverageBenefitLimitComponent(xpp));
16875    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16876      return false;
16877    }
16878    return true;
16879  }
16880
16881  protected InsurancePlan.CoverageBenefitLimitComponent parseInsurancePlanCoverageBenefitLimitComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16882    InsurancePlan.CoverageBenefitLimitComponent res = new InsurancePlan.CoverageBenefitLimitComponent();
16883    parseElementAttributes(xpp, res);
16884    next(xpp);
16885    int eventType = nextNoWhitespace(xpp);
16886    while (eventType != XmlPullParser.END_TAG) {
16887    if (!parseInsurancePlanCoverageBenefitLimitComponentContent(eventType, xpp, res))
16888        unknownContent(xpp);
16889      eventType = nextNoWhitespace(xpp);
16890    }
16891    next(xpp);
16892    parseElementClose(res);
16893    return res;
16894  }
16895
16896  protected boolean parseInsurancePlanCoverageBenefitLimitComponentContent(int eventType, XmlPullParser xpp, InsurancePlan.CoverageBenefitLimitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16897    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16898      res.setValue(parseQuantity(xpp));
16899    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16900      res.setCode(parseCodeableConcept(xpp));
16901    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16902      return false;
16903    }
16904    return true;
16905  }
16906
16907  protected InsurancePlan.InsurancePlanPlanComponent parseInsurancePlanPlanComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16908    InsurancePlan.InsurancePlanPlanComponent res = new InsurancePlan.InsurancePlanPlanComponent();
16909    parseElementAttributes(xpp, res);
16910    next(xpp);
16911    int eventType = nextNoWhitespace(xpp);
16912    while (eventType != XmlPullParser.END_TAG) {
16913    if (!parseInsurancePlanPlanComponentContent(eventType, xpp, res))
16914        unknownContent(xpp);
16915      eventType = nextNoWhitespace(xpp);
16916    }
16917    next(xpp);
16918    parseElementClose(res);
16919    return res;
16920  }
16921
16922  protected boolean parseInsurancePlanPlanComponentContent(int eventType, XmlPullParser xpp, InsurancePlan.InsurancePlanPlanComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16923    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16924      res.getIdentifier().add(parseIdentifier(xpp));
16925    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16926      res.setType(parseCodeableConcept(xpp));
16927    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
16928      res.getCoverageArea().add(parseReference(xpp));
16929    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
16930      res.getNetwork().add(parseReference(xpp));
16931    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generalCost")) {
16932      res.getGeneralCost().add(parseInsurancePlanPlanGeneralCostComponent(xpp));
16933    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specificCost")) {
16934      res.getSpecificCost().add(parseInsurancePlanPlanSpecificCostComponent(xpp));
16935    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16936      return false;
16937    }
16938    return true;
16939  }
16940
16941  protected InsurancePlan.InsurancePlanPlanGeneralCostComponent parseInsurancePlanPlanGeneralCostComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16942    InsurancePlan.InsurancePlanPlanGeneralCostComponent res = new InsurancePlan.InsurancePlanPlanGeneralCostComponent();
16943    parseElementAttributes(xpp, res);
16944    next(xpp);
16945    int eventType = nextNoWhitespace(xpp);
16946    while (eventType != XmlPullParser.END_TAG) {
16947    if (!parseInsurancePlanPlanGeneralCostComponentContent(eventType, xpp, res))
16948        unknownContent(xpp);
16949      eventType = nextNoWhitespace(xpp);
16950    }
16951    next(xpp);
16952    parseElementClose(res);
16953    return res;
16954  }
16955
16956  protected boolean parseInsurancePlanPlanGeneralCostComponentContent(int eventType, XmlPullParser xpp, InsurancePlan.InsurancePlanPlanGeneralCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16957    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16958      res.setType(parseCodeableConcept(xpp));
16959    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupSize")) {
16960      res.setGroupSizeElement(parsePositiveInt(xpp));
16961    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
16962      res.setCost(parseMoney(xpp));
16963    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
16964      res.setCommentElement(parseString(xpp));
16965    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16966      return false;
16967    }
16968    return true;
16969  }
16970
16971  protected InsurancePlan.InsurancePlanPlanSpecificCostComponent parseInsurancePlanPlanSpecificCostComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16972    InsurancePlan.InsurancePlanPlanSpecificCostComponent res = new InsurancePlan.InsurancePlanPlanSpecificCostComponent();
16973    parseElementAttributes(xpp, res);
16974    next(xpp);
16975    int eventType = nextNoWhitespace(xpp);
16976    while (eventType != XmlPullParser.END_TAG) {
16977    if (!parseInsurancePlanPlanSpecificCostComponentContent(eventType, xpp, res))
16978        unknownContent(xpp);
16979      eventType = nextNoWhitespace(xpp);
16980    }
16981    next(xpp);
16982    parseElementClose(res);
16983    return res;
16984  }
16985
16986  protected boolean parseInsurancePlanPlanSpecificCostComponentContent(int eventType, XmlPullParser xpp, InsurancePlan.InsurancePlanPlanSpecificCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16987    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
16988      res.setCategory(parseCodeableConcept(xpp));
16989    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefit")) {
16990      res.getBenefit().add(parseInsurancePlanPlanBenefitComponent(xpp));
16991    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
16992      return false;
16993    }
16994    return true;
16995  }
16996
16997  protected InsurancePlan.PlanBenefitComponent parseInsurancePlanPlanBenefitComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16998    InsurancePlan.PlanBenefitComponent res = new InsurancePlan.PlanBenefitComponent();
16999    parseElementAttributes(xpp, res);
17000    next(xpp);
17001    int eventType = nextNoWhitespace(xpp);
17002    while (eventType != XmlPullParser.END_TAG) {
17003    if (!parseInsurancePlanPlanBenefitComponentContent(eventType, xpp, res))
17004        unknownContent(xpp);
17005      eventType = nextNoWhitespace(xpp);
17006    }
17007    next(xpp);
17008    parseElementClose(res);
17009    return res;
17010  }
17011
17012  protected boolean parseInsurancePlanPlanBenefitComponentContent(int eventType, XmlPullParser xpp, InsurancePlan.PlanBenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17013    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17014      res.setType(parseCodeableConcept(xpp));
17015    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
17016      res.getCost().add(parseInsurancePlanPlanBenefitCostComponent(xpp));
17017    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17018      return false;
17019    }
17020    return true;
17021  }
17022
17023  protected InsurancePlan.PlanBenefitCostComponent parseInsurancePlanPlanBenefitCostComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17024    InsurancePlan.PlanBenefitCostComponent res = new InsurancePlan.PlanBenefitCostComponent();
17025    parseElementAttributes(xpp, res);
17026    next(xpp);
17027    int eventType = nextNoWhitespace(xpp);
17028    while (eventType != XmlPullParser.END_TAG) {
17029    if (!parseInsurancePlanPlanBenefitCostComponentContent(eventType, xpp, res))
17030        unknownContent(xpp);
17031      eventType = nextNoWhitespace(xpp);
17032    }
17033    next(xpp);
17034    parseElementClose(res);
17035    return res;
17036  }
17037
17038  protected boolean parseInsurancePlanPlanBenefitCostComponentContent(int eventType, XmlPullParser xpp, InsurancePlan.PlanBenefitCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17039    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17040      res.setType(parseCodeableConcept(xpp));
17041    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
17042      res.setApplicability(parseCodeableConcept(xpp));
17043    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualifiers")) {
17044      res.getQualifiers().add(parseCodeableConcept(xpp));
17045    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
17046      res.setValue(parseQuantity(xpp));
17047    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17048      return false;
17049    }
17050    return true;
17051  }
17052
17053  protected InventoryItem parseInventoryItem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17054    InventoryItem res = new InventoryItem();
17055    parseResourceAttributes(xpp, res);
17056    next(xpp);
17057    int eventType = nextNoWhitespace(xpp);
17058    while (eventType != XmlPullParser.END_TAG) {
17059    if (!parseInventoryItemContent(eventType, xpp, res))
17060        unknownContent(xpp);
17061      eventType = nextNoWhitespace(xpp);
17062    }
17063    next(xpp);
17064    parseElementClose(res);
17065    return res;
17066  }
17067
17068  protected boolean parseInventoryItemContent(int eventType, XmlPullParser xpp, InventoryItem res) throws XmlPullParserException, IOException, FHIRFormatError {
17069    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17070      res.getIdentifier().add(parseIdentifier(xpp));
17071    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17072      res.setStatusElement(parseEnumeration(xpp, InventoryItem.InventoryItemStatusCodes.NULL, new InventoryItem.InventoryItemStatusCodesEnumFactory()));
17073    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
17074      res.getCategory().add(parseCodeableConcept(xpp));
17075    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17076      res.getCode().add(parseCodeableConcept(xpp));
17077    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17078      res.getName().add(parseInventoryItemNameComponent(xpp));
17079    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsibleOrganization")) {
17080      res.getResponsibleOrganization().add(parseInventoryItemResponsibleOrganizationComponent(xpp));
17081    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17082      res.setDescription(parseInventoryItemDescriptionComponent(xpp));
17083    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inventoryStatus")) {
17084      res.getInventoryStatus().add(parseCodeableConcept(xpp));
17085    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseUnit")) {
17086      res.setBaseUnit(parseCodeableConcept(xpp));
17087    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("netContent")) {
17088      res.setNetContent(parseQuantity(xpp));
17089    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("association")) {
17090      res.getAssociation().add(parseInventoryItemAssociationComponent(xpp));
17091    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
17092      res.getCharacteristic().add(parseInventoryItemCharacteristicComponent(xpp));
17093    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
17094      res.setInstance(parseInventoryItemInstanceComponent(xpp));
17095    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productReference")) {
17096      res.setProductReference(parseReference(xpp));
17097    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
17098      return false;
17099    }
17100    return true;
17101  }
17102
17103  protected InventoryItem.InventoryItemNameComponent parseInventoryItemNameComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17104    InventoryItem.InventoryItemNameComponent res = new InventoryItem.InventoryItemNameComponent();
17105    parseElementAttributes(xpp, res);
17106    next(xpp);
17107    int eventType = nextNoWhitespace(xpp);
17108    while (eventType != XmlPullParser.END_TAG) {
17109    if (!parseInventoryItemNameComponentContent(eventType, xpp, res))
17110        unknownContent(xpp);
17111      eventType = nextNoWhitespace(xpp);
17112    }
17113    next(xpp);
17114    parseElementClose(res);
17115    return res;
17116  }
17117
17118  protected boolean parseInventoryItemNameComponentContent(int eventType, XmlPullParser xpp, InventoryItem.InventoryItemNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17119    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nameType")) {
17120      res.setNameType(parseCoding(xpp));
17121    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
17122      res.setLanguageElement(parseEnumeration(xpp, Enumerations.CommonLanguages.NULL, new Enumerations.CommonLanguagesEnumFactory()));
17123    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17124      res.setNameElement(parseString(xpp));
17125    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17126      return false;
17127    }
17128    return true;
17129  }
17130
17131  protected InventoryItem.InventoryItemResponsibleOrganizationComponent parseInventoryItemResponsibleOrganizationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17132    InventoryItem.InventoryItemResponsibleOrganizationComponent res = new InventoryItem.InventoryItemResponsibleOrganizationComponent();
17133    parseElementAttributes(xpp, res);
17134    next(xpp);
17135    int eventType = nextNoWhitespace(xpp);
17136    while (eventType != XmlPullParser.END_TAG) {
17137    if (!parseInventoryItemResponsibleOrganizationComponentContent(eventType, xpp, res))
17138        unknownContent(xpp);
17139      eventType = nextNoWhitespace(xpp);
17140    }
17141    next(xpp);
17142    parseElementClose(res);
17143    return res;
17144  }
17145
17146  protected boolean parseInventoryItemResponsibleOrganizationComponentContent(int eventType, XmlPullParser xpp, InventoryItem.InventoryItemResponsibleOrganizationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17147    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
17148      res.setRole(parseCodeableConcept(xpp));
17149    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
17150      res.setOrganization(parseReference(xpp));
17151    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17152      return false;
17153    }
17154    return true;
17155  }
17156
17157  protected InventoryItem.InventoryItemDescriptionComponent parseInventoryItemDescriptionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17158    InventoryItem.InventoryItemDescriptionComponent res = new InventoryItem.InventoryItemDescriptionComponent();
17159    parseElementAttributes(xpp, res);
17160    next(xpp);
17161    int eventType = nextNoWhitespace(xpp);
17162    while (eventType != XmlPullParser.END_TAG) {
17163    if (!parseInventoryItemDescriptionComponentContent(eventType, xpp, res))
17164        unknownContent(xpp);
17165      eventType = nextNoWhitespace(xpp);
17166    }
17167    next(xpp);
17168    parseElementClose(res);
17169    return res;
17170  }
17171
17172  protected boolean parseInventoryItemDescriptionComponentContent(int eventType, XmlPullParser xpp, InventoryItem.InventoryItemDescriptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17173    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
17174      res.setLanguageElement(parseEnumeration(xpp, Enumerations.CommonLanguages.NULL, new Enumerations.CommonLanguagesEnumFactory()));
17175    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17176      res.setDescriptionElement(parseString(xpp));
17177    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17178      return false;
17179    }
17180    return true;
17181  }
17182
17183  protected InventoryItem.InventoryItemAssociationComponent parseInventoryItemAssociationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17184    InventoryItem.InventoryItemAssociationComponent res = new InventoryItem.InventoryItemAssociationComponent();
17185    parseElementAttributes(xpp, res);
17186    next(xpp);
17187    int eventType = nextNoWhitespace(xpp);
17188    while (eventType != XmlPullParser.END_TAG) {
17189    if (!parseInventoryItemAssociationComponentContent(eventType, xpp, res))
17190        unknownContent(xpp);
17191      eventType = nextNoWhitespace(xpp);
17192    }
17193    next(xpp);
17194    parseElementClose(res);
17195    return res;
17196  }
17197
17198  protected boolean parseInventoryItemAssociationComponentContent(int eventType, XmlPullParser xpp, InventoryItem.InventoryItemAssociationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17199    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("associationType")) {
17200      res.setAssociationType(parseCodeableConcept(xpp));
17201    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedItem")) {
17202      res.setRelatedItem(parseReference(xpp));
17203    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
17204      res.setQuantity(parseRatio(xpp));
17205    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17206      return false;
17207    }
17208    return true;
17209  }
17210
17211  protected InventoryItem.InventoryItemCharacteristicComponent parseInventoryItemCharacteristicComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17212    InventoryItem.InventoryItemCharacteristicComponent res = new InventoryItem.InventoryItemCharacteristicComponent();
17213    parseElementAttributes(xpp, res);
17214    next(xpp);
17215    int eventType = nextNoWhitespace(xpp);
17216    while (eventType != XmlPullParser.END_TAG) {
17217    if (!parseInventoryItemCharacteristicComponentContent(eventType, xpp, res))
17218        unknownContent(xpp);
17219      eventType = nextNoWhitespace(xpp);
17220    }
17221    next(xpp);
17222    parseElementClose(res);
17223    return res;
17224  }
17225
17226  protected boolean parseInventoryItemCharacteristicComponentContent(int eventType, XmlPullParser xpp, InventoryItem.InventoryItemCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17227    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristicType")) {
17228      res.setCharacteristicType(parseCodeableConcept(xpp));
17229    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
17230      res.setValue(parseType("value", xpp));
17231    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17232      return false;
17233    }
17234    return true;
17235  }
17236
17237  protected InventoryItem.InventoryItemInstanceComponent parseInventoryItemInstanceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17238    InventoryItem.InventoryItemInstanceComponent res = new InventoryItem.InventoryItemInstanceComponent();
17239    parseElementAttributes(xpp, res);
17240    next(xpp);
17241    int eventType = nextNoWhitespace(xpp);
17242    while (eventType != XmlPullParser.END_TAG) {
17243    if (!parseInventoryItemInstanceComponentContent(eventType, xpp, res))
17244        unknownContent(xpp);
17245      eventType = nextNoWhitespace(xpp);
17246    }
17247    next(xpp);
17248    parseElementClose(res);
17249    return res;
17250  }
17251
17252  protected boolean parseInventoryItemInstanceComponentContent(int eventType, XmlPullParser xpp, InventoryItem.InventoryItemInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17253    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17254      res.getIdentifier().add(parseIdentifier(xpp));
17255    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
17256      res.setLotNumberElement(parseString(xpp));
17257    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expiry")) {
17258      res.setExpiryElement(parseDateTime(xpp));
17259    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
17260      res.setSubject(parseReference(xpp));
17261    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
17262      res.setLocation(parseReference(xpp));
17263    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17264      return false;
17265    }
17266    return true;
17267  }
17268
17269  protected InventoryReport parseInventoryReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17270    InventoryReport res = new InventoryReport();
17271    parseResourceAttributes(xpp, res);
17272    next(xpp);
17273    int eventType = nextNoWhitespace(xpp);
17274    while (eventType != XmlPullParser.END_TAG) {
17275    if (!parseInventoryReportContent(eventType, xpp, res))
17276        unknownContent(xpp);
17277      eventType = nextNoWhitespace(xpp);
17278    }
17279    next(xpp);
17280    parseElementClose(res);
17281    return res;
17282  }
17283
17284  protected boolean parseInventoryReportContent(int eventType, XmlPullParser xpp, InventoryReport res) throws XmlPullParserException, IOException, FHIRFormatError {
17285    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17286      res.getIdentifier().add(parseIdentifier(xpp));
17287    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17288      res.setStatusElement(parseEnumeration(xpp, InventoryReport.InventoryReportStatus.NULL, new InventoryReport.InventoryReportStatusEnumFactory()));
17289    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countType")) {
17290      res.setCountTypeElement(parseEnumeration(xpp, InventoryReport.InventoryCountType.NULL, new InventoryReport.InventoryCountTypeEnumFactory()));
17291    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationType")) {
17292      res.setOperationType(parseCodeableConcept(xpp));
17293    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationTypeReason")) {
17294      res.setOperationTypeReason(parseCodeableConcept(xpp));
17295    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reportedDateTime")) {
17296      res.setReportedDateTimeElement(parseDateTime(xpp));
17297    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reporter")) {
17298      res.setReporter(parseReference(xpp));
17299    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reportingPeriod")) {
17300      res.setReportingPeriod(parsePeriod(xpp));
17301    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inventoryListing")) {
17302      res.getInventoryListing().add(parseInventoryReportInventoryListingComponent(xpp));
17303    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
17304      res.getNote().add(parseAnnotation(xpp));
17305    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
17306      return false;
17307    }
17308    return true;
17309  }
17310
17311  protected InventoryReport.InventoryReportInventoryListingComponent parseInventoryReportInventoryListingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17312    InventoryReport.InventoryReportInventoryListingComponent res = new InventoryReport.InventoryReportInventoryListingComponent();
17313    parseElementAttributes(xpp, res);
17314    next(xpp);
17315    int eventType = nextNoWhitespace(xpp);
17316    while (eventType != XmlPullParser.END_TAG) {
17317    if (!parseInventoryReportInventoryListingComponentContent(eventType, xpp, res))
17318        unknownContent(xpp);
17319      eventType = nextNoWhitespace(xpp);
17320    }
17321    next(xpp);
17322    parseElementClose(res);
17323    return res;
17324  }
17325
17326  protected boolean parseInventoryReportInventoryListingComponentContent(int eventType, XmlPullParser xpp, InventoryReport.InventoryReportInventoryListingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17327    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
17328      res.setLocation(parseReference(xpp));
17329    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemStatus")) {
17330      res.setItemStatus(parseCodeableConcept(xpp));
17331    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countingDateTime")) {
17332      res.setCountingDateTimeElement(parseDateTime(xpp));
17333    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
17334      res.getItem().add(parseInventoryReportInventoryListingItemComponent(xpp));
17335    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17336      return false;
17337    }
17338    return true;
17339  }
17340
17341  protected InventoryReport.InventoryReportInventoryListingItemComponent parseInventoryReportInventoryListingItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17342    InventoryReport.InventoryReportInventoryListingItemComponent res = new InventoryReport.InventoryReportInventoryListingItemComponent();
17343    parseElementAttributes(xpp, res);
17344    next(xpp);
17345    int eventType = nextNoWhitespace(xpp);
17346    while (eventType != XmlPullParser.END_TAG) {
17347    if (!parseInventoryReportInventoryListingItemComponentContent(eventType, xpp, res))
17348        unknownContent(xpp);
17349      eventType = nextNoWhitespace(xpp);
17350    }
17351    next(xpp);
17352    parseElementClose(res);
17353    return res;
17354  }
17355
17356  protected boolean parseInventoryReportInventoryListingItemComponentContent(int eventType, XmlPullParser xpp, InventoryReport.InventoryReportInventoryListingItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17357    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
17358      res.setCategory(parseCodeableConcept(xpp));
17359    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
17360      res.setQuantity(parseQuantity(xpp));
17361    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
17362      res.setItem(parseCodeableReference(xpp));
17363    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17364      return false;
17365    }
17366    return true;
17367  }
17368
17369  protected Invoice parseInvoice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17370    Invoice res = new Invoice();
17371    parseResourceAttributes(xpp, res);
17372    next(xpp);
17373    int eventType = nextNoWhitespace(xpp);
17374    while (eventType != XmlPullParser.END_TAG) {
17375    if (!parseInvoiceContent(eventType, xpp, res))
17376        unknownContent(xpp);
17377      eventType = nextNoWhitespace(xpp);
17378    }
17379    next(xpp);
17380    parseElementClose(res);
17381    return res;
17382  }
17383
17384  protected boolean parseInvoiceContent(int eventType, XmlPullParser xpp, Invoice res) throws XmlPullParserException, IOException, FHIRFormatError {
17385    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17386      res.getIdentifier().add(parseIdentifier(xpp));
17387    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17388      res.setStatusElement(parseEnumeration(xpp, Invoice.InvoiceStatus.NULL, new Invoice.InvoiceStatusEnumFactory()));
17389    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cancelledReason")) {
17390      res.setCancelledReasonElement(parseString(xpp));
17391    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17392      res.setType(parseCodeableConcept(xpp));
17393    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
17394      res.setSubject(parseReference(xpp));
17395    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
17396      res.setRecipient(parseReference(xpp));
17397    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
17398      res.setDateElement(parseDateTime(xpp));
17399    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("creation")) {
17400      res.setCreationElement(parseDateTime(xpp));
17401    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "period")) {
17402      res.setPeriod(parseType("period", xpp));
17403    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
17404      res.getParticipant().add(parseInvoiceParticipantComponent(xpp));
17405    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
17406      res.setIssuer(parseReference(xpp));
17407    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
17408      res.setAccount(parseReference(xpp));
17409    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lineItem")) {
17410      res.getLineItem().add(parseInvoiceLineItemComponent(xpp));
17411    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalPriceComponent")) {
17412      res.getTotalPriceComponent().add(parseMonetaryComponent(xpp));
17413    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalNet")) {
17414      res.setTotalNet(parseMoney(xpp));
17415    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalGross")) {
17416      res.setTotalGross(parseMoney(xpp));
17417    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentTerms")) {
17418      res.setPaymentTermsElement(parseMarkdown(xpp));
17419    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
17420      res.getNote().add(parseAnnotation(xpp));
17421    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
17422      return false;
17423    }
17424    return true;
17425  }
17426
17427  protected Invoice.InvoiceParticipantComponent parseInvoiceParticipantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17428    Invoice.InvoiceParticipantComponent res = new Invoice.InvoiceParticipantComponent();
17429    parseElementAttributes(xpp, res);
17430    next(xpp);
17431    int eventType = nextNoWhitespace(xpp);
17432    while (eventType != XmlPullParser.END_TAG) {
17433    if (!parseInvoiceParticipantComponentContent(eventType, xpp, res))
17434        unknownContent(xpp);
17435      eventType = nextNoWhitespace(xpp);
17436    }
17437    next(xpp);
17438    parseElementClose(res);
17439    return res;
17440  }
17441
17442  protected boolean parseInvoiceParticipantComponentContent(int eventType, XmlPullParser xpp, Invoice.InvoiceParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17443    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
17444      res.setRole(parseCodeableConcept(xpp));
17445    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
17446      res.setActor(parseReference(xpp));
17447    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17448      return false;
17449    }
17450    return true;
17451  }
17452
17453  protected Invoice.InvoiceLineItemComponent parseInvoiceLineItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17454    Invoice.InvoiceLineItemComponent res = new Invoice.InvoiceLineItemComponent();
17455    parseElementAttributes(xpp, res);
17456    next(xpp);
17457    int eventType = nextNoWhitespace(xpp);
17458    while (eventType != XmlPullParser.END_TAG) {
17459    if (!parseInvoiceLineItemComponentContent(eventType, xpp, res))
17460        unknownContent(xpp);
17461      eventType = nextNoWhitespace(xpp);
17462    }
17463    next(xpp);
17464    parseElementClose(res);
17465    return res;
17466  }
17467
17468  protected boolean parseInvoiceLineItemComponentContent(int eventType, XmlPullParser xpp, Invoice.InvoiceLineItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17469    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
17470      res.setSequenceElement(parsePositiveInt(xpp));
17471    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
17472      res.setServiced(parseType("serviced", xpp));
17473    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "chargeItem")) {
17474      res.setChargeItem(parseType("chargeItem", xpp));
17475    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceComponent")) {
17476      res.getPriceComponent().add(parseMonetaryComponent(xpp));
17477    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17478      return false;
17479    }
17480    return true;
17481  }
17482
17483  protected Library parseLibrary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17484    Library res = new Library();
17485    parseResourceAttributes(xpp, res);
17486    next(xpp);
17487    int eventType = nextNoWhitespace(xpp);
17488    while (eventType != XmlPullParser.END_TAG) {
17489    if (!parseLibraryContent(eventType, xpp, res))
17490        unknownContent(xpp);
17491      eventType = nextNoWhitespace(xpp);
17492    }
17493    next(xpp);
17494    parseElementClose(res);
17495    return res;
17496  }
17497
17498  protected boolean parseLibraryContent(int eventType, XmlPullParser xpp, Library res) throws XmlPullParserException, IOException, FHIRFormatError {
17499    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
17500      res.setUrlElement(parseUri(xpp));
17501    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17502      res.getIdentifier().add(parseIdentifier(xpp));
17503    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
17504      res.setVersionElement(parseString(xpp));
17505    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
17506      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
17507    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17508      res.setNameElement(parseString(xpp));
17509    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
17510      res.setTitleElement(parseString(xpp));
17511    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
17512      res.setSubtitleElement(parseString(xpp));
17513    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17514      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
17515    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
17516      res.setExperimentalElement(parseBoolean(xpp));
17517    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17518      res.setType(parseCodeableConcept(xpp));
17519    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
17520      res.setSubject(parseType("subject", xpp));
17521    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
17522      res.setDateElement(parseDateTime(xpp));
17523    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
17524      res.setPublisherElement(parseString(xpp));
17525    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
17526      res.getContact().add(parseContactDetail(xpp));
17527    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17528      res.setDescriptionElement(parseMarkdown(xpp));
17529    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
17530      res.getUseContext().add(parseUsageContext(xpp));
17531    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
17532      res.getJurisdiction().add(parseCodeableConcept(xpp));
17533    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
17534      res.setPurposeElement(parseMarkdown(xpp));
17535    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
17536      res.setUsageElement(parseMarkdown(xpp));
17537    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
17538      res.setCopyrightElement(parseMarkdown(xpp));
17539    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
17540      res.setCopyrightLabelElement(parseString(xpp));
17541    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
17542      res.setApprovalDateElement(parseDate(xpp));
17543    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
17544      res.setLastReviewDateElement(parseDate(xpp));
17545    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
17546      res.setEffectivePeriod(parsePeriod(xpp));
17547    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
17548      res.getTopic().add(parseCodeableConcept(xpp));
17549    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
17550      res.getAuthor().add(parseContactDetail(xpp));
17551    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
17552      res.getEditor().add(parseContactDetail(xpp));
17553    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
17554      res.getReviewer().add(parseContactDetail(xpp));
17555    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
17556      res.getEndorser().add(parseContactDetail(xpp));
17557    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
17558      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
17559    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
17560      res.getParameter().add(parseParameterDefinition(xpp));
17561    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
17562      res.getDataRequirement().add(parseDataRequirement(xpp));
17563    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
17564      res.getContent().add(parseAttachment(xpp));
17565    } else if (!parseMetadataResourceContent(eventType, xpp, res)){ 
17566      return false;
17567    }
17568    return true;
17569  }
17570
17571  protected Linkage parseLinkage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17572    Linkage res = new Linkage();
17573    parseResourceAttributes(xpp, res);
17574    next(xpp);
17575    int eventType = nextNoWhitespace(xpp);
17576    while (eventType != XmlPullParser.END_TAG) {
17577    if (!parseLinkageContent(eventType, xpp, res))
17578        unknownContent(xpp);
17579      eventType = nextNoWhitespace(xpp);
17580    }
17581    next(xpp);
17582    parseElementClose(res);
17583    return res;
17584  }
17585
17586  protected boolean parseLinkageContent(int eventType, XmlPullParser xpp, Linkage res) throws XmlPullParserException, IOException, FHIRFormatError {
17587    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
17588      res.setActiveElement(parseBoolean(xpp));
17589    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
17590      res.setAuthor(parseReference(xpp));
17591    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
17592      res.getItem().add(parseLinkageItemComponent(xpp));
17593    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
17594      return false;
17595    }
17596    return true;
17597  }
17598
17599  protected Linkage.LinkageItemComponent parseLinkageItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17600    Linkage.LinkageItemComponent res = new Linkage.LinkageItemComponent();
17601    parseElementAttributes(xpp, res);
17602    next(xpp);
17603    int eventType = nextNoWhitespace(xpp);
17604    while (eventType != XmlPullParser.END_TAG) {
17605    if (!parseLinkageItemComponentContent(eventType, xpp, res))
17606        unknownContent(xpp);
17607      eventType = nextNoWhitespace(xpp);
17608    }
17609    next(xpp);
17610    parseElementClose(res);
17611    return res;
17612  }
17613
17614  protected boolean parseLinkageItemComponentContent(int eventType, XmlPullParser xpp, Linkage.LinkageItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17615    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17616      res.setTypeElement(parseEnumeration(xpp, Linkage.LinkageType.NULL, new Linkage.LinkageTypeEnumFactory()));
17617    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
17618      res.setResource(parseReference(xpp));
17619    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17620      return false;
17621    }
17622    return true;
17623  }
17624
17625  protected ListResource parseListResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17626    ListResource res = new ListResource();
17627    parseResourceAttributes(xpp, res);
17628    next(xpp);
17629    int eventType = nextNoWhitespace(xpp);
17630    while (eventType != XmlPullParser.END_TAG) {
17631    if (!parseListResourceContent(eventType, xpp, res))
17632        unknownContent(xpp);
17633      eventType = nextNoWhitespace(xpp);
17634    }
17635    next(xpp);
17636    parseElementClose(res);
17637    return res;
17638  }
17639
17640  protected boolean parseListResourceContent(int eventType, XmlPullParser xpp, ListResource res) throws XmlPullParserException, IOException, FHIRFormatError {
17641    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17642      res.getIdentifier().add(parseIdentifier(xpp));
17643    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17644      res.setStatusElement(parseEnumeration(xpp, ListResource.ListStatus.NULL, new ListResource.ListStatusEnumFactory()));
17645    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
17646      res.setModeElement(parseEnumeration(xpp, Enumerations.ListMode.NULL, new Enumerations.ListModeEnumFactory()));
17647    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
17648      res.setTitleElement(parseString(xpp));
17649    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17650      res.setCode(parseCodeableConcept(xpp));
17651    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
17652      res.getSubject().add(parseReference(xpp));
17653    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
17654      res.setEncounter(parseReference(xpp));
17655    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
17656      res.setDateElement(parseDateTime(xpp));
17657    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
17658      res.setSource(parseReference(xpp));
17659    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
17660      res.setOrderedBy(parseCodeableConcept(xpp));
17661    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
17662      res.getNote().add(parseAnnotation(xpp));
17663    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
17664      res.getEntry().add(parseListResourceEntryComponent(xpp));
17665    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
17666      res.setEmptyReason(parseCodeableConcept(xpp));
17667    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
17668      return false;
17669    }
17670    return true;
17671  }
17672
17673  protected ListResource.ListResourceEntryComponent parseListResourceEntryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17674    ListResource.ListResourceEntryComponent res = new ListResource.ListResourceEntryComponent();
17675    parseElementAttributes(xpp, res);
17676    next(xpp);
17677    int eventType = nextNoWhitespace(xpp);
17678    while (eventType != XmlPullParser.END_TAG) {
17679    if (!parseListResourceEntryComponentContent(eventType, xpp, res))
17680        unknownContent(xpp);
17681      eventType = nextNoWhitespace(xpp);
17682    }
17683    next(xpp);
17684    parseElementClose(res);
17685    return res;
17686  }
17687
17688  protected boolean parseListResourceEntryComponentContent(int eventType, XmlPullParser xpp, ListResource.ListResourceEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17689    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("flag")) {
17690      res.setFlag(parseCodeableConcept(xpp));
17691    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deleted")) {
17692      res.setDeletedElement(parseBoolean(xpp));
17693    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
17694      res.setDateElement(parseDateTime(xpp));
17695    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
17696      res.setItem(parseReference(xpp));
17697    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17698      return false;
17699    }
17700    return true;
17701  }
17702
17703  protected Location parseLocation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17704    Location res = new Location();
17705    parseResourceAttributes(xpp, res);
17706    next(xpp);
17707    int eventType = nextNoWhitespace(xpp);
17708    while (eventType != XmlPullParser.END_TAG) {
17709    if (!parseLocationContent(eventType, xpp, res))
17710        unknownContent(xpp);
17711      eventType = nextNoWhitespace(xpp);
17712    }
17713    next(xpp);
17714    parseElementClose(res);
17715    return res;
17716  }
17717
17718  protected boolean parseLocationContent(int eventType, XmlPullParser xpp, Location res) throws XmlPullParserException, IOException, FHIRFormatError {
17719    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17720      res.getIdentifier().add(parseIdentifier(xpp));
17721    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17722      res.setStatusElement(parseEnumeration(xpp, Location.LocationStatus.NULL, new Location.LocationStatusEnumFactory()));
17723    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
17724      res.setOperationalStatus(parseCoding(xpp));
17725    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17726      res.setNameElement(parseString(xpp));
17727    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
17728      res.getAlias().add(parseString(xpp));
17729    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17730      res.setDescriptionElement(parseMarkdown(xpp));
17731    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
17732      res.setModeElement(parseEnumeration(xpp, Location.LocationMode.NULL, new Location.LocationModeEnumFactory()));
17733    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17734      res.getType().add(parseCodeableConcept(xpp));
17735    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
17736      res.getContact().add(parseExtendedContactDetail(xpp));
17737    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
17738      res.setAddress(parseAddress(xpp));
17739    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
17740      res.setForm(parseCodeableConcept(xpp));
17741    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("position")) {
17742      res.setPosition(parseLocationPositionComponent(xpp));
17743    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
17744      res.setManagingOrganization(parseReference(xpp));
17745    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
17746      res.setPartOf(parseReference(xpp));
17747    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
17748      res.getCharacteristic().add(parseCodeableConcept(xpp));
17749    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hoursOfOperation")) {
17750      res.getHoursOfOperation().add(parseAvailability(xpp));
17751    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("virtualService")) {
17752      res.getVirtualService().add(parseVirtualServiceDetail(xpp));
17753    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
17754      res.getEndpoint().add(parseReference(xpp));
17755    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
17756      return false;
17757    }
17758    return true;
17759  }
17760
17761  protected Location.LocationPositionComponent parseLocationPositionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17762    Location.LocationPositionComponent res = new Location.LocationPositionComponent();
17763    parseElementAttributes(xpp, res);
17764    next(xpp);
17765    int eventType = nextNoWhitespace(xpp);
17766    while (eventType != XmlPullParser.END_TAG) {
17767    if (!parseLocationPositionComponentContent(eventType, xpp, res))
17768        unknownContent(xpp);
17769      eventType = nextNoWhitespace(xpp);
17770    }
17771    next(xpp);
17772    parseElementClose(res);
17773    return res;
17774  }
17775
17776  protected boolean parseLocationPositionComponentContent(int eventType, XmlPullParser xpp, Location.LocationPositionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17777    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("longitude")) {
17778      res.setLongitudeElement(parseDecimal(xpp));
17779    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("latitude")) {
17780      res.setLatitudeElement(parseDecimal(xpp));
17781    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altitude")) {
17782      res.setAltitudeElement(parseDecimal(xpp));
17783    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17784      return false;
17785    }
17786    return true;
17787  }
17788
17789  protected ManufacturedItemDefinition parseManufacturedItemDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17790    ManufacturedItemDefinition res = new ManufacturedItemDefinition();
17791    parseResourceAttributes(xpp, res);
17792    next(xpp);
17793    int eventType = nextNoWhitespace(xpp);
17794    while (eventType != XmlPullParser.END_TAG) {
17795    if (!parseManufacturedItemDefinitionContent(eventType, xpp, res))
17796        unknownContent(xpp);
17797      eventType = nextNoWhitespace(xpp);
17798    }
17799    next(xpp);
17800    parseElementClose(res);
17801    return res;
17802  }
17803
17804  protected boolean parseManufacturedItemDefinitionContent(int eventType, XmlPullParser xpp, ManufacturedItemDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
17805    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17806      res.getIdentifier().add(parseIdentifier(xpp));
17807    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17808      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
17809    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17810      res.setNameElement(parseString(xpp));
17811    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturedDoseForm")) {
17812      res.setManufacturedDoseForm(parseCodeableConcept(xpp));
17813    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfPresentation")) {
17814      res.setUnitOfPresentation(parseCodeableConcept(xpp));
17815    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
17816      res.getManufacturer().add(parseReference(xpp));
17817    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingStatus")) {
17818      res.getMarketingStatus().add(parseMarketingStatus(xpp));
17819    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
17820      res.getIngredient().add(parseCodeableConcept(xpp));
17821    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
17822      res.getProperty().add(parseManufacturedItemDefinitionPropertyComponent(xpp));
17823    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
17824      res.getComponent().add(parseManufacturedItemDefinitionComponentComponent(xpp));
17825    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
17826      return false;
17827    }
17828    return true;
17829  }
17830
17831  protected ManufacturedItemDefinition.ManufacturedItemDefinitionPropertyComponent parseManufacturedItemDefinitionPropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17832    ManufacturedItemDefinition.ManufacturedItemDefinitionPropertyComponent res = new ManufacturedItemDefinition.ManufacturedItemDefinitionPropertyComponent();
17833    parseElementAttributes(xpp, res);
17834    next(xpp);
17835    int eventType = nextNoWhitespace(xpp);
17836    while (eventType != XmlPullParser.END_TAG) {
17837    if (!parseManufacturedItemDefinitionPropertyComponentContent(eventType, xpp, res))
17838        unknownContent(xpp);
17839      eventType = nextNoWhitespace(xpp);
17840    }
17841    next(xpp);
17842    parseElementClose(res);
17843    return res;
17844  }
17845
17846  protected boolean parseManufacturedItemDefinitionPropertyComponentContent(int eventType, XmlPullParser xpp, ManufacturedItemDefinition.ManufacturedItemDefinitionPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17847    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17848      res.setType(parseCodeableConcept(xpp));
17849    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
17850      res.setValue(parseType("value", xpp));
17851    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17852      return false;
17853    }
17854    return true;
17855  }
17856
17857  protected ManufacturedItemDefinition.ManufacturedItemDefinitionComponentComponent parseManufacturedItemDefinitionComponentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17858    ManufacturedItemDefinition.ManufacturedItemDefinitionComponentComponent res = new ManufacturedItemDefinition.ManufacturedItemDefinitionComponentComponent();
17859    parseElementAttributes(xpp, res);
17860    next(xpp);
17861    int eventType = nextNoWhitespace(xpp);
17862    while (eventType != XmlPullParser.END_TAG) {
17863    if (!parseManufacturedItemDefinitionComponentComponentContent(eventType, xpp, res))
17864        unknownContent(xpp);
17865      eventType = nextNoWhitespace(xpp);
17866    }
17867    next(xpp);
17868    parseElementClose(res);
17869    return res;
17870  }
17871
17872  protected boolean parseManufacturedItemDefinitionComponentComponentContent(int eventType, XmlPullParser xpp, ManufacturedItemDefinition.ManufacturedItemDefinitionComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17873    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17874      res.setType(parseCodeableConcept(xpp));
17875    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
17876      res.getFunction().add(parseCodeableConcept(xpp));
17877    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
17878      res.getAmount().add(parseQuantity(xpp));
17879    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("constituent")) {
17880      res.getConstituent().add(parseManufacturedItemDefinitionComponentConstituentComponent(xpp));
17881    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
17882      res.getProperty().add(parseManufacturedItemDefinitionPropertyComponent(xpp));
17883    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
17884      res.getComponent().add(parseManufacturedItemDefinitionComponentComponent(xpp));
17885    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17886      return false;
17887    }
17888    return true;
17889  }
17890
17891  protected ManufacturedItemDefinition.ManufacturedItemDefinitionComponentConstituentComponent parseManufacturedItemDefinitionComponentConstituentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17892    ManufacturedItemDefinition.ManufacturedItemDefinitionComponentConstituentComponent res = new ManufacturedItemDefinition.ManufacturedItemDefinitionComponentConstituentComponent();
17893    parseElementAttributes(xpp, res);
17894    next(xpp);
17895    int eventType = nextNoWhitespace(xpp);
17896    while (eventType != XmlPullParser.END_TAG) {
17897    if (!parseManufacturedItemDefinitionComponentConstituentComponentContent(eventType, xpp, res))
17898        unknownContent(xpp);
17899      eventType = nextNoWhitespace(xpp);
17900    }
17901    next(xpp);
17902    parseElementClose(res);
17903    return res;
17904  }
17905
17906  protected boolean parseManufacturedItemDefinitionComponentConstituentComponentContent(int eventType, XmlPullParser xpp, ManufacturedItemDefinition.ManufacturedItemDefinitionComponentConstituentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17907    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
17908      res.getAmount().add(parseQuantity(xpp));
17909    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
17910      res.getLocation().add(parseCodeableConcept(xpp));
17911    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
17912      res.getFunction().add(parseCodeableConcept(xpp));
17913    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hasIngredient")) {
17914      res.getHasIngredient().add(parseCodeableReference(xpp));
17915    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
17916      return false;
17917    }
17918    return true;
17919  }
17920
17921  protected Measure parseMeasure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17922    Measure res = new Measure();
17923    parseResourceAttributes(xpp, res);
17924    next(xpp);
17925    int eventType = nextNoWhitespace(xpp);
17926    while (eventType != XmlPullParser.END_TAG) {
17927    if (!parseMeasureContent(eventType, xpp, res))
17928        unknownContent(xpp);
17929      eventType = nextNoWhitespace(xpp);
17930    }
17931    next(xpp);
17932    parseElementClose(res);
17933    return res;
17934  }
17935
17936  protected boolean parseMeasureContent(int eventType, XmlPullParser xpp, Measure res) throws XmlPullParserException, IOException, FHIRFormatError {
17937    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
17938      res.setUrlElement(parseUri(xpp));
17939    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17940      res.getIdentifier().add(parseIdentifier(xpp));
17941    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
17942      res.setVersionElement(parseString(xpp));
17943    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
17944      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
17945    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17946      res.setNameElement(parseString(xpp));
17947    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
17948      res.setTitleElement(parseString(xpp));
17949    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
17950      res.setSubtitleElement(parseString(xpp));
17951    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17952      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
17953    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
17954      res.setExperimentalElement(parseBoolean(xpp));
17955    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
17956      res.setSubject(parseType("subject", xpp));
17957    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
17958      res.setBasisElement(parseEnumeration(xpp, Enumerations.FHIRTypes.NULL, new Enumerations.FHIRTypesEnumFactory()));
17959    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
17960      res.setDateElement(parseDateTime(xpp));
17961    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
17962      res.setPublisherElement(parseString(xpp));
17963    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
17964      res.getContact().add(parseContactDetail(xpp));
17965    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17966      res.setDescriptionElement(parseMarkdown(xpp));
17967    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
17968      res.getUseContext().add(parseUsageContext(xpp));
17969    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
17970      res.getJurisdiction().add(parseCodeableConcept(xpp));
17971    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
17972      res.setPurposeElement(parseMarkdown(xpp));
17973    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
17974      res.setUsageElement(parseMarkdown(xpp));
17975    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
17976      res.setCopyrightElement(parseMarkdown(xpp));
17977    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
17978      res.setCopyrightLabelElement(parseString(xpp));
17979    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
17980      res.setApprovalDateElement(parseDate(xpp));
17981    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
17982      res.setLastReviewDateElement(parseDate(xpp));
17983    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
17984      res.setEffectivePeriod(parsePeriod(xpp));
17985    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
17986      res.getTopic().add(parseCodeableConcept(xpp));
17987    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
17988      res.getAuthor().add(parseContactDetail(xpp));
17989    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
17990      res.getEditor().add(parseContactDetail(xpp));
17991    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
17992      res.getReviewer().add(parseContactDetail(xpp));
17993    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
17994      res.getEndorser().add(parseContactDetail(xpp));
17995    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
17996      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
17997    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
17998      res.getLibrary().add(parseCanonical(xpp));
17999    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disclaimer")) {
18000      res.setDisclaimerElement(parseMarkdown(xpp));
18001    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoring")) {
18002      res.setScoring(parseCodeableConcept(xpp));
18003    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoringUnit")) {
18004      res.setScoringUnit(parseCodeableConcept(xpp));
18005    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositeScoring")) {
18006      res.setCompositeScoring(parseCodeableConcept(xpp));
18007    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18008      res.getType().add(parseCodeableConcept(xpp));
18009    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("riskAdjustment")) {
18010      res.setRiskAdjustmentElement(parseMarkdown(xpp));
18011    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rateAggregation")) {
18012      res.setRateAggregationElement(parseMarkdown(xpp));
18013    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
18014      res.setRationaleElement(parseMarkdown(xpp));
18015    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalRecommendationStatement")) {
18016      res.setClinicalRecommendationStatementElement(parseMarkdown(xpp));
18017    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("improvementNotation")) {
18018      res.setImprovementNotation(parseCodeableConcept(xpp));
18019    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
18020      res.getTerm().add(parseMeasureTermComponent(xpp));
18021    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guidance")) {
18022      res.setGuidanceElement(parseMarkdown(xpp));
18023    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
18024      res.getGroup().add(parseMeasureGroupComponent(xpp));
18025    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplementalData")) {
18026      res.getSupplementalData().add(parseMeasureSupplementalDataComponent(xpp));
18027    } else if (!parseMetadataResourceContent(eventType, xpp, res)){ 
18028      return false;
18029    }
18030    return true;
18031  }
18032
18033  protected Measure.MeasureTermComponent parseMeasureTermComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18034    Measure.MeasureTermComponent res = new Measure.MeasureTermComponent();
18035    parseElementAttributes(xpp, res);
18036    next(xpp);
18037    int eventType = nextNoWhitespace(xpp);
18038    while (eventType != XmlPullParser.END_TAG) {
18039    if (!parseMeasureTermComponentContent(eventType, xpp, res))
18040        unknownContent(xpp);
18041      eventType = nextNoWhitespace(xpp);
18042    }
18043    next(xpp);
18044    parseElementClose(res);
18045    return res;
18046  }
18047
18048  protected boolean parseMeasureTermComponentContent(int eventType, XmlPullParser xpp, Measure.MeasureTermComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18049    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18050      res.setCode(parseCodeableConcept(xpp));
18051    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
18052      res.setDefinitionElement(parseMarkdown(xpp));
18053    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18054      return false;
18055    }
18056    return true;
18057  }
18058
18059  protected Measure.MeasureGroupComponent parseMeasureGroupComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18060    Measure.MeasureGroupComponent res = new Measure.MeasureGroupComponent();
18061    parseElementAttributes(xpp, res);
18062    next(xpp);
18063    int eventType = nextNoWhitespace(xpp);
18064    while (eventType != XmlPullParser.END_TAG) {
18065    if (!parseMeasureGroupComponentContent(eventType, xpp, res))
18066        unknownContent(xpp);
18067      eventType = nextNoWhitespace(xpp);
18068    }
18069    next(xpp);
18070    parseElementClose(res);
18071    return res;
18072  }
18073
18074  protected boolean parseMeasureGroupComponentContent(int eventType, XmlPullParser xpp, Measure.MeasureGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18075    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
18076      res.setLinkIdElement(parseString(xpp));
18077    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18078      res.setCode(parseCodeableConcept(xpp));
18079    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18080      res.setDescriptionElement(parseMarkdown(xpp));
18081    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18082      res.getType().add(parseCodeableConcept(xpp));
18083    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
18084      res.setSubject(parseType("subject", xpp));
18085    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
18086      res.setBasisElement(parseEnumeration(xpp, Enumerations.FHIRTypes.NULL, new Enumerations.FHIRTypesEnumFactory()));
18087    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoring")) {
18088      res.setScoring(parseCodeableConcept(xpp));
18089    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoringUnit")) {
18090      res.setScoringUnit(parseCodeableConcept(xpp));
18091    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rateAggregation")) {
18092      res.setRateAggregationElement(parseMarkdown(xpp));
18093    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("improvementNotation")) {
18094      res.setImprovementNotation(parseCodeableConcept(xpp));
18095    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
18096      res.getLibrary().add(parseCanonical(xpp));
18097    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
18098      res.getPopulation().add(parseMeasureGroupPopulationComponent(xpp));
18099    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
18100      res.getStratifier().add(parseMeasureGroupStratifierComponent(xpp));
18101    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18102      return false;
18103    }
18104    return true;
18105  }
18106
18107  protected Measure.MeasureGroupPopulationComponent parseMeasureGroupPopulationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18108    Measure.MeasureGroupPopulationComponent res = new Measure.MeasureGroupPopulationComponent();
18109    parseElementAttributes(xpp, res);
18110    next(xpp);
18111    int eventType = nextNoWhitespace(xpp);
18112    while (eventType != XmlPullParser.END_TAG) {
18113    if (!parseMeasureGroupPopulationComponentContent(eventType, xpp, res))
18114        unknownContent(xpp);
18115      eventType = nextNoWhitespace(xpp);
18116    }
18117    next(xpp);
18118    parseElementClose(res);
18119    return res;
18120  }
18121
18122  protected boolean parseMeasureGroupPopulationComponentContent(int eventType, XmlPullParser xpp, Measure.MeasureGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18123    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
18124      res.setLinkIdElement(parseString(xpp));
18125    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18126      res.setCode(parseCodeableConcept(xpp));
18127    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18128      res.setDescriptionElement(parseMarkdown(xpp));
18129    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
18130      res.setCriteria(parseExpression(xpp));
18131    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupDefinition")) {
18132      res.setGroupDefinition(parseReference(xpp));
18133    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inputPopulationId")) {
18134      res.setInputPopulationIdElement(parseString(xpp));
18135    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("aggregateMethod")) {
18136      res.setAggregateMethod(parseCodeableConcept(xpp));
18137    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18138      return false;
18139    }
18140    return true;
18141  }
18142
18143  protected Measure.MeasureGroupStratifierComponent parseMeasureGroupStratifierComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18144    Measure.MeasureGroupStratifierComponent res = new Measure.MeasureGroupStratifierComponent();
18145    parseElementAttributes(xpp, res);
18146    next(xpp);
18147    int eventType = nextNoWhitespace(xpp);
18148    while (eventType != XmlPullParser.END_TAG) {
18149    if (!parseMeasureGroupStratifierComponentContent(eventType, xpp, res))
18150        unknownContent(xpp);
18151      eventType = nextNoWhitespace(xpp);
18152    }
18153    next(xpp);
18154    parseElementClose(res);
18155    return res;
18156  }
18157
18158  protected boolean parseMeasureGroupStratifierComponentContent(int eventType, XmlPullParser xpp, Measure.MeasureGroupStratifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18159    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
18160      res.setLinkIdElement(parseString(xpp));
18161    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18162      res.setCode(parseCodeableConcept(xpp));
18163    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18164      res.setDescriptionElement(parseMarkdown(xpp));
18165    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
18166      res.setCriteria(parseExpression(xpp));
18167    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupDefinition")) {
18168      res.setGroupDefinition(parseReference(xpp));
18169    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
18170      res.getComponent().add(parseMeasureGroupStratifierComponentComponent(xpp));
18171    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18172      return false;
18173    }
18174    return true;
18175  }
18176
18177  protected Measure.MeasureGroupStratifierComponentComponent parseMeasureGroupStratifierComponentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18178    Measure.MeasureGroupStratifierComponentComponent res = new Measure.MeasureGroupStratifierComponentComponent();
18179    parseElementAttributes(xpp, res);
18180    next(xpp);
18181    int eventType = nextNoWhitespace(xpp);
18182    while (eventType != XmlPullParser.END_TAG) {
18183    if (!parseMeasureGroupStratifierComponentComponentContent(eventType, xpp, res))
18184        unknownContent(xpp);
18185      eventType = nextNoWhitespace(xpp);
18186    }
18187    next(xpp);
18188    parseElementClose(res);
18189    return res;
18190  }
18191
18192  protected boolean parseMeasureGroupStratifierComponentComponentContent(int eventType, XmlPullParser xpp, Measure.MeasureGroupStratifierComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18193    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
18194      res.setLinkIdElement(parseString(xpp));
18195    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18196      res.setCode(parseCodeableConcept(xpp));
18197    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18198      res.setDescriptionElement(parseMarkdown(xpp));
18199    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
18200      res.setCriteria(parseExpression(xpp));
18201    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupDefinition")) {
18202      res.setGroupDefinition(parseReference(xpp));
18203    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18204      return false;
18205    }
18206    return true;
18207  }
18208
18209  protected Measure.MeasureSupplementalDataComponent parseMeasureSupplementalDataComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18210    Measure.MeasureSupplementalDataComponent res = new Measure.MeasureSupplementalDataComponent();
18211    parseElementAttributes(xpp, res);
18212    next(xpp);
18213    int eventType = nextNoWhitespace(xpp);
18214    while (eventType != XmlPullParser.END_TAG) {
18215    if (!parseMeasureSupplementalDataComponentContent(eventType, xpp, res))
18216        unknownContent(xpp);
18217      eventType = nextNoWhitespace(xpp);
18218    }
18219    next(xpp);
18220    parseElementClose(res);
18221    return res;
18222  }
18223
18224  protected boolean parseMeasureSupplementalDataComponentContent(int eventType, XmlPullParser xpp, Measure.MeasureSupplementalDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18225    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
18226      res.setLinkIdElement(parseString(xpp));
18227    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18228      res.setCode(parseCodeableConcept(xpp));
18229    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
18230      res.getUsage().add(parseCodeableConcept(xpp));
18231    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18232      res.setDescriptionElement(parseMarkdown(xpp));
18233    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
18234      res.setCriteria(parseExpression(xpp));
18235    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18236      return false;
18237    }
18238    return true;
18239  }
18240
18241  protected MeasureReport parseMeasureReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18242    MeasureReport res = new MeasureReport();
18243    parseResourceAttributes(xpp, res);
18244    next(xpp);
18245    int eventType = nextNoWhitespace(xpp);
18246    while (eventType != XmlPullParser.END_TAG) {
18247    if (!parseMeasureReportContent(eventType, xpp, res))
18248        unknownContent(xpp);
18249      eventType = nextNoWhitespace(xpp);
18250    }
18251    next(xpp);
18252    parseElementClose(res);
18253    return res;
18254  }
18255
18256  protected boolean parseMeasureReportContent(int eventType, XmlPullParser xpp, MeasureReport res) throws XmlPullParserException, IOException, FHIRFormatError {
18257    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18258      res.getIdentifier().add(parseIdentifier(xpp));
18259    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18260      res.setStatusElement(parseEnumeration(xpp, MeasureReport.MeasureReportStatus.NULL, new MeasureReport.MeasureReportStatusEnumFactory()));
18261    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18262      res.setTypeElement(parseEnumeration(xpp, MeasureReport.MeasureReportType.NULL, new MeasureReport.MeasureReportTypeEnumFactory()));
18263    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataUpdateType")) {
18264      res.setDataUpdateTypeElement(parseEnumeration(xpp, MeasureReport.SubmitDataUpdateType.NULL, new MeasureReport.SubmitDataUpdateTypeEnumFactory()));
18265    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
18266      res.setMeasureElement(parseCanonical(xpp));
18267    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
18268      res.setSubject(parseReference(xpp));
18269    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
18270      res.setDateElement(parseDateTime(xpp));
18271    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reporter")) {
18272      res.setReporter(parseReference(xpp));
18273    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reportingVendor")) {
18274      res.setReportingVendor(parseReference(xpp));
18275    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
18276      res.setLocation(parseReference(xpp));
18277    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
18278      res.setPeriod(parsePeriod(xpp));
18279    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inputParameters")) {
18280      res.setInputParameters(parseReference(xpp));
18281    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoring")) {
18282      res.setScoring(parseCodeableConcept(xpp));
18283    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("improvementNotation")) {
18284      res.setImprovementNotation(parseCodeableConcept(xpp));
18285    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
18286      res.getGroup().add(parseMeasureReportGroupComponent(xpp));
18287    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplementalData")) {
18288      res.getSupplementalData().add(parseReference(xpp));
18289    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluatedResource")) {
18290      res.getEvaluatedResource().add(parseReference(xpp));
18291    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
18292      return false;
18293    }
18294    return true;
18295  }
18296
18297  protected MeasureReport.MeasureReportGroupComponent parseMeasureReportGroupComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18298    MeasureReport.MeasureReportGroupComponent res = new MeasureReport.MeasureReportGroupComponent();
18299    parseElementAttributes(xpp, res);
18300    next(xpp);
18301    int eventType = nextNoWhitespace(xpp);
18302    while (eventType != XmlPullParser.END_TAG) {
18303    if (!parseMeasureReportGroupComponentContent(eventType, xpp, res))
18304        unknownContent(xpp);
18305      eventType = nextNoWhitespace(xpp);
18306    }
18307    next(xpp);
18308    parseElementClose(res);
18309    return res;
18310  }
18311
18312  protected boolean parseMeasureReportGroupComponentContent(int eventType, XmlPullParser xpp, MeasureReport.MeasureReportGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18313    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
18314      res.setLinkIdElement(parseString(xpp));
18315    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18316      res.setCode(parseCodeableConcept(xpp));
18317    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
18318      res.setSubject(parseReference(xpp));
18319    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
18320      res.getPopulation().add(parseMeasureReportGroupPopulationComponent(xpp));
18321    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "measureScore")) {
18322      res.setMeasureScore(parseType("measureScore", xpp));
18323    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
18324      res.getStratifier().add(parseMeasureReportGroupStratifierComponent(xpp));
18325    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18326      return false;
18327    }
18328    return true;
18329  }
18330
18331  protected MeasureReport.MeasureReportGroupPopulationComponent parseMeasureReportGroupPopulationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18332    MeasureReport.MeasureReportGroupPopulationComponent res = new MeasureReport.MeasureReportGroupPopulationComponent();
18333    parseElementAttributes(xpp, res);
18334    next(xpp);
18335    int eventType = nextNoWhitespace(xpp);
18336    while (eventType != XmlPullParser.END_TAG) {
18337    if (!parseMeasureReportGroupPopulationComponentContent(eventType, xpp, res))
18338        unknownContent(xpp);
18339      eventType = nextNoWhitespace(xpp);
18340    }
18341    next(xpp);
18342    parseElementClose(res);
18343    return res;
18344  }
18345
18346  protected boolean parseMeasureReportGroupPopulationComponentContent(int eventType, XmlPullParser xpp, MeasureReport.MeasureReportGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18347    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
18348      res.setLinkIdElement(parseString(xpp));
18349    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18350      res.setCode(parseCodeableConcept(xpp));
18351    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
18352      res.setCountElement(parseInteger(xpp));
18353    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectResults")) {
18354      res.setSubjectResults(parseReference(xpp));
18355    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectReport")) {
18356      res.getSubjectReport().add(parseReference(xpp));
18357    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjects")) {
18358      res.setSubjects(parseReference(xpp));
18359    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18360      return false;
18361    }
18362    return true;
18363  }
18364
18365  protected MeasureReport.MeasureReportGroupStratifierComponent parseMeasureReportGroupStratifierComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18366    MeasureReport.MeasureReportGroupStratifierComponent res = new MeasureReport.MeasureReportGroupStratifierComponent();
18367    parseElementAttributes(xpp, res);
18368    next(xpp);
18369    int eventType = nextNoWhitespace(xpp);
18370    while (eventType != XmlPullParser.END_TAG) {
18371    if (!parseMeasureReportGroupStratifierComponentContent(eventType, xpp, res))
18372        unknownContent(xpp);
18373      eventType = nextNoWhitespace(xpp);
18374    }
18375    next(xpp);
18376    parseElementClose(res);
18377    return res;
18378  }
18379
18380  protected boolean parseMeasureReportGroupStratifierComponentContent(int eventType, XmlPullParser xpp, MeasureReport.MeasureReportGroupStratifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18381    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
18382      res.setLinkIdElement(parseString(xpp));
18383    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18384      res.setCode(parseCodeableConcept(xpp));
18385    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratum")) {
18386      res.getStratum().add(parseMeasureReportStratifierGroupComponent(xpp));
18387    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18388      return false;
18389    }
18390    return true;
18391  }
18392
18393  protected MeasureReport.StratifierGroupComponent parseMeasureReportStratifierGroupComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18394    MeasureReport.StratifierGroupComponent res = new MeasureReport.StratifierGroupComponent();
18395    parseElementAttributes(xpp, res);
18396    next(xpp);
18397    int eventType = nextNoWhitespace(xpp);
18398    while (eventType != XmlPullParser.END_TAG) {
18399    if (!parseMeasureReportStratifierGroupComponentContent(eventType, xpp, res))
18400        unknownContent(xpp);
18401      eventType = nextNoWhitespace(xpp);
18402    }
18403    next(xpp);
18404    parseElementClose(res);
18405    return res;
18406  }
18407
18408  protected boolean parseMeasureReportStratifierGroupComponentContent(int eventType, XmlPullParser xpp, MeasureReport.StratifierGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18409    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
18410      res.setValue(parseType("value", xpp));
18411    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
18412      res.getComponent().add(parseMeasureReportStratifierGroupComponentComponent(xpp));
18413    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
18414      res.getPopulation().add(parseMeasureReportStratifierGroupPopulationComponent(xpp));
18415    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "measureScore")) {
18416      res.setMeasureScore(parseType("measureScore", xpp));
18417    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18418      return false;
18419    }
18420    return true;
18421  }
18422
18423  protected MeasureReport.StratifierGroupComponentComponent parseMeasureReportStratifierGroupComponentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18424    MeasureReport.StratifierGroupComponentComponent res = new MeasureReport.StratifierGroupComponentComponent();
18425    parseElementAttributes(xpp, res);
18426    next(xpp);
18427    int eventType = nextNoWhitespace(xpp);
18428    while (eventType != XmlPullParser.END_TAG) {
18429    if (!parseMeasureReportStratifierGroupComponentComponentContent(eventType, xpp, res))
18430        unknownContent(xpp);
18431      eventType = nextNoWhitespace(xpp);
18432    }
18433    next(xpp);
18434    parseElementClose(res);
18435    return res;
18436  }
18437
18438  protected boolean parseMeasureReportStratifierGroupComponentComponentContent(int eventType, XmlPullParser xpp, MeasureReport.StratifierGroupComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18439    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
18440      res.setLinkIdElement(parseString(xpp));
18441    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18442      res.setCode(parseCodeableConcept(xpp));
18443    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
18444      res.setValue(parseType("value", xpp));
18445    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18446      return false;
18447    }
18448    return true;
18449  }
18450
18451  protected MeasureReport.StratifierGroupPopulationComponent parseMeasureReportStratifierGroupPopulationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18452    MeasureReport.StratifierGroupPopulationComponent res = new MeasureReport.StratifierGroupPopulationComponent();
18453    parseElementAttributes(xpp, res);
18454    next(xpp);
18455    int eventType = nextNoWhitespace(xpp);
18456    while (eventType != XmlPullParser.END_TAG) {
18457    if (!parseMeasureReportStratifierGroupPopulationComponentContent(eventType, xpp, res))
18458        unknownContent(xpp);
18459      eventType = nextNoWhitespace(xpp);
18460    }
18461    next(xpp);
18462    parseElementClose(res);
18463    return res;
18464  }
18465
18466  protected boolean parseMeasureReportStratifierGroupPopulationComponentContent(int eventType, XmlPullParser xpp, MeasureReport.StratifierGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18467    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
18468      res.setLinkIdElement(parseString(xpp));
18469    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18470      res.setCode(parseCodeableConcept(xpp));
18471    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
18472      res.setCountElement(parseInteger(xpp));
18473    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectResults")) {
18474      res.setSubjectResults(parseReference(xpp));
18475    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectReport")) {
18476      res.getSubjectReport().add(parseReference(xpp));
18477    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjects")) {
18478      res.setSubjects(parseReference(xpp));
18479    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18480      return false;
18481    }
18482    return true;
18483  }
18484
18485  protected Medication parseMedication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18486    Medication res = new Medication();
18487    parseResourceAttributes(xpp, res);
18488    next(xpp);
18489    int eventType = nextNoWhitespace(xpp);
18490    while (eventType != XmlPullParser.END_TAG) {
18491    if (!parseMedicationContent(eventType, xpp, res))
18492        unknownContent(xpp);
18493      eventType = nextNoWhitespace(xpp);
18494    }
18495    next(xpp);
18496    parseElementClose(res);
18497    return res;
18498  }
18499
18500  protected boolean parseMedicationContent(int eventType, XmlPullParser xpp, Medication res) throws XmlPullParserException, IOException, FHIRFormatError {
18501    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18502      res.getIdentifier().add(parseIdentifier(xpp));
18503    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18504      res.setCode(parseCodeableConcept(xpp));
18505    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18506      res.setStatusElement(parseEnumeration(xpp, Medication.MedicationStatusCodes.NULL, new Medication.MedicationStatusCodesEnumFactory()));
18507    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingAuthorizationHolder")) {
18508      res.setMarketingAuthorizationHolder(parseReference(xpp));
18509    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseForm")) {
18510      res.setDoseForm(parseCodeableConcept(xpp));
18511    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalVolume")) {
18512      res.setTotalVolume(parseQuantity(xpp));
18513    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
18514      res.getIngredient().add(parseMedicationIngredientComponent(xpp));
18515    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("batch")) {
18516      res.setBatch(parseMedicationBatchComponent(xpp));
18517    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
18518      res.setDefinition(parseReference(xpp));
18519    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
18520      return false;
18521    }
18522    return true;
18523  }
18524
18525  protected Medication.MedicationIngredientComponent parseMedicationIngredientComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18526    Medication.MedicationIngredientComponent res = new Medication.MedicationIngredientComponent();
18527    parseElementAttributes(xpp, res);
18528    next(xpp);
18529    int eventType = nextNoWhitespace(xpp);
18530    while (eventType != XmlPullParser.END_TAG) {
18531    if (!parseMedicationIngredientComponentContent(eventType, xpp, res))
18532        unknownContent(xpp);
18533      eventType = nextNoWhitespace(xpp);
18534    }
18535    next(xpp);
18536    parseElementClose(res);
18537    return res;
18538  }
18539
18540  protected boolean parseMedicationIngredientComponentContent(int eventType, XmlPullParser xpp, Medication.MedicationIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18541    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
18542      res.setItem(parseCodeableReference(xpp));
18543    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isActive")) {
18544      res.setIsActiveElement(parseBoolean(xpp));
18545    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "strength")) {
18546      res.setStrength(parseType("strength", xpp));
18547    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18548      return false;
18549    }
18550    return true;
18551  }
18552
18553  protected Medication.MedicationBatchComponent parseMedicationBatchComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18554    Medication.MedicationBatchComponent res = new Medication.MedicationBatchComponent();
18555    parseElementAttributes(xpp, res);
18556    next(xpp);
18557    int eventType = nextNoWhitespace(xpp);
18558    while (eventType != XmlPullParser.END_TAG) {
18559    if (!parseMedicationBatchComponentContent(eventType, xpp, res))
18560        unknownContent(xpp);
18561      eventType = nextNoWhitespace(xpp);
18562    }
18563    next(xpp);
18564    parseElementClose(res);
18565    return res;
18566  }
18567
18568  protected boolean parseMedicationBatchComponentContent(int eventType, XmlPullParser xpp, Medication.MedicationBatchComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18569    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
18570      res.setLotNumberElement(parseString(xpp));
18571    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
18572      res.setExpirationDateElement(parseDateTime(xpp));
18573    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18574      return false;
18575    }
18576    return true;
18577  }
18578
18579  protected MedicationAdministration parseMedicationAdministration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18580    MedicationAdministration res = new MedicationAdministration();
18581    parseResourceAttributes(xpp, res);
18582    next(xpp);
18583    int eventType = nextNoWhitespace(xpp);
18584    while (eventType != XmlPullParser.END_TAG) {
18585    if (!parseMedicationAdministrationContent(eventType, xpp, res))
18586        unknownContent(xpp);
18587      eventType = nextNoWhitespace(xpp);
18588    }
18589    next(xpp);
18590    parseElementClose(res);
18591    return res;
18592  }
18593
18594  protected boolean parseMedicationAdministrationContent(int eventType, XmlPullParser xpp, MedicationAdministration res) throws XmlPullParserException, IOException, FHIRFormatError {
18595    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18596      res.getIdentifier().add(parseIdentifier(xpp));
18597    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
18598      res.getBasedOn().add(parseReference(xpp));
18599    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
18600      res.getPartOf().add(parseReference(xpp));
18601    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18602      res.setStatusElement(parseEnumeration(xpp, MedicationAdministration.MedicationAdministrationStatusCodes.NULL, new MedicationAdministration.MedicationAdministrationStatusCodesEnumFactory()));
18603    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
18604      res.getStatusReason().add(parseCodeableConcept(xpp));
18605    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
18606      res.getCategory().add(parseCodeableConcept(xpp));
18607    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medication")) {
18608      res.setMedication(parseCodeableReference(xpp));
18609    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
18610      res.setSubject(parseReference(xpp));
18611    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
18612      res.setEncounter(parseReference(xpp));
18613    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
18614      res.getSupportingInformation().add(parseReference(xpp));
18615    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurence")) {
18616      res.setOccurence(parseType("occurence", xpp));
18617    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
18618      res.setRecordedElement(parseDateTime(xpp));
18619    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isSubPotent")) {
18620      res.setIsSubPotentElement(parseBoolean(xpp));
18621    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subPotentReason")) {
18622      res.getSubPotentReason().add(parseCodeableConcept(xpp));
18623    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
18624      res.getPerformer().add(parseMedicationAdministrationPerformerComponent(xpp));
18625    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
18626      res.getReason().add(parseCodeableReference(xpp));
18627    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
18628      res.setRequest(parseReference(xpp));
18629    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
18630      res.getDevice().add(parseCodeableReference(xpp));
18631    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
18632      res.getNote().add(parseAnnotation(xpp));
18633    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
18634      res.setDosage(parseMedicationAdministrationDosageComponent(xpp));
18635    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
18636      res.getEventHistory().add(parseReference(xpp));
18637    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
18638      return false;
18639    }
18640    return true;
18641  }
18642
18643  protected MedicationAdministration.MedicationAdministrationPerformerComponent parseMedicationAdministrationPerformerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18644    MedicationAdministration.MedicationAdministrationPerformerComponent res = new MedicationAdministration.MedicationAdministrationPerformerComponent();
18645    parseElementAttributes(xpp, res);
18646    next(xpp);
18647    int eventType = nextNoWhitespace(xpp);
18648    while (eventType != XmlPullParser.END_TAG) {
18649    if (!parseMedicationAdministrationPerformerComponentContent(eventType, xpp, res))
18650        unknownContent(xpp);
18651      eventType = nextNoWhitespace(xpp);
18652    }
18653    next(xpp);
18654    parseElementClose(res);
18655    return res;
18656  }
18657
18658  protected boolean parseMedicationAdministrationPerformerComponentContent(int eventType, XmlPullParser xpp, MedicationAdministration.MedicationAdministrationPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18659    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
18660      res.setFunction(parseCodeableConcept(xpp));
18661    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
18662      res.setActor(parseCodeableReference(xpp));
18663    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18664      return false;
18665    }
18666    return true;
18667  }
18668
18669  protected MedicationAdministration.MedicationAdministrationDosageComponent parseMedicationAdministrationDosageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18670    MedicationAdministration.MedicationAdministrationDosageComponent res = new MedicationAdministration.MedicationAdministrationDosageComponent();
18671    parseElementAttributes(xpp, res);
18672    next(xpp);
18673    int eventType = nextNoWhitespace(xpp);
18674    while (eventType != XmlPullParser.END_TAG) {
18675    if (!parseMedicationAdministrationDosageComponentContent(eventType, xpp, res))
18676        unknownContent(xpp);
18677      eventType = nextNoWhitespace(xpp);
18678    }
18679    next(xpp);
18680    parseElementClose(res);
18681    return res;
18682  }
18683
18684  protected boolean parseMedicationAdministrationDosageComponentContent(int eventType, XmlPullParser xpp, MedicationAdministration.MedicationAdministrationDosageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18685    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
18686      res.setTextElement(parseString(xpp));
18687    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
18688      res.setSite(parseCodeableConcept(xpp));
18689    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
18690      res.setRoute(parseCodeableConcept(xpp));
18691    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
18692      res.setMethod(parseCodeableConcept(xpp));
18693    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dose")) {
18694      res.setDose(parseQuantity(xpp));
18695    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
18696      res.setRate(parseType("rate", xpp));
18697    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18698      return false;
18699    }
18700    return true;
18701  }
18702
18703  protected MedicationDispense parseMedicationDispense(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18704    MedicationDispense res = new MedicationDispense();
18705    parseResourceAttributes(xpp, res);
18706    next(xpp);
18707    int eventType = nextNoWhitespace(xpp);
18708    while (eventType != XmlPullParser.END_TAG) {
18709    if (!parseMedicationDispenseContent(eventType, xpp, res))
18710        unknownContent(xpp);
18711      eventType = nextNoWhitespace(xpp);
18712    }
18713    next(xpp);
18714    parseElementClose(res);
18715    return res;
18716  }
18717
18718  protected boolean parseMedicationDispenseContent(int eventType, XmlPullParser xpp, MedicationDispense res) throws XmlPullParserException, IOException, FHIRFormatError {
18719    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18720      res.getIdentifier().add(parseIdentifier(xpp));
18721    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
18722      res.getBasedOn().add(parseReference(xpp));
18723    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
18724      res.getPartOf().add(parseReference(xpp));
18725    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18726      res.setStatusElement(parseEnumeration(xpp, MedicationDispense.MedicationDispenseStatusCodes.NULL, new MedicationDispense.MedicationDispenseStatusCodesEnumFactory()));
18727    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notPerformedReason")) {
18728      res.setNotPerformedReason(parseCodeableReference(xpp));
18729    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusChanged")) {
18730      res.setStatusChangedElement(parseDateTime(xpp));
18731    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
18732      res.getCategory().add(parseCodeableConcept(xpp));
18733    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medication")) {
18734      res.setMedication(parseCodeableReference(xpp));
18735    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
18736      res.setSubject(parseReference(xpp));
18737    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
18738      res.setEncounter(parseReference(xpp));
18739    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
18740      res.getSupportingInformation().add(parseReference(xpp));
18741    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
18742      res.getPerformer().add(parseMedicationDispensePerformerComponent(xpp));
18743    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
18744      res.setLocation(parseReference(xpp));
18745    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizingPrescription")) {
18746      res.getAuthorizingPrescription().add(parseReference(xpp));
18747    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18748      res.setType(parseCodeableConcept(xpp));
18749    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
18750      res.setQuantity(parseQuantity(xpp));
18751    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysSupply")) {
18752      res.setDaysSupply(parseQuantity(xpp));
18753    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
18754      res.setRecordedElement(parseDateTime(xpp));
18755    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenPrepared")) {
18756      res.setWhenPreparedElement(parseDateTime(xpp));
18757    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenHandedOver")) {
18758      res.setWhenHandedOverElement(parseDateTime(xpp));
18759    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
18760      res.setDestination(parseReference(xpp));
18761    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
18762      res.getReceiver().add(parseReference(xpp));
18763    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
18764      res.getNote().add(parseAnnotation(xpp));
18765    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("renderedDosageInstruction")) {
18766      res.setRenderedDosageInstructionElement(parseMarkdown(xpp));
18767    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
18768      res.getDosageInstruction().add(parseDosage(xpp));
18769    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
18770      res.setSubstitution(parseMedicationDispenseSubstitutionComponent(xpp));
18771    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
18772      res.getEventHistory().add(parseReference(xpp));
18773    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
18774      return false;
18775    }
18776    return true;
18777  }
18778
18779  protected MedicationDispense.MedicationDispensePerformerComponent parseMedicationDispensePerformerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18780    MedicationDispense.MedicationDispensePerformerComponent res = new MedicationDispense.MedicationDispensePerformerComponent();
18781    parseElementAttributes(xpp, res);
18782    next(xpp);
18783    int eventType = nextNoWhitespace(xpp);
18784    while (eventType != XmlPullParser.END_TAG) {
18785    if (!parseMedicationDispensePerformerComponentContent(eventType, xpp, res))
18786        unknownContent(xpp);
18787      eventType = nextNoWhitespace(xpp);
18788    }
18789    next(xpp);
18790    parseElementClose(res);
18791    return res;
18792  }
18793
18794  protected boolean parseMedicationDispensePerformerComponentContent(int eventType, XmlPullParser xpp, MedicationDispense.MedicationDispensePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18795    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
18796      res.setFunction(parseCodeableConcept(xpp));
18797    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
18798      res.setActor(parseReference(xpp));
18799    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18800      return false;
18801    }
18802    return true;
18803  }
18804
18805  protected MedicationDispense.MedicationDispenseSubstitutionComponent parseMedicationDispenseSubstitutionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18806    MedicationDispense.MedicationDispenseSubstitutionComponent res = new MedicationDispense.MedicationDispenseSubstitutionComponent();
18807    parseElementAttributes(xpp, res);
18808    next(xpp);
18809    int eventType = nextNoWhitespace(xpp);
18810    while (eventType != XmlPullParser.END_TAG) {
18811    if (!parseMedicationDispenseSubstitutionComponentContent(eventType, xpp, res))
18812        unknownContent(xpp);
18813      eventType = nextNoWhitespace(xpp);
18814    }
18815    next(xpp);
18816    parseElementClose(res);
18817    return res;
18818  }
18819
18820  protected boolean parseMedicationDispenseSubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationDispense.MedicationDispenseSubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18821    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wasSubstituted")) {
18822      res.setWasSubstitutedElement(parseBoolean(xpp));
18823    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18824      res.setType(parseCodeableConcept(xpp));
18825    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
18826      res.getReason().add(parseCodeableConcept(xpp));
18827    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsibleParty")) {
18828      res.setResponsibleParty(parseReference(xpp));
18829    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18830      return false;
18831    }
18832    return true;
18833  }
18834
18835  protected MedicationKnowledge parseMedicationKnowledge(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18836    MedicationKnowledge res = new MedicationKnowledge();
18837    parseResourceAttributes(xpp, res);
18838    next(xpp);
18839    int eventType = nextNoWhitespace(xpp);
18840    while (eventType != XmlPullParser.END_TAG) {
18841    if (!parseMedicationKnowledgeContent(eventType, xpp, res))
18842        unknownContent(xpp);
18843      eventType = nextNoWhitespace(xpp);
18844    }
18845    next(xpp);
18846    parseElementClose(res);
18847    return res;
18848  }
18849
18850  protected boolean parseMedicationKnowledgeContent(int eventType, XmlPullParser xpp, MedicationKnowledge res) throws XmlPullParserException, IOException, FHIRFormatError {
18851    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18852      res.getIdentifier().add(parseIdentifier(xpp));
18853    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18854      res.setCode(parseCodeableConcept(xpp));
18855    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18856      res.setStatusElement(parseEnumeration(xpp, MedicationKnowledge.MedicationKnowledgeStatusCodes.NULL, new MedicationKnowledge.MedicationKnowledgeStatusCodesEnumFactory()));
18857    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
18858      res.setAuthor(parseReference(xpp));
18859    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedJurisdiction")) {
18860      res.getIntendedJurisdiction().add(parseCodeableConcept(xpp));
18861    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18862      res.getName().add(parseString(xpp));
18863    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedMedicationKnowledge")) {
18864      res.getRelatedMedicationKnowledge().add(parseMedicationKnowledgeRelatedMedicationKnowledgeComponent(xpp));
18865    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("associatedMedication")) {
18866      res.getAssociatedMedication().add(parseReference(xpp));
18867    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productType")) {
18868      res.getProductType().add(parseCodeableConcept(xpp));
18869    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monograph")) {
18870      res.getMonograph().add(parseMedicationKnowledgeMonographComponent(xpp));
18871    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preparationInstruction")) {
18872      res.setPreparationInstructionElement(parseMarkdown(xpp));
18873    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
18874      res.getCost().add(parseMedicationKnowledgeCostComponent(xpp));
18875    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monitoringProgram")) {
18876      res.getMonitoringProgram().add(parseMedicationKnowledgeMonitoringProgramComponent(xpp));
18877    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indicationGuideline")) {
18878      res.getIndicationGuideline().add(parseMedicationKnowledgeIndicationGuidelineComponent(xpp));
18879    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medicineClassification")) {
18880      res.getMedicineClassification().add(parseMedicationKnowledgeMedicineClassificationComponent(xpp));
18881    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packaging")) {
18882      res.getPackaging().add(parseMedicationKnowledgePackagingComponent(xpp));
18883    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalUseIssue")) {
18884      res.getClinicalUseIssue().add(parseReference(xpp));
18885    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("storageGuideline")) {
18886      res.getStorageGuideline().add(parseMedicationKnowledgeStorageGuidelineComponent(xpp));
18887    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulatory")) {
18888      res.getRegulatory().add(parseMedicationKnowledgeRegulatoryComponent(xpp));
18889    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definitional")) {
18890      res.setDefinitional(parseMedicationKnowledgeDefinitionalComponent(xpp));
18891    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
18892      return false;
18893    }
18894    return true;
18895  }
18896
18897  protected MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent parseMedicationKnowledgeRelatedMedicationKnowledgeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18898    MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent res = new MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent();
18899    parseElementAttributes(xpp, res);
18900    next(xpp);
18901    int eventType = nextNoWhitespace(xpp);
18902    while (eventType != XmlPullParser.END_TAG) {
18903    if (!parseMedicationKnowledgeRelatedMedicationKnowledgeComponentContent(eventType, xpp, res))
18904        unknownContent(xpp);
18905      eventType = nextNoWhitespace(xpp);
18906    }
18907    next(xpp);
18908    parseElementClose(res);
18909    return res;
18910  }
18911
18912  protected boolean parseMedicationKnowledgeRelatedMedicationKnowledgeComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18913    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18914      res.setType(parseCodeableConcept(xpp));
18915    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
18916      res.getReference().add(parseReference(xpp));
18917    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18918      return false;
18919    }
18920    return true;
18921  }
18922
18923  protected MedicationKnowledge.MedicationKnowledgeMonographComponent parseMedicationKnowledgeMonographComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18924    MedicationKnowledge.MedicationKnowledgeMonographComponent res = new MedicationKnowledge.MedicationKnowledgeMonographComponent();
18925    parseElementAttributes(xpp, res);
18926    next(xpp);
18927    int eventType = nextNoWhitespace(xpp);
18928    while (eventType != XmlPullParser.END_TAG) {
18929    if (!parseMedicationKnowledgeMonographComponentContent(eventType, xpp, res))
18930        unknownContent(xpp);
18931      eventType = nextNoWhitespace(xpp);
18932    }
18933    next(xpp);
18934    parseElementClose(res);
18935    return res;
18936  }
18937
18938  protected boolean parseMedicationKnowledgeMonographComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeMonographComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18939    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18940      res.setType(parseCodeableConcept(xpp));
18941    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
18942      res.setSource(parseReference(xpp));
18943    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18944      return false;
18945    }
18946    return true;
18947  }
18948
18949  protected MedicationKnowledge.MedicationKnowledgeCostComponent parseMedicationKnowledgeCostComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18950    MedicationKnowledge.MedicationKnowledgeCostComponent res = new MedicationKnowledge.MedicationKnowledgeCostComponent();
18951    parseElementAttributes(xpp, res);
18952    next(xpp);
18953    int eventType = nextNoWhitespace(xpp);
18954    while (eventType != XmlPullParser.END_TAG) {
18955    if (!parseMedicationKnowledgeCostComponentContent(eventType, xpp, res))
18956        unknownContent(xpp);
18957      eventType = nextNoWhitespace(xpp);
18958    }
18959    next(xpp);
18960    parseElementClose(res);
18961    return res;
18962  }
18963
18964  protected boolean parseMedicationKnowledgeCostComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18965    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveDate")) {
18966      res.getEffectiveDate().add(parsePeriod(xpp));
18967    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18968      res.setType(parseCodeableConcept(xpp));
18969    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
18970      res.setSourceElement(parseString(xpp));
18971    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "cost")) {
18972      res.setCost(parseType("cost", xpp));
18973    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
18974      return false;
18975    }
18976    return true;
18977  }
18978
18979  protected MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent parseMedicationKnowledgeMonitoringProgramComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18980    MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent res = new MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent();
18981    parseElementAttributes(xpp, res);
18982    next(xpp);
18983    int eventType = nextNoWhitespace(xpp);
18984    while (eventType != XmlPullParser.END_TAG) {
18985    if (!parseMedicationKnowledgeMonitoringProgramComponentContent(eventType, xpp, res))
18986        unknownContent(xpp);
18987      eventType = nextNoWhitespace(xpp);
18988    }
18989    next(xpp);
18990    parseElementClose(res);
18991    return res;
18992  }
18993
18994  protected boolean parseMedicationKnowledgeMonitoringProgramComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18995    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18996      res.setType(parseCodeableConcept(xpp));
18997    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18998      res.setNameElement(parseString(xpp));
18999    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19000      return false;
19001    }
19002    return true;
19003  }
19004
19005  protected MedicationKnowledge.MedicationKnowledgeIndicationGuidelineComponent parseMedicationKnowledgeIndicationGuidelineComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19006    MedicationKnowledge.MedicationKnowledgeIndicationGuidelineComponent res = new MedicationKnowledge.MedicationKnowledgeIndicationGuidelineComponent();
19007    parseElementAttributes(xpp, res);
19008    next(xpp);
19009    int eventType = nextNoWhitespace(xpp);
19010    while (eventType != XmlPullParser.END_TAG) {
19011    if (!parseMedicationKnowledgeIndicationGuidelineComponentContent(eventType, xpp, res))
19012        unknownContent(xpp);
19013      eventType = nextNoWhitespace(xpp);
19014    }
19015    next(xpp);
19016    parseElementClose(res);
19017    return res;
19018  }
19019
19020  protected boolean parseMedicationKnowledgeIndicationGuidelineComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeIndicationGuidelineComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19021    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
19022      res.getIndication().add(parseCodeableReference(xpp));
19023    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosingGuideline")) {
19024      res.getDosingGuideline().add(parseMedicationKnowledgeIndicationGuidelineDosingGuidelineComponent(xpp));
19025    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19026      return false;
19027    }
19028    return true;
19029  }
19030
19031  protected MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelineComponent parseMedicationKnowledgeIndicationGuidelineDosingGuidelineComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19032    MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelineComponent res = new MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelineComponent();
19033    parseElementAttributes(xpp, res);
19034    next(xpp);
19035    int eventType = nextNoWhitespace(xpp);
19036    while (eventType != XmlPullParser.END_TAG) {
19037    if (!parseMedicationKnowledgeIndicationGuidelineDosingGuidelineComponentContent(eventType, xpp, res))
19038        unknownContent(xpp);
19039      eventType = nextNoWhitespace(xpp);
19040    }
19041    next(xpp);
19042    parseElementClose(res);
19043    return res;
19044  }
19045
19046  protected boolean parseMedicationKnowledgeIndicationGuidelineDosingGuidelineComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelineComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19047    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("treatmentIntent")) {
19048      res.setTreatmentIntent(parseCodeableConcept(xpp));
19049    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
19050      res.getDosage().add(parseMedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponent(xpp));
19051    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrationTreatment")) {
19052      res.setAdministrationTreatment(parseCodeableConcept(xpp));
19053    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientCharacteristic")) {
19054      res.getPatientCharacteristic().add(parseMedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponent(xpp));
19055    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19056      return false;
19057    }
19058    return true;
19059  }
19060
19061  protected MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponent parseMedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19062    MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponent res = new MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponent();
19063    parseElementAttributes(xpp, res);
19064    next(xpp);
19065    int eventType = nextNoWhitespace(xpp);
19066    while (eventType != XmlPullParser.END_TAG) {
19067    if (!parseMedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponentContent(eventType, xpp, res))
19068        unknownContent(xpp);
19069      eventType = nextNoWhitespace(xpp);
19070    }
19071    next(xpp);
19072    parseElementClose(res);
19073    return res;
19074  }
19075
19076  protected boolean parseMedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19077    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19078      res.setType(parseCodeableConcept(xpp));
19079    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
19080      res.getDosage().add(parseDosage(xpp));
19081    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19082      return false;
19083    }
19084    return true;
19085  }
19086
19087  protected MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponent parseMedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19088    MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponent res = new MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponent();
19089    parseElementAttributes(xpp, res);
19090    next(xpp);
19091    int eventType = nextNoWhitespace(xpp);
19092    while (eventType != XmlPullParser.END_TAG) {
19093    if (!parseMedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponentContent(eventType, xpp, res))
19094        unknownContent(xpp);
19095      eventType = nextNoWhitespace(xpp);
19096    }
19097    next(xpp);
19098    parseElementClose(res);
19099    return res;
19100  }
19101
19102  protected boolean parseMedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19103    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19104      res.setType(parseCodeableConcept(xpp));
19105    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
19106      res.setValue(parseType("value", xpp));
19107    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19108      return false;
19109    }
19110    return true;
19111  }
19112
19113  protected MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent parseMedicationKnowledgeMedicineClassificationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19114    MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent res = new MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent();
19115    parseElementAttributes(xpp, res);
19116    next(xpp);
19117    int eventType = nextNoWhitespace(xpp);
19118    while (eventType != XmlPullParser.END_TAG) {
19119    if (!parseMedicationKnowledgeMedicineClassificationComponentContent(eventType, xpp, res))
19120        unknownContent(xpp);
19121      eventType = nextNoWhitespace(xpp);
19122    }
19123    next(xpp);
19124    parseElementClose(res);
19125    return res;
19126  }
19127
19128  protected boolean parseMedicationKnowledgeMedicineClassificationComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19129    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19130      res.setType(parseCodeableConcept(xpp));
19131    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
19132      res.setSource(parseType("source", xpp));
19133    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
19134      res.getClassification().add(parseCodeableConcept(xpp));
19135    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19136      return false;
19137    }
19138    return true;
19139  }
19140
19141  protected MedicationKnowledge.MedicationKnowledgePackagingComponent parseMedicationKnowledgePackagingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19142    MedicationKnowledge.MedicationKnowledgePackagingComponent res = new MedicationKnowledge.MedicationKnowledgePackagingComponent();
19143    parseElementAttributes(xpp, res);
19144    next(xpp);
19145    int eventType = nextNoWhitespace(xpp);
19146    while (eventType != XmlPullParser.END_TAG) {
19147    if (!parseMedicationKnowledgePackagingComponentContent(eventType, xpp, res))
19148        unknownContent(xpp);
19149      eventType = nextNoWhitespace(xpp);
19150    }
19151    next(xpp);
19152    parseElementClose(res);
19153    return res;
19154  }
19155
19156  protected boolean parseMedicationKnowledgePackagingComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgePackagingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19157    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
19158      res.getCost().add(parseMedicationKnowledgeCostComponent(xpp));
19159    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packagedProduct")) {
19160      res.setPackagedProduct(parseReference(xpp));
19161    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19162      return false;
19163    }
19164    return true;
19165  }
19166
19167  protected MedicationKnowledge.MedicationKnowledgeStorageGuidelineComponent parseMedicationKnowledgeStorageGuidelineComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19168    MedicationKnowledge.MedicationKnowledgeStorageGuidelineComponent res = new MedicationKnowledge.MedicationKnowledgeStorageGuidelineComponent();
19169    parseElementAttributes(xpp, res);
19170    next(xpp);
19171    int eventType = nextNoWhitespace(xpp);
19172    while (eventType != XmlPullParser.END_TAG) {
19173    if (!parseMedicationKnowledgeStorageGuidelineComponentContent(eventType, xpp, res))
19174        unknownContent(xpp);
19175      eventType = nextNoWhitespace(xpp);
19176    }
19177    next(xpp);
19178    parseElementClose(res);
19179    return res;
19180  }
19181
19182  protected boolean parseMedicationKnowledgeStorageGuidelineComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeStorageGuidelineComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19183    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
19184      res.setReferenceElement(parseUri(xpp));
19185    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19186      res.getNote().add(parseAnnotation(xpp));
19187    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stabilityDuration")) {
19188      res.setStabilityDuration(parseDuration(xpp));
19189    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("environmentalSetting")) {
19190      res.getEnvironmentalSetting().add(parseMedicationKnowledgeStorageGuidelineEnvironmentalSettingComponent(xpp));
19191    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19192      return false;
19193    }
19194    return true;
19195  }
19196
19197  protected MedicationKnowledge.MedicationKnowledgeStorageGuidelineEnvironmentalSettingComponent parseMedicationKnowledgeStorageGuidelineEnvironmentalSettingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19198    MedicationKnowledge.MedicationKnowledgeStorageGuidelineEnvironmentalSettingComponent res = new MedicationKnowledge.MedicationKnowledgeStorageGuidelineEnvironmentalSettingComponent();
19199    parseElementAttributes(xpp, res);
19200    next(xpp);
19201    int eventType = nextNoWhitespace(xpp);
19202    while (eventType != XmlPullParser.END_TAG) {
19203    if (!parseMedicationKnowledgeStorageGuidelineEnvironmentalSettingComponentContent(eventType, xpp, res))
19204        unknownContent(xpp);
19205      eventType = nextNoWhitespace(xpp);
19206    }
19207    next(xpp);
19208    parseElementClose(res);
19209    return res;
19210  }
19211
19212  protected boolean parseMedicationKnowledgeStorageGuidelineEnvironmentalSettingComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeStorageGuidelineEnvironmentalSettingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19213    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19214      res.setType(parseCodeableConcept(xpp));
19215    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
19216      res.setValue(parseType("value", xpp));
19217    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19218      return false;
19219    }
19220    return true;
19221  }
19222
19223  protected MedicationKnowledge.MedicationKnowledgeRegulatoryComponent parseMedicationKnowledgeRegulatoryComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19224    MedicationKnowledge.MedicationKnowledgeRegulatoryComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatoryComponent();
19225    parseElementAttributes(xpp, res);
19226    next(xpp);
19227    int eventType = nextNoWhitespace(xpp);
19228    while (eventType != XmlPullParser.END_TAG) {
19229    if (!parseMedicationKnowledgeRegulatoryComponentContent(eventType, xpp, res))
19230        unknownContent(xpp);
19231      eventType = nextNoWhitespace(xpp);
19232    }
19233    next(xpp);
19234    parseElementClose(res);
19235    return res;
19236  }
19237
19238  protected boolean parseMedicationKnowledgeRegulatoryComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeRegulatoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19239    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulatoryAuthority")) {
19240      res.setRegulatoryAuthority(parseReference(xpp));
19241    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
19242      res.getSubstitution().add(parseMedicationKnowledgeRegulatorySubstitutionComponent(xpp));
19243    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
19244      res.getSchedule().add(parseCodeableConcept(xpp));
19245    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDispense")) {
19246      res.setMaxDispense(parseMedicationKnowledgeRegulatoryMaxDispenseComponent(xpp));
19247    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19248      return false;
19249    }
19250    return true;
19251  }
19252
19253  protected MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent parseMedicationKnowledgeRegulatorySubstitutionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19254    MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent();
19255    parseElementAttributes(xpp, res);
19256    next(xpp);
19257    int eventType = nextNoWhitespace(xpp);
19258    while (eventType != XmlPullParser.END_TAG) {
19259    if (!parseMedicationKnowledgeRegulatorySubstitutionComponentContent(eventType, xpp, res))
19260        unknownContent(xpp);
19261      eventType = nextNoWhitespace(xpp);
19262    }
19263    next(xpp);
19264    parseElementClose(res);
19265    return res;
19266  }
19267
19268  protected boolean parseMedicationKnowledgeRegulatorySubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19269    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19270      res.setType(parseCodeableConcept(xpp));
19271    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowed")) {
19272      res.setAllowedElement(parseBoolean(xpp));
19273    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19274      return false;
19275    }
19276    return true;
19277  }
19278
19279  protected MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent parseMedicationKnowledgeRegulatoryMaxDispenseComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19280    MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent();
19281    parseElementAttributes(xpp, res);
19282    next(xpp);
19283    int eventType = nextNoWhitespace(xpp);
19284    while (eventType != XmlPullParser.END_TAG) {
19285    if (!parseMedicationKnowledgeRegulatoryMaxDispenseComponentContent(eventType, xpp, res))
19286        unknownContent(xpp);
19287      eventType = nextNoWhitespace(xpp);
19288    }
19289    next(xpp);
19290    parseElementClose(res);
19291    return res;
19292  }
19293
19294  protected boolean parseMedicationKnowledgeRegulatoryMaxDispenseComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19295    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
19296      res.setQuantity(parseQuantity(xpp));
19297    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
19298      res.setPeriod(parseDuration(xpp));
19299    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19300      return false;
19301    }
19302    return true;
19303  }
19304
19305  protected MedicationKnowledge.MedicationKnowledgeDefinitionalComponent parseMedicationKnowledgeDefinitionalComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19306    MedicationKnowledge.MedicationKnowledgeDefinitionalComponent res = new MedicationKnowledge.MedicationKnowledgeDefinitionalComponent();
19307    parseElementAttributes(xpp, res);
19308    next(xpp);
19309    int eventType = nextNoWhitespace(xpp);
19310    while (eventType != XmlPullParser.END_TAG) {
19311    if (!parseMedicationKnowledgeDefinitionalComponentContent(eventType, xpp, res))
19312        unknownContent(xpp);
19313      eventType = nextNoWhitespace(xpp);
19314    }
19315    next(xpp);
19316    parseElementClose(res);
19317    return res;
19318  }
19319
19320  protected boolean parseMedicationKnowledgeDefinitionalComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeDefinitionalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19321    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
19322      res.getDefinition().add(parseReference(xpp));
19323    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseForm")) {
19324      res.setDoseForm(parseCodeableConcept(xpp));
19325    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedRoute")) {
19326      res.getIntendedRoute().add(parseCodeableConcept(xpp));
19327    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
19328      res.getIngredient().add(parseMedicationKnowledgeDefinitionalIngredientComponent(xpp));
19329    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("drugCharacteristic")) {
19330      res.getDrugCharacteristic().add(parseMedicationKnowledgeDefinitionalDrugCharacteristicComponent(xpp));
19331    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19332      return false;
19333    }
19334    return true;
19335  }
19336
19337  protected MedicationKnowledge.MedicationKnowledgeDefinitionalIngredientComponent parseMedicationKnowledgeDefinitionalIngredientComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19338    MedicationKnowledge.MedicationKnowledgeDefinitionalIngredientComponent res = new MedicationKnowledge.MedicationKnowledgeDefinitionalIngredientComponent();
19339    parseElementAttributes(xpp, res);
19340    next(xpp);
19341    int eventType = nextNoWhitespace(xpp);
19342    while (eventType != XmlPullParser.END_TAG) {
19343    if (!parseMedicationKnowledgeDefinitionalIngredientComponentContent(eventType, xpp, res))
19344        unknownContent(xpp);
19345      eventType = nextNoWhitespace(xpp);
19346    }
19347    next(xpp);
19348    parseElementClose(res);
19349    return res;
19350  }
19351
19352  protected boolean parseMedicationKnowledgeDefinitionalIngredientComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeDefinitionalIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19353    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
19354      res.setItem(parseCodeableReference(xpp));
19355    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19356      res.setType(parseCodeableConcept(xpp));
19357    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "strength")) {
19358      res.setStrength(parseType("strength", xpp));
19359    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19360      return false;
19361    }
19362    return true;
19363  }
19364
19365  protected MedicationKnowledge.MedicationKnowledgeDefinitionalDrugCharacteristicComponent parseMedicationKnowledgeDefinitionalDrugCharacteristicComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19366    MedicationKnowledge.MedicationKnowledgeDefinitionalDrugCharacteristicComponent res = new MedicationKnowledge.MedicationKnowledgeDefinitionalDrugCharacteristicComponent();
19367    parseElementAttributes(xpp, res);
19368    next(xpp);
19369    int eventType = nextNoWhitespace(xpp);
19370    while (eventType != XmlPullParser.END_TAG) {
19371    if (!parseMedicationKnowledgeDefinitionalDrugCharacteristicComponentContent(eventType, xpp, res))
19372        unknownContent(xpp);
19373      eventType = nextNoWhitespace(xpp);
19374    }
19375    next(xpp);
19376    parseElementClose(res);
19377    return res;
19378  }
19379
19380  protected boolean parseMedicationKnowledgeDefinitionalDrugCharacteristicComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge.MedicationKnowledgeDefinitionalDrugCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19381    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19382      res.setType(parseCodeableConcept(xpp));
19383    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
19384      res.setValue(parseType("value", xpp));
19385    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19386      return false;
19387    }
19388    return true;
19389  }
19390
19391  protected MedicationRequest parseMedicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19392    MedicationRequest res = new MedicationRequest();
19393    parseResourceAttributes(xpp, res);
19394    next(xpp);
19395    int eventType = nextNoWhitespace(xpp);
19396    while (eventType != XmlPullParser.END_TAG) {
19397    if (!parseMedicationRequestContent(eventType, xpp, res))
19398        unknownContent(xpp);
19399      eventType = nextNoWhitespace(xpp);
19400    }
19401    next(xpp);
19402    parseElementClose(res);
19403    return res;
19404  }
19405
19406  protected boolean parseMedicationRequestContent(int eventType, XmlPullParser xpp, MedicationRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
19407    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19408      res.getIdentifier().add(parseIdentifier(xpp));
19409    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
19410      res.getBasedOn().add(parseReference(xpp));
19411    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorPrescription")) {
19412      res.setPriorPrescription(parseReference(xpp));
19413    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
19414      res.setGroupIdentifier(parseIdentifier(xpp));
19415    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19416      res.setStatusElement(parseEnumeration(xpp, MedicationRequest.MedicationrequestStatus.NULL, new MedicationRequest.MedicationrequestStatusEnumFactory()));
19417    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
19418      res.setStatusReason(parseCodeableConcept(xpp));
19419    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusChanged")) {
19420      res.setStatusChangedElement(parseDateTime(xpp));
19421    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
19422      res.setIntentElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestIntent.NULL, new MedicationRequest.MedicationRequestIntentEnumFactory()));
19423    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
19424      res.getCategory().add(parseCodeableConcept(xpp));
19425    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
19426      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
19427    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
19428      res.setDoNotPerformElement(parseBoolean(xpp));
19429    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medication")) {
19430      res.setMedication(parseCodeableReference(xpp));
19431    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
19432      res.setSubject(parseReference(xpp));
19433    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSource")) {
19434      res.getInformationSource().add(parseReference(xpp));
19435    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
19436      res.setEncounter(parseReference(xpp));
19437    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
19438      res.getSupportingInformation().add(parseReference(xpp));
19439    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
19440      res.setAuthoredOnElement(parseDateTime(xpp));
19441    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
19442      res.setRequester(parseReference(xpp));
19443    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reported")) {
19444      res.setReportedElement(parseBoolean(xpp));
19445    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
19446      res.setPerformerType(parseCodeableConcept(xpp));
19447    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
19448      res.getPerformer().add(parseReference(xpp));
19449    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
19450      res.getDevice().add(parseCodeableReference(xpp));
19451    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
19452      res.setRecorder(parseReference(xpp));
19453    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
19454      res.getReason().add(parseCodeableReference(xpp));
19455    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("courseOfTherapyType")) {
19456      res.setCourseOfTherapyType(parseCodeableConcept(xpp));
19457    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
19458      res.getInsurance().add(parseReference(xpp));
19459    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19460      res.getNote().add(parseAnnotation(xpp));
19461    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("renderedDosageInstruction")) {
19462      res.setRenderedDosageInstructionElement(parseMarkdown(xpp));
19463    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveDosePeriod")) {
19464      res.setEffectiveDosePeriod(parsePeriod(xpp));
19465    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
19466      res.getDosageInstruction().add(parseDosage(xpp));
19467    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenseRequest")) {
19468      res.setDispenseRequest(parseMedicationRequestDispenseRequestComponent(xpp));
19469    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
19470      res.setSubstitution(parseMedicationRequestSubstitutionComponent(xpp));
19471    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
19472      res.getEventHistory().add(parseReference(xpp));
19473    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
19474      return false;
19475    }
19476    return true;
19477  }
19478
19479  protected MedicationRequest.MedicationRequestDispenseRequestComponent parseMedicationRequestDispenseRequestComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19480    MedicationRequest.MedicationRequestDispenseRequestComponent res = new MedicationRequest.MedicationRequestDispenseRequestComponent();
19481    parseElementAttributes(xpp, res);
19482    next(xpp);
19483    int eventType = nextNoWhitespace(xpp);
19484    while (eventType != XmlPullParser.END_TAG) {
19485    if (!parseMedicationRequestDispenseRequestComponentContent(eventType, xpp, res))
19486        unknownContent(xpp);
19487      eventType = nextNoWhitespace(xpp);
19488    }
19489    next(xpp);
19490    parseElementClose(res);
19491    return res;
19492  }
19493
19494  protected boolean parseMedicationRequestDispenseRequestComponentContent(int eventType, XmlPullParser xpp, MedicationRequest.MedicationRequestDispenseRequestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19495    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initialFill")) {
19496      res.setInitialFill(parseMedicationRequestDispenseRequestInitialFillComponent(xpp));
19497    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenseInterval")) {
19498      res.setDispenseInterval(parseDuration(xpp));
19499    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
19500      res.setValidityPeriod(parsePeriod(xpp));
19501    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfRepeatsAllowed")) {
19502      res.setNumberOfRepeatsAllowedElement(parseUnsignedInt(xpp));
19503    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
19504      res.setQuantity(parseQuantity(xpp));
19505    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expectedSupplyDuration")) {
19506      res.setExpectedSupplyDuration(parseDuration(xpp));
19507    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenser")) {
19508      res.setDispenser(parseReference(xpp));
19509    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenserInstruction")) {
19510      res.getDispenserInstruction().add(parseAnnotation(xpp));
19511    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseAdministrationAid")) {
19512      res.setDoseAdministrationAid(parseCodeableConcept(xpp));
19513    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19514      return false;
19515    }
19516    return true;
19517  }
19518
19519  protected MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent parseMedicationRequestDispenseRequestInitialFillComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19520    MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent res = new MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent();
19521    parseElementAttributes(xpp, res);
19522    next(xpp);
19523    int eventType = nextNoWhitespace(xpp);
19524    while (eventType != XmlPullParser.END_TAG) {
19525    if (!parseMedicationRequestDispenseRequestInitialFillComponentContent(eventType, xpp, res))
19526        unknownContent(xpp);
19527      eventType = nextNoWhitespace(xpp);
19528    }
19529    next(xpp);
19530    parseElementClose(res);
19531    return res;
19532  }
19533
19534  protected boolean parseMedicationRequestDispenseRequestInitialFillComponentContent(int eventType, XmlPullParser xpp, MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19535    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
19536      res.setQuantity(parseQuantity(xpp));
19537    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
19538      res.setDuration(parseDuration(xpp));
19539    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19540      return false;
19541    }
19542    return true;
19543  }
19544
19545  protected MedicationRequest.MedicationRequestSubstitutionComponent parseMedicationRequestSubstitutionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19546    MedicationRequest.MedicationRequestSubstitutionComponent res = new MedicationRequest.MedicationRequestSubstitutionComponent();
19547    parseElementAttributes(xpp, res);
19548    next(xpp);
19549    int eventType = nextNoWhitespace(xpp);
19550    while (eventType != XmlPullParser.END_TAG) {
19551    if (!parseMedicationRequestSubstitutionComponentContent(eventType, xpp, res))
19552        unknownContent(xpp);
19553      eventType = nextNoWhitespace(xpp);
19554    }
19555    next(xpp);
19556    parseElementClose(res);
19557    return res;
19558  }
19559
19560  protected boolean parseMedicationRequestSubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationRequest.MedicationRequestSubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19561    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
19562      res.setAllowed(parseType("allowed", xpp));
19563    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
19564      res.setReason(parseCodeableConcept(xpp));
19565    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19566      return false;
19567    }
19568    return true;
19569  }
19570
19571  protected MedicationStatement parseMedicationStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19572    MedicationStatement res = new MedicationStatement();
19573    parseResourceAttributes(xpp, res);
19574    next(xpp);
19575    int eventType = nextNoWhitespace(xpp);
19576    while (eventType != XmlPullParser.END_TAG) {
19577    if (!parseMedicationStatementContent(eventType, xpp, res))
19578        unknownContent(xpp);
19579      eventType = nextNoWhitespace(xpp);
19580    }
19581    next(xpp);
19582    parseElementClose(res);
19583    return res;
19584  }
19585
19586  protected boolean parseMedicationStatementContent(int eventType, XmlPullParser xpp, MedicationStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
19587    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19588      res.getIdentifier().add(parseIdentifier(xpp));
19589    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
19590      res.getPartOf().add(parseReference(xpp));
19591    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19592      res.setStatusElement(parseEnumeration(xpp, MedicationStatement.MedicationStatementStatusCodes.NULL, new MedicationStatement.MedicationStatementStatusCodesEnumFactory()));
19593    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
19594      res.getCategory().add(parseCodeableConcept(xpp));
19595    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medication")) {
19596      res.setMedication(parseCodeableReference(xpp));
19597    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
19598      res.setSubject(parseReference(xpp));
19599    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
19600      res.setEncounter(parseReference(xpp));
19601    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
19602      res.setEffective(parseType("effective", xpp));
19603    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateAsserted")) {
19604      res.setDateAssertedElement(parseDateTime(xpp));
19605    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSource")) {
19606      res.getInformationSource().add(parseReference(xpp));
19607    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
19608      res.getDerivedFrom().add(parseReference(xpp));
19609    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
19610      res.getReason().add(parseCodeableReference(xpp));
19611    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19612      res.getNote().add(parseAnnotation(xpp));
19613    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedClinicalInformation")) {
19614      res.getRelatedClinicalInformation().add(parseReference(xpp));
19615    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("renderedDosageInstruction")) {
19616      res.setRenderedDosageInstructionElement(parseMarkdown(xpp));
19617    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
19618      res.getDosage().add(parseDosage(xpp));
19619    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adherence")) {
19620      res.setAdherence(parseMedicationStatementAdherenceComponent(xpp));
19621    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
19622      return false;
19623    }
19624    return true;
19625  }
19626
19627  protected MedicationStatement.MedicationStatementAdherenceComponent parseMedicationStatementAdherenceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19628    MedicationStatement.MedicationStatementAdherenceComponent res = new MedicationStatement.MedicationStatementAdherenceComponent();
19629    parseElementAttributes(xpp, res);
19630    next(xpp);
19631    int eventType = nextNoWhitespace(xpp);
19632    while (eventType != XmlPullParser.END_TAG) {
19633    if (!parseMedicationStatementAdherenceComponentContent(eventType, xpp, res))
19634        unknownContent(xpp);
19635      eventType = nextNoWhitespace(xpp);
19636    }
19637    next(xpp);
19638    parseElementClose(res);
19639    return res;
19640  }
19641
19642  protected boolean parseMedicationStatementAdherenceComponentContent(int eventType, XmlPullParser xpp, MedicationStatement.MedicationStatementAdherenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19643    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19644      res.setCode(parseCodeableConcept(xpp));
19645    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
19646      res.setReason(parseCodeableConcept(xpp));
19647    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19648      return false;
19649    }
19650    return true;
19651  }
19652
19653  protected MedicinalProductDefinition parseMedicinalProductDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19654    MedicinalProductDefinition res = new MedicinalProductDefinition();
19655    parseResourceAttributes(xpp, res);
19656    next(xpp);
19657    int eventType = nextNoWhitespace(xpp);
19658    while (eventType != XmlPullParser.END_TAG) {
19659    if (!parseMedicinalProductDefinitionContent(eventType, xpp, res))
19660        unknownContent(xpp);
19661      eventType = nextNoWhitespace(xpp);
19662    }
19663    next(xpp);
19664    parseElementClose(res);
19665    return res;
19666  }
19667
19668  protected boolean parseMedicinalProductDefinitionContent(int eventType, XmlPullParser xpp, MedicinalProductDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
19669    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19670      res.getIdentifier().add(parseIdentifier(xpp));
19671    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19672      res.setType(parseCodeableConcept(xpp));
19673    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
19674      res.setDomain(parseCodeableConcept(xpp));
19675    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
19676      res.setVersionElement(parseString(xpp));
19677    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19678      res.setStatus(parseCodeableConcept(xpp));
19679    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
19680      res.setStatusDateElement(parseDateTime(xpp));
19681    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19682      res.setDescriptionElement(parseMarkdown(xpp));
19683    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("combinedPharmaceuticalDoseForm")) {
19684      res.setCombinedPharmaceuticalDoseForm(parseCodeableConcept(xpp));
19685    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
19686      res.getRoute().add(parseCodeableConcept(xpp));
19687    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
19688      res.setIndicationElement(parseMarkdown(xpp));
19689    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalStatusOfSupply")) {
19690      res.setLegalStatusOfSupply(parseCodeableConcept(xpp));
19691    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalMonitoringIndicator")) {
19692      res.setAdditionalMonitoringIndicator(parseCodeableConcept(xpp));
19693    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialMeasures")) {
19694      res.getSpecialMeasures().add(parseCodeableConcept(xpp));
19695    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pediatricUseIndicator")) {
19696      res.setPediatricUseIndicator(parseCodeableConcept(xpp));
19697    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
19698      res.getClassification().add(parseCodeableConcept(xpp));
19699    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingStatus")) {
19700      res.getMarketingStatus().add(parseMarketingStatus(xpp));
19701    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packagedMedicinalProduct")) {
19702      res.getPackagedMedicinalProduct().add(parseCodeableConcept(xpp));
19703    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comprisedOf")) {
19704      res.getComprisedOf().add(parseReference(xpp));
19705    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
19706      res.getIngredient().add(parseCodeableConcept(xpp));
19707    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("impurity")) {
19708      res.getImpurity().add(parseCodeableReference(xpp));
19709    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachedDocument")) {
19710      res.getAttachedDocument().add(parseReference(xpp));
19711    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterFile")) {
19712      res.getMasterFile().add(parseReference(xpp));
19713    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
19714      res.getContact().add(parseMedicinalProductDefinitionContactComponent(xpp));
19715    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalTrial")) {
19716      res.getClinicalTrial().add(parseReference(xpp));
19717    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19718      res.getCode().add(parseCoding(xpp));
19719    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19720      res.getName().add(parseMedicinalProductDefinitionNameComponent(xpp));
19721    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("crossReference")) {
19722      res.getCrossReference().add(parseMedicinalProductDefinitionCrossReferenceComponent(xpp));
19723    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
19724      res.getOperation().add(parseMedicinalProductDefinitionOperationComponent(xpp));
19725    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
19726      res.getCharacteristic().add(parseMedicinalProductDefinitionCharacteristicComponent(xpp));
19727    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
19728      return false;
19729    }
19730    return true;
19731  }
19732
19733  protected MedicinalProductDefinition.MedicinalProductDefinitionContactComponent parseMedicinalProductDefinitionContactComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19734    MedicinalProductDefinition.MedicinalProductDefinitionContactComponent res = new MedicinalProductDefinition.MedicinalProductDefinitionContactComponent();
19735    parseElementAttributes(xpp, res);
19736    next(xpp);
19737    int eventType = nextNoWhitespace(xpp);
19738    while (eventType != XmlPullParser.END_TAG) {
19739    if (!parseMedicinalProductDefinitionContactComponentContent(eventType, xpp, res))
19740        unknownContent(xpp);
19741      eventType = nextNoWhitespace(xpp);
19742    }
19743    next(xpp);
19744    parseElementClose(res);
19745    return res;
19746  }
19747
19748  protected boolean parseMedicinalProductDefinitionContactComponentContent(int eventType, XmlPullParser xpp, MedicinalProductDefinition.MedicinalProductDefinitionContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19749    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19750      res.setType(parseCodeableConcept(xpp));
19751    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
19752      res.setContact(parseReference(xpp));
19753    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19754      return false;
19755    }
19756    return true;
19757  }
19758
19759  protected MedicinalProductDefinition.MedicinalProductDefinitionNameComponent parseMedicinalProductDefinitionNameComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19760    MedicinalProductDefinition.MedicinalProductDefinitionNameComponent res = new MedicinalProductDefinition.MedicinalProductDefinitionNameComponent();
19761    parseElementAttributes(xpp, res);
19762    next(xpp);
19763    int eventType = nextNoWhitespace(xpp);
19764    while (eventType != XmlPullParser.END_TAG) {
19765    if (!parseMedicinalProductDefinitionNameComponentContent(eventType, xpp, res))
19766        unknownContent(xpp);
19767      eventType = nextNoWhitespace(xpp);
19768    }
19769    next(xpp);
19770    parseElementClose(res);
19771    return res;
19772  }
19773
19774  protected boolean parseMedicinalProductDefinitionNameComponentContent(int eventType, XmlPullParser xpp, MedicinalProductDefinition.MedicinalProductDefinitionNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19775    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productName")) {
19776      res.setProductNameElement(parseString(xpp));
19777    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19778      res.setType(parseCodeableConcept(xpp));
19779    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
19780      res.getPart().add(parseMedicinalProductDefinitionNamePartComponent(xpp));
19781    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
19782      res.getUsage().add(parseMedicinalProductDefinitionNameUsageComponent(xpp));
19783    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19784      return false;
19785    }
19786    return true;
19787  }
19788
19789  protected MedicinalProductDefinition.MedicinalProductDefinitionNamePartComponent parseMedicinalProductDefinitionNamePartComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19790    MedicinalProductDefinition.MedicinalProductDefinitionNamePartComponent res = new MedicinalProductDefinition.MedicinalProductDefinitionNamePartComponent();
19791    parseElementAttributes(xpp, res);
19792    next(xpp);
19793    int eventType = nextNoWhitespace(xpp);
19794    while (eventType != XmlPullParser.END_TAG) {
19795    if (!parseMedicinalProductDefinitionNamePartComponentContent(eventType, xpp, res))
19796        unknownContent(xpp);
19797      eventType = nextNoWhitespace(xpp);
19798    }
19799    next(xpp);
19800    parseElementClose(res);
19801    return res;
19802  }
19803
19804  protected boolean parseMedicinalProductDefinitionNamePartComponentContent(int eventType, XmlPullParser xpp, MedicinalProductDefinition.MedicinalProductDefinitionNamePartComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19805    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
19806      res.setPartElement(parseString(xpp));
19807    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19808      res.setType(parseCodeableConcept(xpp));
19809    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19810      return false;
19811    }
19812    return true;
19813  }
19814
19815  protected MedicinalProductDefinition.MedicinalProductDefinitionNameUsageComponent parseMedicinalProductDefinitionNameUsageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19816    MedicinalProductDefinition.MedicinalProductDefinitionNameUsageComponent res = new MedicinalProductDefinition.MedicinalProductDefinitionNameUsageComponent();
19817    parseElementAttributes(xpp, res);
19818    next(xpp);
19819    int eventType = nextNoWhitespace(xpp);
19820    while (eventType != XmlPullParser.END_TAG) {
19821    if (!parseMedicinalProductDefinitionNameUsageComponentContent(eventType, xpp, res))
19822        unknownContent(xpp);
19823      eventType = nextNoWhitespace(xpp);
19824    }
19825    next(xpp);
19826    parseElementClose(res);
19827    return res;
19828  }
19829
19830  protected boolean parseMedicinalProductDefinitionNameUsageComponentContent(int eventType, XmlPullParser xpp, MedicinalProductDefinition.MedicinalProductDefinitionNameUsageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19831    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
19832      res.setCountry(parseCodeableConcept(xpp));
19833    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
19834      res.setJurisdiction(parseCodeableConcept(xpp));
19835    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
19836      res.setLanguage(parseCodeableConcept(xpp));
19837    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19838      return false;
19839    }
19840    return true;
19841  }
19842
19843  protected MedicinalProductDefinition.MedicinalProductDefinitionCrossReferenceComponent parseMedicinalProductDefinitionCrossReferenceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19844    MedicinalProductDefinition.MedicinalProductDefinitionCrossReferenceComponent res = new MedicinalProductDefinition.MedicinalProductDefinitionCrossReferenceComponent();
19845    parseElementAttributes(xpp, res);
19846    next(xpp);
19847    int eventType = nextNoWhitespace(xpp);
19848    while (eventType != XmlPullParser.END_TAG) {
19849    if (!parseMedicinalProductDefinitionCrossReferenceComponentContent(eventType, xpp, res))
19850        unknownContent(xpp);
19851      eventType = nextNoWhitespace(xpp);
19852    }
19853    next(xpp);
19854    parseElementClose(res);
19855    return res;
19856  }
19857
19858  protected boolean parseMedicinalProductDefinitionCrossReferenceComponentContent(int eventType, XmlPullParser xpp, MedicinalProductDefinition.MedicinalProductDefinitionCrossReferenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19859    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
19860      res.setProduct(parseCodeableReference(xpp));
19861    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19862      res.setType(parseCodeableConcept(xpp));
19863    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19864      return false;
19865    }
19866    return true;
19867  }
19868
19869  protected MedicinalProductDefinition.MedicinalProductDefinitionOperationComponent parseMedicinalProductDefinitionOperationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19870    MedicinalProductDefinition.MedicinalProductDefinitionOperationComponent res = new MedicinalProductDefinition.MedicinalProductDefinitionOperationComponent();
19871    parseElementAttributes(xpp, res);
19872    next(xpp);
19873    int eventType = nextNoWhitespace(xpp);
19874    while (eventType != XmlPullParser.END_TAG) {
19875    if (!parseMedicinalProductDefinitionOperationComponentContent(eventType, xpp, res))
19876        unknownContent(xpp);
19877      eventType = nextNoWhitespace(xpp);
19878    }
19879    next(xpp);
19880    parseElementClose(res);
19881    return res;
19882  }
19883
19884  protected boolean parseMedicinalProductDefinitionOperationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductDefinition.MedicinalProductDefinitionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19885    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19886      res.setType(parseCodeableReference(xpp));
19887    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveDate")) {
19888      res.setEffectiveDate(parsePeriod(xpp));
19889    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
19890      res.getOrganization().add(parseReference(xpp));
19891    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentialityIndicator")) {
19892      res.setConfidentialityIndicator(parseCodeableConcept(xpp));
19893    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19894      return false;
19895    }
19896    return true;
19897  }
19898
19899  protected MedicinalProductDefinition.MedicinalProductDefinitionCharacteristicComponent parseMedicinalProductDefinitionCharacteristicComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19900    MedicinalProductDefinition.MedicinalProductDefinitionCharacteristicComponent res = new MedicinalProductDefinition.MedicinalProductDefinitionCharacteristicComponent();
19901    parseElementAttributes(xpp, res);
19902    next(xpp);
19903    int eventType = nextNoWhitespace(xpp);
19904    while (eventType != XmlPullParser.END_TAG) {
19905    if (!parseMedicinalProductDefinitionCharacteristicComponentContent(eventType, xpp, res))
19906        unknownContent(xpp);
19907      eventType = nextNoWhitespace(xpp);
19908    }
19909    next(xpp);
19910    parseElementClose(res);
19911    return res;
19912  }
19913
19914  protected boolean parseMedicinalProductDefinitionCharacteristicComponentContent(int eventType, XmlPullParser xpp, MedicinalProductDefinition.MedicinalProductDefinitionCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19915    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19916      res.setType(parseCodeableConcept(xpp));
19917    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
19918      res.setValue(parseType("value", xpp));
19919    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
19920      return false;
19921    }
19922    return true;
19923  }
19924
19925  protected MessageDefinition parseMessageDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19926    MessageDefinition res = new MessageDefinition();
19927    parseResourceAttributes(xpp, res);
19928    next(xpp);
19929    int eventType = nextNoWhitespace(xpp);
19930    while (eventType != XmlPullParser.END_TAG) {
19931    if (!parseMessageDefinitionContent(eventType, xpp, res))
19932        unknownContent(xpp);
19933      eventType = nextNoWhitespace(xpp);
19934    }
19935    next(xpp);
19936    parseElementClose(res);
19937    return res;
19938  }
19939
19940  protected boolean parseMessageDefinitionContent(int eventType, XmlPullParser xpp, MessageDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
19941    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
19942      res.setUrlElement(parseUri(xpp));
19943    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19944      res.getIdentifier().add(parseIdentifier(xpp));
19945    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
19946      res.setVersionElement(parseString(xpp));
19947    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
19948      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
19949    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19950      res.setNameElement(parseString(xpp));
19951    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
19952      res.setTitleElement(parseString(xpp));
19953    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
19954      res.getReplaces().add(parseCanonical(xpp));
19955    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19956      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
19957    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
19958      res.setExperimentalElement(parseBoolean(xpp));
19959    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
19960      res.setDateElement(parseDateTime(xpp));
19961    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
19962      res.setPublisherElement(parseString(xpp));
19963    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
19964      res.getContact().add(parseContactDetail(xpp));
19965    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19966      res.setDescriptionElement(parseMarkdown(xpp));
19967    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
19968      res.getUseContext().add(parseUsageContext(xpp));
19969    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
19970      res.getJurisdiction().add(parseCodeableConcept(xpp));
19971    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
19972      res.setPurposeElement(parseMarkdown(xpp));
19973    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
19974      res.setCopyrightElement(parseMarkdown(xpp));
19975    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
19976      res.setCopyrightLabelElement(parseString(xpp));
19977    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
19978      res.setBaseElement(parseCanonical(xpp));
19979    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
19980      res.getParent().add(parseCanonical(xpp));
19981    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "event")) {
19982      res.setEvent(parseType("event", xpp));
19983    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
19984      res.setCategoryElement(parseEnumeration(xpp, MessageDefinition.MessageSignificanceCategory.NULL, new MessageDefinition.MessageSignificanceCategoryEnumFactory()));
19985    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
19986      res.getFocus().add(parseMessageDefinitionFocusComponent(xpp));
19987    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseRequired")) {
19988      res.setResponseRequiredElement(parseEnumeration(xpp, MessageDefinition.MessageheaderResponseRequest.NULL, new MessageDefinition.MessageheaderResponseRequestEnumFactory()));
19989    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowedResponse")) {
19990      res.getAllowedResponse().add(parseMessageDefinitionAllowedResponseComponent(xpp));
19991    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("graph")) {
19992      res.setGraphElement(parseCanonical(xpp));
19993    } else if (!parseCanonicalResourceContent(eventType, xpp, res)){ 
19994      return false;
19995    }
19996    return true;
19997  }
19998
19999  protected MessageDefinition.MessageDefinitionFocusComponent parseMessageDefinitionFocusComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20000    MessageDefinition.MessageDefinitionFocusComponent res = new MessageDefinition.MessageDefinitionFocusComponent();
20001    parseElementAttributes(xpp, res);
20002    next(xpp);
20003    int eventType = nextNoWhitespace(xpp);
20004    while (eventType != XmlPullParser.END_TAG) {
20005    if (!parseMessageDefinitionFocusComponentContent(eventType, xpp, res))
20006        unknownContent(xpp);
20007      eventType = nextNoWhitespace(xpp);
20008    }
20009    next(xpp);
20010    parseElementClose(res);
20011    return res;
20012  }
20013
20014  protected boolean parseMessageDefinitionFocusComponentContent(int eventType, XmlPullParser xpp, MessageDefinition.MessageDefinitionFocusComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20015    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
20016      res.setCodeElement(parseCode(xpp));
20017    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
20018      res.setProfileElement(parseCanonical(xpp));
20019    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
20020      res.setMinElement(parseUnsignedInt(xpp));
20021    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
20022      res.setMaxElement(parseString(xpp));
20023    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20024      return false;
20025    }
20026    return true;
20027  }
20028
20029  protected MessageDefinition.MessageDefinitionAllowedResponseComponent parseMessageDefinitionAllowedResponseComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20030    MessageDefinition.MessageDefinitionAllowedResponseComponent res = new MessageDefinition.MessageDefinitionAllowedResponseComponent();
20031    parseElementAttributes(xpp, res);
20032    next(xpp);
20033    int eventType = nextNoWhitespace(xpp);
20034    while (eventType != XmlPullParser.END_TAG) {
20035    if (!parseMessageDefinitionAllowedResponseComponentContent(eventType, xpp, res))
20036        unknownContent(xpp);
20037      eventType = nextNoWhitespace(xpp);
20038    }
20039    next(xpp);
20040    parseElementClose(res);
20041    return res;
20042  }
20043
20044  protected boolean parseMessageDefinitionAllowedResponseComponentContent(int eventType, XmlPullParser xpp, MessageDefinition.MessageDefinitionAllowedResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20045    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
20046      res.setMessageElement(parseCanonical(xpp));
20047    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("situation")) {
20048      res.setSituationElement(parseMarkdown(xpp));
20049    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20050      return false;
20051    }
20052    return true;
20053  }
20054
20055  protected MessageHeader parseMessageHeader(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20056    MessageHeader res = new MessageHeader();
20057    parseResourceAttributes(xpp, res);
20058    next(xpp);
20059    int eventType = nextNoWhitespace(xpp);
20060    while (eventType != XmlPullParser.END_TAG) {
20061    if (!parseMessageHeaderContent(eventType, xpp, res))
20062        unknownContent(xpp);
20063      eventType = nextNoWhitespace(xpp);
20064    }
20065    next(xpp);
20066    parseElementClose(res);
20067    return res;
20068  }
20069
20070  protected boolean parseMessageHeaderContent(int eventType, XmlPullParser xpp, MessageHeader res) throws XmlPullParserException, IOException, FHIRFormatError {
20071    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "event")) {
20072      res.setEvent(parseType("event", xpp));
20073    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
20074      res.getDestination().add(parseMessageHeaderMessageDestinationComponent(xpp));
20075    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
20076      res.setSender(parseReference(xpp));
20077    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
20078      res.setAuthor(parseReference(xpp));
20079    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
20080      res.setSource(parseMessageHeaderMessageSourceComponent(xpp));
20081    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
20082      res.setResponsible(parseReference(xpp));
20083    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
20084      res.setReason(parseCodeableConcept(xpp));
20085    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
20086      res.setResponse(parseMessageHeaderResponseComponent(xpp));
20087    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
20088      res.getFocus().add(parseReference(xpp));
20089    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
20090      res.setDefinitionElement(parseCanonical(xpp));
20091    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
20092      return false;
20093    }
20094    return true;
20095  }
20096
20097  protected MessageHeader.MessageDestinationComponent parseMessageHeaderMessageDestinationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20098    MessageHeader.MessageDestinationComponent res = new MessageHeader.MessageDestinationComponent();
20099    parseElementAttributes(xpp, res);
20100    next(xpp);
20101    int eventType = nextNoWhitespace(xpp);
20102    while (eventType != XmlPullParser.END_TAG) {
20103    if (!parseMessageHeaderMessageDestinationComponentContent(eventType, xpp, res))
20104        unknownContent(xpp);
20105      eventType = nextNoWhitespace(xpp);
20106    }
20107    next(xpp);
20108    parseElementClose(res);
20109    return res;
20110  }
20111
20112  protected boolean parseMessageHeaderMessageDestinationComponentContent(int eventType, XmlPullParser xpp, MessageHeader.MessageDestinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20113    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "endpoint")) {
20114      res.setEndpoint(parseType("endpoint", xpp));
20115    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20116      res.setNameElement(parseString(xpp));
20117    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
20118      res.setTarget(parseReference(xpp));
20119    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
20120      res.setReceiver(parseReference(xpp));
20121    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20122      return false;
20123    }
20124    return true;
20125  }
20126
20127  protected MessageHeader.MessageSourceComponent parseMessageHeaderMessageSourceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20128    MessageHeader.MessageSourceComponent res = new MessageHeader.MessageSourceComponent();
20129    parseElementAttributes(xpp, res);
20130    next(xpp);
20131    int eventType = nextNoWhitespace(xpp);
20132    while (eventType != XmlPullParser.END_TAG) {
20133    if (!parseMessageHeaderMessageSourceComponentContent(eventType, xpp, res))
20134        unknownContent(xpp);
20135      eventType = nextNoWhitespace(xpp);
20136    }
20137    next(xpp);
20138    parseElementClose(res);
20139    return res;
20140  }
20141
20142  protected boolean parseMessageHeaderMessageSourceComponentContent(int eventType, XmlPullParser xpp, MessageHeader.MessageSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20143    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "endpoint")) {
20144      res.setEndpoint(parseType("endpoint", xpp));
20145    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20146      res.setNameElement(parseString(xpp));
20147    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
20148      res.setSoftwareElement(parseString(xpp));
20149    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
20150      res.setVersionElement(parseString(xpp));
20151    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
20152      res.setContact(parseContactPoint(xpp));
20153    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20154      return false;
20155    }
20156    return true;
20157  }
20158
20159  protected MessageHeader.MessageHeaderResponseComponent parseMessageHeaderResponseComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20160    MessageHeader.MessageHeaderResponseComponent res = new MessageHeader.MessageHeaderResponseComponent();
20161    parseElementAttributes(xpp, res);
20162    next(xpp);
20163    int eventType = nextNoWhitespace(xpp);
20164    while (eventType != XmlPullParser.END_TAG) {
20165    if (!parseMessageHeaderResponseComponentContent(eventType, xpp, res))
20166        unknownContent(xpp);
20167      eventType = nextNoWhitespace(xpp);
20168    }
20169    next(xpp);
20170    parseElementClose(res);
20171    return res;
20172  }
20173
20174  protected boolean parseMessageHeaderResponseComponentContent(int eventType, XmlPullParser xpp, MessageHeader.MessageHeaderResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20175    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20176      res.setIdentifier(parseIdentifier(xpp));
20177    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
20178      res.setCodeElement(parseEnumeration(xpp, MessageHeader.ResponseType.NULL, new MessageHeader.ResponseTypeEnumFactory()));
20179    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
20180      res.setDetails(parseReference(xpp));
20181    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20182      return false;
20183    }
20184    return true;
20185  }
20186
20187  protected MolecularSequence parseMolecularSequence(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20188    MolecularSequence res = new MolecularSequence();
20189    parseResourceAttributes(xpp, res);
20190    next(xpp);
20191    int eventType = nextNoWhitespace(xpp);
20192    while (eventType != XmlPullParser.END_TAG) {
20193    if (!parseMolecularSequenceContent(eventType, xpp, res))
20194        unknownContent(xpp);
20195      eventType = nextNoWhitespace(xpp);
20196    }
20197    next(xpp);
20198    parseElementClose(res);
20199    return res;
20200  }
20201
20202  protected boolean parseMolecularSequenceContent(int eventType, XmlPullParser xpp, MolecularSequence res) throws XmlPullParserException, IOException, FHIRFormatError {
20203    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20204      res.getIdentifier().add(parseIdentifier(xpp));
20205    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20206      res.setTypeElement(parseEnumeration(xpp, MolecularSequence.SequenceType.NULL, new MolecularSequence.SequenceTypeEnumFactory()));
20207    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
20208      res.setSubject(parseReference(xpp));
20209    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
20210      res.getFocus().add(parseReference(xpp));
20211    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
20212      res.setSpecimen(parseReference(xpp));
20213    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
20214      res.setDevice(parseReference(xpp));
20215    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
20216      res.setPerformer(parseReference(xpp));
20217    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("literal")) {
20218      res.setLiteralElement(parseString(xpp));
20219    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("formatted")) {
20220      res.getFormatted().add(parseAttachment(xpp));
20221    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relative")) {
20222      res.getRelative().add(parseMolecularSequenceRelativeComponent(xpp));
20223    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
20224      return false;
20225    }
20226    return true;
20227  }
20228
20229  protected MolecularSequence.MolecularSequenceRelativeComponent parseMolecularSequenceRelativeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20230    MolecularSequence.MolecularSequenceRelativeComponent res = new MolecularSequence.MolecularSequenceRelativeComponent();
20231    parseElementAttributes(xpp, res);
20232    next(xpp);
20233    int eventType = nextNoWhitespace(xpp);
20234    while (eventType != XmlPullParser.END_TAG) {
20235    if (!parseMolecularSequenceRelativeComponentContent(eventType, xpp, res))
20236        unknownContent(xpp);
20237      eventType = nextNoWhitespace(xpp);
20238    }
20239    next(xpp);
20240    parseElementClose(res);
20241    return res;
20242  }
20243
20244  protected boolean parseMolecularSequenceRelativeComponentContent(int eventType, XmlPullParser xpp, MolecularSequence.MolecularSequenceRelativeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20245    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coordinateSystem")) {
20246      res.setCoordinateSystem(parseCodeableConcept(xpp));
20247    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ordinalPosition")) {
20248      res.setOrdinalPositionElement(parseInteger(xpp));
20249    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceRange")) {
20250      res.setSequenceRange(parseRange(xpp));
20251    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("startingSequence")) {
20252      res.setStartingSequence(parseMolecularSequenceRelativeStartingSequenceComponent(xpp));
20253    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("edit")) {
20254      res.getEdit().add(parseMolecularSequenceRelativeEditComponent(xpp));
20255    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20256      return false;
20257    }
20258    return true;
20259  }
20260
20261  protected MolecularSequence.MolecularSequenceRelativeStartingSequenceComponent parseMolecularSequenceRelativeStartingSequenceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20262    MolecularSequence.MolecularSequenceRelativeStartingSequenceComponent res = new MolecularSequence.MolecularSequenceRelativeStartingSequenceComponent();
20263    parseElementAttributes(xpp, res);
20264    next(xpp);
20265    int eventType = nextNoWhitespace(xpp);
20266    while (eventType != XmlPullParser.END_TAG) {
20267    if (!parseMolecularSequenceRelativeStartingSequenceComponentContent(eventType, xpp, res))
20268        unknownContent(xpp);
20269      eventType = nextNoWhitespace(xpp);
20270    }
20271    next(xpp);
20272    parseElementClose(res);
20273    return res;
20274  }
20275
20276  protected boolean parseMolecularSequenceRelativeStartingSequenceComponentContent(int eventType, XmlPullParser xpp, MolecularSequence.MolecularSequenceRelativeStartingSequenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20277    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genomeAssembly")) {
20278      res.setGenomeAssembly(parseCodeableConcept(xpp));
20279    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chromosome")) {
20280      res.setChromosome(parseCodeableConcept(xpp));
20281    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "sequence")) {
20282      res.setSequence(parseType("sequence", xpp));
20283    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowStart")) {
20284      res.setWindowStartElement(parseInteger(xpp));
20285    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowEnd")) {
20286      res.setWindowEndElement(parseInteger(xpp));
20287    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orientation")) {
20288      res.setOrientationElement(parseEnumeration(xpp, MolecularSequence.OrientationType.NULL, new MolecularSequence.OrientationTypeEnumFactory()));
20289    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strand")) {
20290      res.setStrandElement(parseEnumeration(xpp, MolecularSequence.StrandType.NULL, new MolecularSequence.StrandTypeEnumFactory()));
20291    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20292      return false;
20293    }
20294    return true;
20295  }
20296
20297  protected MolecularSequence.MolecularSequenceRelativeEditComponent parseMolecularSequenceRelativeEditComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20298    MolecularSequence.MolecularSequenceRelativeEditComponent res = new MolecularSequence.MolecularSequenceRelativeEditComponent();
20299    parseElementAttributes(xpp, res);
20300    next(xpp);
20301    int eventType = nextNoWhitespace(xpp);
20302    while (eventType != XmlPullParser.END_TAG) {
20303    if (!parseMolecularSequenceRelativeEditComponentContent(eventType, xpp, res))
20304        unknownContent(xpp);
20305      eventType = nextNoWhitespace(xpp);
20306    }
20307    next(xpp);
20308    parseElementClose(res);
20309    return res;
20310  }
20311
20312  protected boolean parseMolecularSequenceRelativeEditComponentContent(int eventType, XmlPullParser xpp, MolecularSequence.MolecularSequenceRelativeEditComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20313    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
20314      res.setStartElement(parseInteger(xpp));
20315    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
20316      res.setEndElement(parseInteger(xpp));
20317    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replacementSequence")) {
20318      res.setReplacementSequenceElement(parseString(xpp));
20319    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replacedSequence")) {
20320      res.setReplacedSequenceElement(parseString(xpp));
20321    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20322      return false;
20323    }
20324    return true;
20325  }
20326
20327  protected NamingSystem parseNamingSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20328    NamingSystem res = new NamingSystem();
20329    parseResourceAttributes(xpp, res);
20330    next(xpp);
20331    int eventType = nextNoWhitespace(xpp);
20332    while (eventType != XmlPullParser.END_TAG) {
20333    if (!parseNamingSystemContent(eventType, xpp, res))
20334        unknownContent(xpp);
20335      eventType = nextNoWhitespace(xpp);
20336    }
20337    next(xpp);
20338    parseElementClose(res);
20339    return res;
20340  }
20341
20342  protected boolean parseNamingSystemContent(int eventType, XmlPullParser xpp, NamingSystem res) throws XmlPullParserException, IOException, FHIRFormatError {
20343    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
20344      res.setUrlElement(parseUri(xpp));
20345    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20346      res.getIdentifier().add(parseIdentifier(xpp));
20347    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
20348      res.setVersionElement(parseString(xpp));
20349    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
20350      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
20351    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20352      res.setNameElement(parseString(xpp));
20353    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
20354      res.setTitleElement(parseString(xpp));
20355    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20356      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
20357    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
20358      res.setKindElement(parseEnumeration(xpp, NamingSystem.NamingSystemType.NULL, new NamingSystem.NamingSystemTypeEnumFactory()));
20359    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
20360      res.setExperimentalElement(parseBoolean(xpp));
20361    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
20362      res.setDateElement(parseDateTime(xpp));
20363    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
20364      res.setPublisherElement(parseString(xpp));
20365    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
20366      res.getContact().add(parseContactDetail(xpp));
20367    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
20368      res.setResponsibleElement(parseString(xpp));
20369    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20370      res.setType(parseCodeableConcept(xpp));
20371    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20372      res.setDescriptionElement(parseMarkdown(xpp));
20373    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
20374      res.getUseContext().add(parseUsageContext(xpp));
20375    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
20376      res.getJurisdiction().add(parseCodeableConcept(xpp));
20377    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
20378      res.setPurposeElement(parseMarkdown(xpp));
20379    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
20380      res.setCopyrightElement(parseMarkdown(xpp));
20381    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
20382      res.setCopyrightLabelElement(parseString(xpp));
20383    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
20384      res.setApprovalDateElement(parseDate(xpp));
20385    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
20386      res.setLastReviewDateElement(parseDate(xpp));
20387    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
20388      res.setEffectivePeriod(parsePeriod(xpp));
20389    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
20390      res.getTopic().add(parseCodeableConcept(xpp));
20391    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
20392      res.getAuthor().add(parseContactDetail(xpp));
20393    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
20394      res.getEditor().add(parseContactDetail(xpp));
20395    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
20396      res.getReviewer().add(parseContactDetail(xpp));
20397    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
20398      res.getEndorser().add(parseContactDetail(xpp));
20399    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
20400      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
20401    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
20402      res.setUsageElement(parseString(xpp));
20403    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uniqueId")) {
20404      res.getUniqueId().add(parseNamingSystemUniqueIdComponent(xpp));
20405    } else if (!parseMetadataResourceContent(eventType, xpp, res)){ 
20406      return false;
20407    }
20408    return true;
20409  }
20410
20411  protected NamingSystem.NamingSystemUniqueIdComponent parseNamingSystemUniqueIdComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20412    NamingSystem.NamingSystemUniqueIdComponent res = new NamingSystem.NamingSystemUniqueIdComponent();
20413    parseElementAttributes(xpp, res);
20414    next(xpp);
20415    int eventType = nextNoWhitespace(xpp);
20416    while (eventType != XmlPullParser.END_TAG) {
20417    if (!parseNamingSystemUniqueIdComponentContent(eventType, xpp, res))
20418        unknownContent(xpp);
20419      eventType = nextNoWhitespace(xpp);
20420    }
20421    next(xpp);
20422    parseElementClose(res);
20423    return res;
20424  }
20425
20426  protected boolean parseNamingSystemUniqueIdComponentContent(int eventType, XmlPullParser xpp, NamingSystem.NamingSystemUniqueIdComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20427    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20428      res.setTypeElement(parseEnumeration(xpp, NamingSystem.NamingSystemIdentifierType.NULL, new NamingSystem.NamingSystemIdentifierTypeEnumFactory()));
20429    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
20430      res.setValueElement(parseString(xpp));
20431    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
20432      res.setPreferredElement(parseBoolean(xpp));
20433    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
20434      res.setCommentElement(parseString(xpp));
20435    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
20436      res.setPeriod(parsePeriod(xpp));
20437    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoritative")) {
20438      res.setAuthoritativeElement(parseBoolean(xpp));
20439    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20440      return false;
20441    }
20442    return true;
20443  }
20444
20445  protected NutritionIntake parseNutritionIntake(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20446    NutritionIntake res = new NutritionIntake();
20447    parseResourceAttributes(xpp, res);
20448    next(xpp);
20449    int eventType = nextNoWhitespace(xpp);
20450    while (eventType != XmlPullParser.END_TAG) {
20451    if (!parseNutritionIntakeContent(eventType, xpp, res))
20452        unknownContent(xpp);
20453      eventType = nextNoWhitespace(xpp);
20454    }
20455    next(xpp);
20456    parseElementClose(res);
20457    return res;
20458  }
20459
20460  protected boolean parseNutritionIntakeContent(int eventType, XmlPullParser xpp, NutritionIntake res) throws XmlPullParserException, IOException, FHIRFormatError {
20461    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20462      res.getIdentifier().add(parseIdentifier(xpp));
20463    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
20464      res.getInstantiatesCanonical().add(parseCanonical(xpp));
20465    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
20466      res.getInstantiatesUri().add(parseUri(xpp));
20467    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
20468      res.getBasedOn().add(parseReference(xpp));
20469    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
20470      res.getPartOf().add(parseReference(xpp));
20471    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20472      res.setStatusElement(parseEnumeration(xpp, Enumerations.EventStatus.NULL, new Enumerations.EventStatusEnumFactory()));
20473    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
20474      res.getStatusReason().add(parseCodeableConcept(xpp));
20475    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
20476      res.setCode(parseCodeableConcept(xpp));
20477    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
20478      res.setSubject(parseReference(xpp));
20479    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
20480      res.setEncounter(parseReference(xpp));
20481    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
20482      res.setOccurrence(parseType("occurrence", xpp));
20483    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
20484      res.setRecordedElement(parseDateTime(xpp));
20485    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reported")) {
20486      res.setReported(parseType("reported", xpp));
20487    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("consumedItem")) {
20488      res.getConsumedItem().add(parseNutritionIntakeConsumedItemComponent(xpp));
20489    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredientLabel")) {
20490      res.getIngredientLabel().add(parseNutritionIntakeIngredientLabelComponent(xpp));
20491    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
20492      res.getPerformer().add(parseNutritionIntakePerformerComponent(xpp));
20493    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
20494      res.setLocation(parseReference(xpp));
20495    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
20496      res.getDerivedFrom().add(parseReference(xpp));
20497    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
20498      res.getReason().add(parseCodeableReference(xpp));
20499    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
20500      res.getNote().add(parseAnnotation(xpp));
20501    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
20502      return false;
20503    }
20504    return true;
20505  }
20506
20507  protected NutritionIntake.NutritionIntakeConsumedItemComponent parseNutritionIntakeConsumedItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20508    NutritionIntake.NutritionIntakeConsumedItemComponent res = new NutritionIntake.NutritionIntakeConsumedItemComponent();
20509    parseElementAttributes(xpp, res);
20510    next(xpp);
20511    int eventType = nextNoWhitespace(xpp);
20512    while (eventType != XmlPullParser.END_TAG) {
20513    if (!parseNutritionIntakeConsumedItemComponentContent(eventType, xpp, res))
20514        unknownContent(xpp);
20515      eventType = nextNoWhitespace(xpp);
20516    }
20517    next(xpp);
20518    parseElementClose(res);
20519    return res;
20520  }
20521
20522  protected boolean parseNutritionIntakeConsumedItemComponentContent(int eventType, XmlPullParser xpp, NutritionIntake.NutritionIntakeConsumedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20523    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20524      res.setType(parseCodeableConcept(xpp));
20525    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nutritionProduct")) {
20526      res.setNutritionProduct(parseCodeableReference(xpp));
20527    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
20528      res.setSchedule(parseTiming(xpp));
20529    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
20530      res.setAmount(parseQuantity(xpp));
20531    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rate")) {
20532      res.setRate(parseQuantity(xpp));
20533    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notConsumed")) {
20534      res.setNotConsumedElement(parseBoolean(xpp));
20535    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notConsumedReason")) {
20536      res.setNotConsumedReason(parseCodeableConcept(xpp));
20537    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20538      return false;
20539    }
20540    return true;
20541  }
20542
20543  protected NutritionIntake.NutritionIntakeIngredientLabelComponent parseNutritionIntakeIngredientLabelComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20544    NutritionIntake.NutritionIntakeIngredientLabelComponent res = new NutritionIntake.NutritionIntakeIngredientLabelComponent();
20545    parseElementAttributes(xpp, res);
20546    next(xpp);
20547    int eventType = nextNoWhitespace(xpp);
20548    while (eventType != XmlPullParser.END_TAG) {
20549    if (!parseNutritionIntakeIngredientLabelComponentContent(eventType, xpp, res))
20550        unknownContent(xpp);
20551      eventType = nextNoWhitespace(xpp);
20552    }
20553    next(xpp);
20554    parseElementClose(res);
20555    return res;
20556  }
20557
20558  protected boolean parseNutritionIntakeIngredientLabelComponentContent(int eventType, XmlPullParser xpp, NutritionIntake.NutritionIntakeIngredientLabelComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20559    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nutrient")) {
20560      res.setNutrient(parseCodeableReference(xpp));
20561    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
20562      res.setAmount(parseQuantity(xpp));
20563    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20564      return false;
20565    }
20566    return true;
20567  }
20568
20569  protected NutritionIntake.NutritionIntakePerformerComponent parseNutritionIntakePerformerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20570    NutritionIntake.NutritionIntakePerformerComponent res = new NutritionIntake.NutritionIntakePerformerComponent();
20571    parseElementAttributes(xpp, res);
20572    next(xpp);
20573    int eventType = nextNoWhitespace(xpp);
20574    while (eventType != XmlPullParser.END_TAG) {
20575    if (!parseNutritionIntakePerformerComponentContent(eventType, xpp, res))
20576        unknownContent(xpp);
20577      eventType = nextNoWhitespace(xpp);
20578    }
20579    next(xpp);
20580    parseElementClose(res);
20581    return res;
20582  }
20583
20584  protected boolean parseNutritionIntakePerformerComponentContent(int eventType, XmlPullParser xpp, NutritionIntake.NutritionIntakePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20585    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
20586      res.setFunction(parseCodeableConcept(xpp));
20587    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
20588      res.setActor(parseReference(xpp));
20589    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20590      return false;
20591    }
20592    return true;
20593  }
20594
20595  protected NutritionOrder parseNutritionOrder(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20596    NutritionOrder res = new NutritionOrder();
20597    parseResourceAttributes(xpp, res);
20598    next(xpp);
20599    int eventType = nextNoWhitespace(xpp);
20600    while (eventType != XmlPullParser.END_TAG) {
20601    if (!parseNutritionOrderContent(eventType, xpp, res))
20602        unknownContent(xpp);
20603      eventType = nextNoWhitespace(xpp);
20604    }
20605    next(xpp);
20606    parseElementClose(res);
20607    return res;
20608  }
20609
20610  protected boolean parseNutritionOrderContent(int eventType, XmlPullParser xpp, NutritionOrder res) throws XmlPullParserException, IOException, FHIRFormatError {
20611    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20612      res.getIdentifier().add(parseIdentifier(xpp));
20613    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
20614      res.getInstantiatesCanonical().add(parseCanonical(xpp));
20615    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
20616      res.getInstantiatesUri().add(parseUri(xpp));
20617    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
20618      res.getInstantiates().add(parseUri(xpp));
20619    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
20620      res.getBasedOn().add(parseReference(xpp));
20621    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
20622      res.setGroupIdentifier(parseIdentifier(xpp));
20623    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20624      res.setStatusElement(parseEnumeration(xpp, Enumerations.RequestStatus.NULL, new Enumerations.RequestStatusEnumFactory()));
20625    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
20626      res.setIntentElement(parseEnumeration(xpp, Enumerations.RequestIntent.NULL, new Enumerations.RequestIntentEnumFactory()));
20627    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
20628      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
20629    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
20630      res.setSubject(parseReference(xpp));
20631    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
20632      res.setEncounter(parseReference(xpp));
20633    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
20634      res.getSupportingInformation().add(parseReference(xpp));
20635    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
20636      res.setDateTimeElement(parseDateTime(xpp));
20637    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderer")) {
20638      res.setOrderer(parseReference(xpp));
20639    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
20640      res.getPerformer().add(parseCodeableReference(xpp));
20641    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergyIntolerance")) {
20642      res.getAllergyIntolerance().add(parseReference(xpp));
20643    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodPreferenceModifier")) {
20644      res.getFoodPreferenceModifier().add(parseCodeableConcept(xpp));
20645    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeFoodModifier")) {
20646      res.getExcludeFoodModifier().add(parseCodeableConcept(xpp));
20647    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outsideFoodAllowed")) {
20648      res.setOutsideFoodAllowedElement(parseBoolean(xpp));
20649    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("oralDiet")) {
20650      res.setOralDiet(parseNutritionOrderOralDietComponent(xpp));
20651    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplement")) {
20652      res.getSupplement().add(parseNutritionOrderSupplementComponent(xpp));
20653    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteralFormula")) {
20654      res.setEnteralFormula(parseNutritionOrderEnteralFormulaComponent(xpp));
20655    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
20656      res.getNote().add(parseAnnotation(xpp));
20657    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
20658      return false;
20659    }
20660    return true;
20661  }
20662
20663  protected NutritionOrder.NutritionOrderOralDietComponent parseNutritionOrderOralDietComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20664    NutritionOrder.NutritionOrderOralDietComponent res = new NutritionOrder.NutritionOrderOralDietComponent();
20665    parseElementAttributes(xpp, res);
20666    next(xpp);
20667    int eventType = nextNoWhitespace(xpp);
20668    while (eventType != XmlPullParser.END_TAG) {
20669    if (!parseNutritionOrderOralDietComponentContent(eventType, xpp, res))
20670        unknownContent(xpp);
20671      eventType = nextNoWhitespace(xpp);
20672    }
20673    next(xpp);
20674    parseElementClose(res);
20675    return res;
20676  }
20677
20678  protected boolean parseNutritionOrderOralDietComponentContent(int eventType, XmlPullParser xpp, NutritionOrder.NutritionOrderOralDietComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20679    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20680      res.getType().add(parseCodeableConcept(xpp));
20681    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
20682      res.setSchedule(parseNutritionOrderOralDietScheduleComponent(xpp));
20683    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nutrient")) {
20684      res.getNutrient().add(parseNutritionOrderOralDietNutrientComponent(xpp));
20685    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("texture")) {
20686      res.getTexture().add(parseNutritionOrderOralDietTextureComponent(xpp));
20687    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fluidConsistencyType")) {
20688      res.getFluidConsistencyType().add(parseCodeableConcept(xpp));
20689    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
20690      res.setInstructionElement(parseString(xpp));
20691    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20692      return false;
20693    }
20694    return true;
20695  }
20696
20697  protected NutritionOrder.OralDietScheduleComponent parseNutritionOrderOralDietScheduleComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20698    NutritionOrder.OralDietScheduleComponent res = new NutritionOrder.OralDietScheduleComponent();
20699    parseElementAttributes(xpp, res);
20700    next(xpp);
20701    int eventType = nextNoWhitespace(xpp);
20702    while (eventType != XmlPullParser.END_TAG) {
20703    if (!parseNutritionOrderOralDietScheduleComponentContent(eventType, xpp, res))
20704        unknownContent(xpp);
20705      eventType = nextNoWhitespace(xpp);
20706    }
20707    next(xpp);
20708    parseElementClose(res);
20709    return res;
20710  }
20711
20712  protected boolean parseNutritionOrderOralDietScheduleComponentContent(int eventType, XmlPullParser xpp, NutritionOrder.OralDietScheduleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20713    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
20714      res.getTiming().add(parseTiming(xpp));
20715    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asNeeded")) {
20716      res.setAsNeededElement(parseBoolean(xpp));
20717    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asNeededFor")) {
20718      res.setAsNeededFor(parseCodeableConcept(xpp));
20719    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20720      return false;
20721    }
20722    return true;
20723  }
20724
20725  protected NutritionOrder.NutritionOrderOralDietNutrientComponent parseNutritionOrderOralDietNutrientComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20726    NutritionOrder.NutritionOrderOralDietNutrientComponent res = new NutritionOrder.NutritionOrderOralDietNutrientComponent();
20727    parseElementAttributes(xpp, res);
20728    next(xpp);
20729    int eventType = nextNoWhitespace(xpp);
20730    while (eventType != XmlPullParser.END_TAG) {
20731    if (!parseNutritionOrderOralDietNutrientComponentContent(eventType, xpp, res))
20732        unknownContent(xpp);
20733      eventType = nextNoWhitespace(xpp);
20734    }
20735    next(xpp);
20736    parseElementClose(res);
20737    return res;
20738  }
20739
20740  protected boolean parseNutritionOrderOralDietNutrientComponentContent(int eventType, XmlPullParser xpp, NutritionOrder.NutritionOrderOralDietNutrientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20741    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
20742      res.setModifier(parseCodeableConcept(xpp));
20743    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
20744      res.setAmount(parseQuantity(xpp));
20745    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20746      return false;
20747    }
20748    return true;
20749  }
20750
20751  protected NutritionOrder.NutritionOrderOralDietTextureComponent parseNutritionOrderOralDietTextureComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20752    NutritionOrder.NutritionOrderOralDietTextureComponent res = new NutritionOrder.NutritionOrderOralDietTextureComponent();
20753    parseElementAttributes(xpp, res);
20754    next(xpp);
20755    int eventType = nextNoWhitespace(xpp);
20756    while (eventType != XmlPullParser.END_TAG) {
20757    if (!parseNutritionOrderOralDietTextureComponentContent(eventType, xpp, res))
20758        unknownContent(xpp);
20759      eventType = nextNoWhitespace(xpp);
20760    }
20761    next(xpp);
20762    parseElementClose(res);
20763    return res;
20764  }
20765
20766  protected boolean parseNutritionOrderOralDietTextureComponentContent(int eventType, XmlPullParser xpp, NutritionOrder.NutritionOrderOralDietTextureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20767    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
20768      res.setModifier(parseCodeableConcept(xpp));
20769    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodType")) {
20770      res.setFoodType(parseCodeableConcept(xpp));
20771    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20772      return false;
20773    }
20774    return true;
20775  }
20776
20777  protected NutritionOrder.NutritionOrderSupplementComponent parseNutritionOrderSupplementComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20778    NutritionOrder.NutritionOrderSupplementComponent res = new NutritionOrder.NutritionOrderSupplementComponent();
20779    parseElementAttributes(xpp, res);
20780    next(xpp);
20781    int eventType = nextNoWhitespace(xpp);
20782    while (eventType != XmlPullParser.END_TAG) {
20783    if (!parseNutritionOrderSupplementComponentContent(eventType, xpp, res))
20784        unknownContent(xpp);
20785      eventType = nextNoWhitespace(xpp);
20786    }
20787    next(xpp);
20788    parseElementClose(res);
20789    return res;
20790  }
20791
20792  protected boolean parseNutritionOrderSupplementComponentContent(int eventType, XmlPullParser xpp, NutritionOrder.NutritionOrderSupplementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20793    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20794      res.setType(parseCodeableReference(xpp));
20795    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productName")) {
20796      res.setProductNameElement(parseString(xpp));
20797    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
20798      res.setSchedule(parseNutritionOrderSupplementScheduleComponent(xpp));
20799    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
20800      res.setQuantity(parseQuantity(xpp));
20801    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
20802      res.setInstructionElement(parseString(xpp));
20803    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20804      return false;
20805    }
20806    return true;
20807  }
20808
20809  protected NutritionOrder.SupplementScheduleComponent parseNutritionOrderSupplementScheduleComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20810    NutritionOrder.SupplementScheduleComponent res = new NutritionOrder.SupplementScheduleComponent();
20811    parseElementAttributes(xpp, res);
20812    next(xpp);
20813    int eventType = nextNoWhitespace(xpp);
20814    while (eventType != XmlPullParser.END_TAG) {
20815    if (!parseNutritionOrderSupplementScheduleComponentContent(eventType, xpp, res))
20816        unknownContent(xpp);
20817      eventType = nextNoWhitespace(xpp);
20818    }
20819    next(xpp);
20820    parseElementClose(res);
20821    return res;
20822  }
20823
20824  protected boolean parseNutritionOrderSupplementScheduleComponentContent(int eventType, XmlPullParser xpp, NutritionOrder.SupplementScheduleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20825    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
20826      res.getTiming().add(parseTiming(xpp));
20827    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asNeeded")) {
20828      res.setAsNeededElement(parseBoolean(xpp));
20829    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asNeededFor")) {
20830      res.setAsNeededFor(parseCodeableConcept(xpp));
20831    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20832      return false;
20833    }
20834    return true;
20835  }
20836
20837  protected NutritionOrder.NutritionOrderEnteralFormulaComponent parseNutritionOrderEnteralFormulaComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20838    NutritionOrder.NutritionOrderEnteralFormulaComponent res = new NutritionOrder.NutritionOrderEnteralFormulaComponent();
20839    parseElementAttributes(xpp, res);
20840    next(xpp);
20841    int eventType = nextNoWhitespace(xpp);
20842    while (eventType != XmlPullParser.END_TAG) {
20843    if (!parseNutritionOrderEnteralFormulaComponentContent(eventType, xpp, res))
20844        unknownContent(xpp);
20845      eventType = nextNoWhitespace(xpp);
20846    }
20847    next(xpp);
20848    parseElementClose(res);
20849    return res;
20850  }
20851
20852  protected boolean parseNutritionOrderEnteralFormulaComponentContent(int eventType, XmlPullParser xpp, NutritionOrder.NutritionOrderEnteralFormulaComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20853    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaType")) {
20854      res.setBaseFormulaType(parseCodeableReference(xpp));
20855    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaProductName")) {
20856      res.setBaseFormulaProductNameElement(parseString(xpp));
20857    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliveryDevice")) {
20858      res.getDeliveryDevice().add(parseCodeableReference(xpp));
20859    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
20860      res.getAdditive().add(parseNutritionOrderEnteralFormulaAdditiveComponent(xpp));
20861    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caloricDensity")) {
20862      res.setCaloricDensity(parseQuantity(xpp));
20863    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("routeOfAdministration")) {
20864      res.setRouteOfAdministration(parseCodeableConcept(xpp));
20865    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administration")) {
20866      res.getAdministration().add(parseNutritionOrderEnteralFormulaAdministrationComponent(xpp));
20867    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxVolumeToDeliver")) {
20868      res.setMaxVolumeToDeliver(parseQuantity(xpp));
20869    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrationInstruction")) {
20870      res.setAdministrationInstructionElement(parseMarkdown(xpp));
20871    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20872      return false;
20873    }
20874    return true;
20875  }
20876
20877  protected NutritionOrder.NutritionOrderEnteralFormulaAdditiveComponent parseNutritionOrderEnteralFormulaAdditiveComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20878    NutritionOrder.NutritionOrderEnteralFormulaAdditiveComponent res = new NutritionOrder.NutritionOrderEnteralFormulaAdditiveComponent();
20879    parseElementAttributes(xpp, res);
20880    next(xpp);
20881    int eventType = nextNoWhitespace(xpp);
20882    while (eventType != XmlPullParser.END_TAG) {
20883    if (!parseNutritionOrderEnteralFormulaAdditiveComponentContent(eventType, xpp, res))
20884        unknownContent(xpp);
20885      eventType = nextNoWhitespace(xpp);
20886    }
20887    next(xpp);
20888    parseElementClose(res);
20889    return res;
20890  }
20891
20892  protected boolean parseNutritionOrderEnteralFormulaAdditiveComponentContent(int eventType, XmlPullParser xpp, NutritionOrder.NutritionOrderEnteralFormulaAdditiveComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20893    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20894      res.setType(parseCodeableReference(xpp));
20895    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productName")) {
20896      res.setProductNameElement(parseString(xpp));
20897    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
20898      res.setQuantity(parseQuantity(xpp));
20899    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20900      return false;
20901    }
20902    return true;
20903  }
20904
20905  protected NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent parseNutritionOrderEnteralFormulaAdministrationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20906    NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res = new NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent();
20907    parseElementAttributes(xpp, res);
20908    next(xpp);
20909    int eventType = nextNoWhitespace(xpp);
20910    while (eventType != XmlPullParser.END_TAG) {
20911    if (!parseNutritionOrderEnteralFormulaAdministrationComponentContent(eventType, xpp, res))
20912        unknownContent(xpp);
20913      eventType = nextNoWhitespace(xpp);
20914    }
20915    next(xpp);
20916    parseElementClose(res);
20917    return res;
20918  }
20919
20920  protected boolean parseNutritionOrderEnteralFormulaAdministrationComponentContent(int eventType, XmlPullParser xpp, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20921    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
20922      res.setSchedule(parseNutritionOrderEnteralFormulaScheduleComponent(xpp));
20923    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
20924      res.setQuantity(parseQuantity(xpp));
20925    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
20926      res.setRate(parseType("rate", xpp));
20927    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20928      return false;
20929    }
20930    return true;
20931  }
20932
20933  protected NutritionOrder.EnteralFormulaScheduleComponent parseNutritionOrderEnteralFormulaScheduleComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20934    NutritionOrder.EnteralFormulaScheduleComponent res = new NutritionOrder.EnteralFormulaScheduleComponent();
20935    parseElementAttributes(xpp, res);
20936    next(xpp);
20937    int eventType = nextNoWhitespace(xpp);
20938    while (eventType != XmlPullParser.END_TAG) {
20939    if (!parseNutritionOrderEnteralFormulaScheduleComponentContent(eventType, xpp, res))
20940        unknownContent(xpp);
20941      eventType = nextNoWhitespace(xpp);
20942    }
20943    next(xpp);
20944    parseElementClose(res);
20945    return res;
20946  }
20947
20948  protected boolean parseNutritionOrderEnteralFormulaScheduleComponentContent(int eventType, XmlPullParser xpp, NutritionOrder.EnteralFormulaScheduleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20949    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
20950      res.getTiming().add(parseTiming(xpp));
20951    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asNeeded")) {
20952      res.setAsNeededElement(parseBoolean(xpp));
20953    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asNeededFor")) {
20954      res.setAsNeededFor(parseCodeableConcept(xpp));
20955    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
20956      return false;
20957    }
20958    return true;
20959  }
20960
20961  protected NutritionProduct parseNutritionProduct(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20962    NutritionProduct res = new NutritionProduct();
20963    parseResourceAttributes(xpp, res);
20964    next(xpp);
20965    int eventType = nextNoWhitespace(xpp);
20966    while (eventType != XmlPullParser.END_TAG) {
20967    if (!parseNutritionProductContent(eventType, xpp, res))
20968        unknownContent(xpp);
20969      eventType = nextNoWhitespace(xpp);
20970    }
20971    next(xpp);
20972    parseElementClose(res);
20973    return res;
20974  }
20975
20976  protected boolean parseNutritionProductContent(int eventType, XmlPullParser xpp, NutritionProduct res) throws XmlPullParserException, IOException, FHIRFormatError {
20977    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
20978      res.setCode(parseCodeableConcept(xpp));
20979    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20980      res.setStatusElement(parseEnumeration(xpp, NutritionProduct.NutritionProductStatus.NULL, new NutritionProduct.NutritionProductStatusEnumFactory()));
20981    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
20982      res.getCategory().add(parseCodeableConcept(xpp));
20983    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
20984      res.getManufacturer().add(parseReference(xpp));
20985    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nutrient")) {
20986      res.getNutrient().add(parseNutritionProductNutrientComponent(xpp));
20987    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
20988      res.getIngredient().add(parseNutritionProductIngredientComponent(xpp));
20989    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("knownAllergen")) {
20990      res.getKnownAllergen().add(parseCodeableReference(xpp));
20991    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
20992      res.getCharacteristic().add(parseNutritionProductCharacteristicComponent(xpp));
20993    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
20994      res.getInstance().add(parseNutritionProductInstanceComponent(xpp));
20995    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
20996      res.getNote().add(parseAnnotation(xpp));
20997    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
20998      return false;
20999    }
21000    return true;
21001  }
21002
21003  protected NutritionProduct.NutritionProductNutrientComponent parseNutritionProductNutrientComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21004    NutritionProduct.NutritionProductNutrientComponent res = new NutritionProduct.NutritionProductNutrientComponent();
21005    parseElementAttributes(xpp, res);
21006    next(xpp);
21007    int eventType = nextNoWhitespace(xpp);
21008    while (eventType != XmlPullParser.END_TAG) {
21009    if (!parseNutritionProductNutrientComponentContent(eventType, xpp, res))
21010        unknownContent(xpp);
21011      eventType = nextNoWhitespace(xpp);
21012    }
21013    next(xpp);
21014    parseElementClose(res);
21015    return res;
21016  }
21017
21018  protected boolean parseNutritionProductNutrientComponentContent(int eventType, XmlPullParser xpp, NutritionProduct.NutritionProductNutrientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21019    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
21020      res.setItem(parseCodeableReference(xpp));
21021    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
21022      res.getAmount().add(parseRatio(xpp));
21023    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21024      return false;
21025    }
21026    return true;
21027  }
21028
21029  protected NutritionProduct.NutritionProductIngredientComponent parseNutritionProductIngredientComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21030    NutritionProduct.NutritionProductIngredientComponent res = new NutritionProduct.NutritionProductIngredientComponent();
21031    parseElementAttributes(xpp, res);
21032    next(xpp);
21033    int eventType = nextNoWhitespace(xpp);
21034    while (eventType != XmlPullParser.END_TAG) {
21035    if (!parseNutritionProductIngredientComponentContent(eventType, xpp, res))
21036        unknownContent(xpp);
21037      eventType = nextNoWhitespace(xpp);
21038    }
21039    next(xpp);
21040    parseElementClose(res);
21041    return res;
21042  }
21043
21044  protected boolean parseNutritionProductIngredientComponentContent(int eventType, XmlPullParser xpp, NutritionProduct.NutritionProductIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21045    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
21046      res.setItem(parseCodeableReference(xpp));
21047    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
21048      res.getAmount().add(parseRatio(xpp));
21049    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21050      return false;
21051    }
21052    return true;
21053  }
21054
21055  protected NutritionProduct.NutritionProductCharacteristicComponent parseNutritionProductCharacteristicComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21056    NutritionProduct.NutritionProductCharacteristicComponent res = new NutritionProduct.NutritionProductCharacteristicComponent();
21057    parseElementAttributes(xpp, res);
21058    next(xpp);
21059    int eventType = nextNoWhitespace(xpp);
21060    while (eventType != XmlPullParser.END_TAG) {
21061    if (!parseNutritionProductCharacteristicComponentContent(eventType, xpp, res))
21062        unknownContent(xpp);
21063      eventType = nextNoWhitespace(xpp);
21064    }
21065    next(xpp);
21066    parseElementClose(res);
21067    return res;
21068  }
21069
21070  protected boolean parseNutritionProductCharacteristicComponentContent(int eventType, XmlPullParser xpp, NutritionProduct.NutritionProductCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21071    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21072      res.setType(parseCodeableConcept(xpp));
21073    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
21074      res.setValue(parseType("value", xpp));
21075    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21076      return false;
21077    }
21078    return true;
21079  }
21080
21081  protected NutritionProduct.NutritionProductInstanceComponent parseNutritionProductInstanceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21082    NutritionProduct.NutritionProductInstanceComponent res = new NutritionProduct.NutritionProductInstanceComponent();
21083    parseElementAttributes(xpp, res);
21084    next(xpp);
21085    int eventType = nextNoWhitespace(xpp);
21086    while (eventType != XmlPullParser.END_TAG) {
21087    if (!parseNutritionProductInstanceComponentContent(eventType, xpp, res))
21088        unknownContent(xpp);
21089      eventType = nextNoWhitespace(xpp);
21090    }
21091    next(xpp);
21092    parseElementClose(res);
21093    return res;
21094  }
21095
21096  protected boolean parseNutritionProductInstanceComponentContent(int eventType, XmlPullParser xpp, NutritionProduct.NutritionProductInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21097    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
21098      res.setQuantity(parseQuantity(xpp));
21099    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21100      res.getIdentifier().add(parseIdentifier(xpp));
21101    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21102      res.setNameElement(parseString(xpp));
21103    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
21104      res.setLotNumberElement(parseString(xpp));
21105    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expiry")) {
21106      res.setExpiryElement(parseDateTime(xpp));
21107    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useBy")) {
21108      res.setUseByElement(parseDateTime(xpp));
21109    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("biologicalSourceEvent")) {
21110      res.setBiologicalSourceEvent(parseIdentifier(xpp));
21111    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21112      return false;
21113    }
21114    return true;
21115  }
21116
21117  protected Observation parseObservation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21118    Observation res = new Observation();
21119    parseResourceAttributes(xpp, res);
21120    next(xpp);
21121    int eventType = nextNoWhitespace(xpp);
21122    while (eventType != XmlPullParser.END_TAG) {
21123    if (!parseObservationContent(eventType, xpp, res))
21124        unknownContent(xpp);
21125      eventType = nextNoWhitespace(xpp);
21126    }
21127    next(xpp);
21128    parseElementClose(res);
21129    return res;
21130  }
21131
21132  protected boolean parseObservationContent(int eventType, XmlPullParser xpp, Observation res) throws XmlPullParserException, IOException, FHIRFormatError {
21133    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21134      res.getIdentifier().add(parseIdentifier(xpp));
21135    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "instantiates")) {
21136      res.setInstantiates(parseType("instantiates", xpp));
21137    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
21138      res.getBasedOn().add(parseReference(xpp));
21139    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("triggeredBy")) {
21140      res.getTriggeredBy().add(parseObservationTriggeredByComponent(xpp));
21141    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
21142      res.getPartOf().add(parseReference(xpp));
21143    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21144      res.setStatusElement(parseEnumeration(xpp, Enumerations.ObservationStatus.NULL, new Enumerations.ObservationStatusEnumFactory()));
21145    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
21146      res.getCategory().add(parseCodeableConcept(xpp));
21147    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21148      res.setCode(parseCodeableConcept(xpp));
21149    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
21150      res.setSubject(parseReference(xpp));
21151    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
21152      res.getFocus().add(parseReference(xpp));
21153    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
21154      res.setEncounter(parseReference(xpp));
21155    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
21156      res.setEffective(parseType("effective", xpp));
21157    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
21158      res.setIssuedElement(parseInstant(xpp));
21159    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
21160      res.getPerformer().add(parseReference(xpp));
21161    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
21162      res.setValue(parseType("value", xpp));
21163    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
21164      res.setDataAbsentReason(parseCodeableConcept(xpp));
21165    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
21166      res.getInterpretation().add(parseCodeableConcept(xpp));
21167    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
21168      res.getNote().add(parseAnnotation(xpp));
21169    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
21170      res.setBodySite(parseCodeableConcept(xpp));
21171    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodyStructure")) {
21172      res.setBodyStructure(parseReference(xpp));
21173    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
21174      res.setMethod(parseCodeableConcept(xpp));
21175    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
21176      res.setSpecimen(parseReference(xpp));
21177    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
21178      res.setDevice(parseReference(xpp));
21179    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
21180      res.getReferenceRange().add(parseObservationReferenceRangeComponent(xpp));
21181    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hasMember")) {
21182      res.getHasMember().add(parseReference(xpp));
21183    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
21184      res.getDerivedFrom().add(parseReference(xpp));
21185    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
21186      res.getComponent().add(parseObservationComponentComponent(xpp));
21187    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
21188      return false;
21189    }
21190    return true;
21191  }
21192
21193  protected Observation.ObservationTriggeredByComponent parseObservationTriggeredByComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21194    Observation.ObservationTriggeredByComponent res = new Observation.ObservationTriggeredByComponent();
21195    parseElementAttributes(xpp, res);
21196    next(xpp);
21197    int eventType = nextNoWhitespace(xpp);
21198    while (eventType != XmlPullParser.END_TAG) {
21199    if (!parseObservationTriggeredByComponentContent(eventType, xpp, res))
21200        unknownContent(xpp);
21201      eventType = nextNoWhitespace(xpp);
21202    }
21203    next(xpp);
21204    parseElementClose(res);
21205    return res;
21206  }
21207
21208  protected boolean parseObservationTriggeredByComponentContent(int eventType, XmlPullParser xpp, Observation.ObservationTriggeredByComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21209    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observation")) {
21210      res.setObservation(parseReference(xpp));
21211    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21212      res.setTypeElement(parseEnumeration(xpp, Observation.TriggeredBytype.NULL, new Observation.TriggeredBytypeEnumFactory()));
21213    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
21214      res.setReasonElement(parseString(xpp));
21215    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21216      return false;
21217    }
21218    return true;
21219  }
21220
21221  protected Observation.ObservationReferenceRangeComponent parseObservationReferenceRangeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21222    Observation.ObservationReferenceRangeComponent res = new Observation.ObservationReferenceRangeComponent();
21223    parseElementAttributes(xpp, res);
21224    next(xpp);
21225    int eventType = nextNoWhitespace(xpp);
21226    while (eventType != XmlPullParser.END_TAG) {
21227    if (!parseObservationReferenceRangeComponentContent(eventType, xpp, res))
21228        unknownContent(xpp);
21229      eventType = nextNoWhitespace(xpp);
21230    }
21231    next(xpp);
21232    parseElementClose(res);
21233    return res;
21234  }
21235
21236  protected boolean parseObservationReferenceRangeComponentContent(int eventType, XmlPullParser xpp, Observation.ObservationReferenceRangeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21237    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
21238      res.setLow(parseQuantity(xpp));
21239    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
21240      res.setHigh(parseQuantity(xpp));
21241    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("normalValue")) {
21242      res.setNormalValue(parseCodeableConcept(xpp));
21243    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21244      res.setType(parseCodeableConcept(xpp));
21245    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesTo")) {
21246      res.getAppliesTo().add(parseCodeableConcept(xpp));
21247    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("age")) {
21248      res.setAge(parseRange(xpp));
21249    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
21250      res.setTextElement(parseMarkdown(xpp));
21251    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21252      return false;
21253    }
21254    return true;
21255  }
21256
21257  protected Observation.ObservationComponentComponent parseObservationComponentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21258    Observation.ObservationComponentComponent res = new Observation.ObservationComponentComponent();
21259    parseElementAttributes(xpp, res);
21260    next(xpp);
21261    int eventType = nextNoWhitespace(xpp);
21262    while (eventType != XmlPullParser.END_TAG) {
21263    if (!parseObservationComponentComponentContent(eventType, xpp, res))
21264        unknownContent(xpp);
21265      eventType = nextNoWhitespace(xpp);
21266    }
21267    next(xpp);
21268    parseElementClose(res);
21269    return res;
21270  }
21271
21272  protected boolean parseObservationComponentComponentContent(int eventType, XmlPullParser xpp, Observation.ObservationComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21273    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21274      res.setCode(parseCodeableConcept(xpp));
21275    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
21276      res.setValue(parseType("value", xpp));
21277    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
21278      res.setDataAbsentReason(parseCodeableConcept(xpp));
21279    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
21280      res.getInterpretation().add(parseCodeableConcept(xpp));
21281    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
21282      res.getReferenceRange().add(parseObservationReferenceRangeComponent(xpp));
21283    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21284      return false;
21285    }
21286    return true;
21287  }
21288
21289  protected ObservationDefinition parseObservationDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21290    ObservationDefinition res = new ObservationDefinition();
21291    parseResourceAttributes(xpp, res);
21292    next(xpp);
21293    int eventType = nextNoWhitespace(xpp);
21294    while (eventType != XmlPullParser.END_TAG) {
21295    if (!parseObservationDefinitionContent(eventType, xpp, res))
21296        unknownContent(xpp);
21297      eventType = nextNoWhitespace(xpp);
21298    }
21299    next(xpp);
21300    parseElementClose(res);
21301    return res;
21302  }
21303
21304  protected boolean parseObservationDefinitionContent(int eventType, XmlPullParser xpp, ObservationDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
21305    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
21306      res.setUrlElement(parseUri(xpp));
21307    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21308      res.setIdentifier(parseIdentifier(xpp));
21309    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
21310      res.setVersionElement(parseString(xpp));
21311    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
21312      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
21313    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21314      res.setNameElement(parseString(xpp));
21315    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
21316      res.setTitleElement(parseString(xpp));
21317    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21318      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
21319    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
21320      res.setExperimentalElement(parseBoolean(xpp));
21321    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
21322      res.setDateElement(parseDateTime(xpp));
21323    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
21324      res.setPublisherElement(parseString(xpp));
21325    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
21326      res.getContact().add(parseContactDetail(xpp));
21327    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21328      res.setDescriptionElement(parseMarkdown(xpp));
21329    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
21330      res.getUseContext().add(parseUsageContext(xpp));
21331    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
21332      res.getJurisdiction().add(parseCodeableConcept(xpp));
21333    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
21334      res.setPurposeElement(parseMarkdown(xpp));
21335    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
21336      res.setCopyrightElement(parseMarkdown(xpp));
21337    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
21338      res.setCopyrightLabelElement(parseString(xpp));
21339    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
21340      res.setApprovalDateElement(parseDate(xpp));
21341    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
21342      res.setLastReviewDateElement(parseDate(xpp));
21343    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
21344      res.setEffectivePeriod(parsePeriod(xpp));
21345    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFromCanonical")) {
21346      res.getDerivedFromCanonical().add(parseCanonical(xpp));
21347    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFromUri")) {
21348      res.getDerivedFromUri().add(parseUri(xpp));
21349    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
21350      res.getSubject().add(parseCodeableConcept(xpp));
21351    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
21352      res.setPerformerType(parseCodeableConcept(xpp));
21353    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
21354      res.getCategory().add(parseCodeableConcept(xpp));
21355    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21356      res.setCode(parseCodeableConcept(xpp));
21357    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("permittedDataType")) {
21358      res.getPermittedDataType().add(parseEnumeration(xpp, ObservationDefinition.ObservationDataType.NULL, new ObservationDefinition.ObservationDataTypeEnumFactory()));
21359    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleResultsAllowed")) {
21360      res.setMultipleResultsAllowedElement(parseBoolean(xpp));
21361    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
21362      res.setBodySite(parseCodeableConcept(xpp));
21363    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
21364      res.setMethod(parseCodeableConcept(xpp));
21365    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
21366      res.getSpecimen().add(parseReference(xpp));
21367    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
21368      res.getDevice().add(parseReference(xpp));
21369    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferredReportName")) {
21370      res.setPreferredReportNameElement(parseString(xpp));
21371    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("permittedUnit")) {
21372      res.getPermittedUnit().add(parseCoding(xpp));
21373    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualifiedValue")) {
21374      res.getQualifiedValue().add(parseObservationDefinitionQualifiedValueComponent(xpp));
21375    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hasMember")) {
21376      res.getHasMember().add(parseReference(xpp));
21377    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
21378      res.getComponent().add(parseObservationDefinitionComponentComponent(xpp));
21379    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
21380      return false;
21381    }
21382    return true;
21383  }
21384
21385  protected ObservationDefinition.ObservationDefinitionQualifiedValueComponent parseObservationDefinitionQualifiedValueComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21386    ObservationDefinition.ObservationDefinitionQualifiedValueComponent res = new ObservationDefinition.ObservationDefinitionQualifiedValueComponent();
21387    parseElementAttributes(xpp, res);
21388    next(xpp);
21389    int eventType = nextNoWhitespace(xpp);
21390    while (eventType != XmlPullParser.END_TAG) {
21391    if (!parseObservationDefinitionQualifiedValueComponentContent(eventType, xpp, res))
21392        unknownContent(xpp);
21393      eventType = nextNoWhitespace(xpp);
21394    }
21395    next(xpp);
21396    parseElementClose(res);
21397    return res;
21398  }
21399
21400  protected boolean parseObservationDefinitionQualifiedValueComponentContent(int eventType, XmlPullParser xpp, ObservationDefinition.ObservationDefinitionQualifiedValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21401    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
21402      res.setContext(parseCodeableConcept(xpp));
21403    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesTo")) {
21404      res.getAppliesTo().add(parseCodeableConcept(xpp));
21405    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
21406      res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
21407    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("age")) {
21408      res.setAge(parseRange(xpp));
21409    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gestationalAge")) {
21410      res.setGestationalAge(parseRange(xpp));
21411    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
21412      res.setConditionElement(parseString(xpp));
21413    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rangeCategory")) {
21414      res.setRangeCategoryElement(parseEnumeration(xpp, ObservationDefinition.ObservationRangeCategory.NULL, new ObservationDefinition.ObservationRangeCategoryEnumFactory()));
21415    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("range")) {
21416      res.setRange(parseRange(xpp));
21417    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validCodedValueSet")) {
21418      res.setValidCodedValueSetElement(parseCanonical(xpp));
21419    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("normalCodedValueSet")) {
21420      res.setNormalCodedValueSetElement(parseCanonical(xpp));
21421    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abnormalCodedValueSet")) {
21422      res.setAbnormalCodedValueSetElement(parseCanonical(xpp));
21423    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criticalCodedValueSet")) {
21424      res.setCriticalCodedValueSetElement(parseCanonical(xpp));
21425    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21426      return false;
21427    }
21428    return true;
21429  }
21430
21431  protected ObservationDefinition.ObservationDefinitionComponentComponent parseObservationDefinitionComponentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21432    ObservationDefinition.ObservationDefinitionComponentComponent res = new ObservationDefinition.ObservationDefinitionComponentComponent();
21433    parseElementAttributes(xpp, res);
21434    next(xpp);
21435    int eventType = nextNoWhitespace(xpp);
21436    while (eventType != XmlPullParser.END_TAG) {
21437    if (!parseObservationDefinitionComponentComponentContent(eventType, xpp, res))
21438        unknownContent(xpp);
21439      eventType = nextNoWhitespace(xpp);
21440    }
21441    next(xpp);
21442    parseElementClose(res);
21443    return res;
21444  }
21445
21446  protected boolean parseObservationDefinitionComponentComponentContent(int eventType, XmlPullParser xpp, ObservationDefinition.ObservationDefinitionComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21447    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21448      res.setCode(parseCodeableConcept(xpp));
21449    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("permittedDataType")) {
21450      res.getPermittedDataType().add(parseEnumeration(xpp, ObservationDefinition.ObservationDataType.NULL, new ObservationDefinition.ObservationDataTypeEnumFactory()));
21451    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("permittedUnit")) {
21452      res.getPermittedUnit().add(parseCoding(xpp));
21453    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualifiedValue")) {
21454      res.getQualifiedValue().add(parseObservationDefinitionQualifiedValueComponent(xpp));
21455    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21456      return false;
21457    }
21458    return true;
21459  }
21460
21461  protected OperationDefinition parseOperationDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21462    OperationDefinition res = new OperationDefinition();
21463    parseResourceAttributes(xpp, res);
21464    next(xpp);
21465    int eventType = nextNoWhitespace(xpp);
21466    while (eventType != XmlPullParser.END_TAG) {
21467    if (!parseOperationDefinitionContent(eventType, xpp, res))
21468        unknownContent(xpp);
21469      eventType = nextNoWhitespace(xpp);
21470    }
21471    next(xpp);
21472    parseElementClose(res);
21473    return res;
21474  }
21475
21476  protected boolean parseOperationDefinitionContent(int eventType, XmlPullParser xpp, OperationDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
21477    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
21478      res.setUrlElement(parseUri(xpp));
21479    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21480      res.getIdentifier().add(parseIdentifier(xpp));
21481    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
21482      res.setVersionElement(parseString(xpp));
21483    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
21484      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
21485    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21486      res.setNameElement(parseString(xpp));
21487    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
21488      res.setTitleElement(parseString(xpp));
21489    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21490      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
21491    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
21492      res.setKindElement(parseEnumeration(xpp, OperationDefinition.OperationKind.NULL, new OperationDefinition.OperationKindEnumFactory()));
21493    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
21494      res.setExperimentalElement(parseBoolean(xpp));
21495    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
21496      res.setDateElement(parseDateTime(xpp));
21497    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
21498      res.setPublisherElement(parseString(xpp));
21499    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
21500      res.getContact().add(parseContactDetail(xpp));
21501    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21502      res.setDescriptionElement(parseMarkdown(xpp));
21503    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
21504      res.getUseContext().add(parseUsageContext(xpp));
21505    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
21506      res.getJurisdiction().add(parseCodeableConcept(xpp));
21507    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
21508      res.setPurposeElement(parseMarkdown(xpp));
21509    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
21510      res.setCopyrightElement(parseMarkdown(xpp));
21511    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
21512      res.setCopyrightLabelElement(parseString(xpp));
21513    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("affectsState")) {
21514      res.setAffectsStateElement(parseBoolean(xpp));
21515    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21516      res.setCodeElement(parseCode(xpp));
21517    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
21518      res.setCommentElement(parseMarkdown(xpp));
21519    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
21520      res.setBaseElement(parseCanonical(xpp));
21521    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
21522      res.getResource().add(parseEnumeration(xpp, Enumerations.VersionIndependentResourceTypesAll.NULL, new Enumerations.VersionIndependentResourceTypesAllEnumFactory()));
21523    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
21524      res.setSystemElement(parseBoolean(xpp));
21525    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21526      res.setTypeElement(parseBoolean(xpp));
21527    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
21528      res.setInstanceElement(parseBoolean(xpp));
21529    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inputProfile")) {
21530      res.setInputProfileElement(parseCanonical(xpp));
21531    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outputProfile")) {
21532      res.setOutputProfileElement(parseCanonical(xpp));
21533    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
21534      res.getParameter().add(parseOperationDefinitionParameterComponent(xpp));
21535    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overload")) {
21536      res.getOverload().add(parseOperationDefinitionOverloadComponent(xpp));
21537    } else if (!parseCanonicalResourceContent(eventType, xpp, res)){ 
21538      return false;
21539    }
21540    return true;
21541  }
21542
21543  protected OperationDefinition.OperationDefinitionParameterComponent parseOperationDefinitionParameterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21544    OperationDefinition.OperationDefinitionParameterComponent res = new OperationDefinition.OperationDefinitionParameterComponent();
21545    parseElementAttributes(xpp, res);
21546    next(xpp);
21547    int eventType = nextNoWhitespace(xpp);
21548    while (eventType != XmlPullParser.END_TAG) {
21549    if (!parseOperationDefinitionParameterComponentContent(eventType, xpp, res))
21550        unknownContent(xpp);
21551      eventType = nextNoWhitespace(xpp);
21552    }
21553    next(xpp);
21554    parseElementClose(res);
21555    return res;
21556  }
21557
21558  protected boolean parseOperationDefinitionParameterComponentContent(int eventType, XmlPullParser xpp, OperationDefinition.OperationDefinitionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21559    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21560      res.setNameElement(parseCode(xpp));
21561    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
21562      res.setUseElement(parseEnumeration(xpp, Enumerations.OperationParameterUse.NULL, new Enumerations.OperationParameterUseEnumFactory()));
21563    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
21564      res.getScope().add(parseEnumeration(xpp, OperationDefinition.OperationParameterScope.NULL, new OperationDefinition.OperationParameterScopeEnumFactory()));
21565    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
21566      res.setMinElement(parseInteger(xpp));
21567    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
21568      res.setMaxElement(parseString(xpp));
21569    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
21570      res.setDocumentationElement(parseMarkdown(xpp));
21571    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21572      res.setTypeElement(parseEnumeration(xpp, Enumerations.FHIRTypes.NULL, new Enumerations.FHIRTypesEnumFactory()));
21573    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowedType")) {
21574      res.getAllowedType().add(parseEnumeration(xpp, Enumerations.FHIRTypes.NULL, new Enumerations.FHIRTypesEnumFactory()));
21575    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetProfile")) {
21576      res.getTargetProfile().add(parseCanonical(xpp));
21577    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchType")) {
21578      res.setSearchTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
21579    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
21580      res.setBinding(parseOperationDefinitionParameterBindingComponent(xpp));
21581    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencedFrom")) {
21582      res.getReferencedFrom().add(parseOperationDefinitionParameterReferencedFromComponent(xpp));
21583    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
21584      res.getPart().add(parseOperationDefinitionParameterComponent(xpp));
21585    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21586      return false;
21587    }
21588    return true;
21589  }
21590
21591  protected OperationDefinition.OperationDefinitionParameterBindingComponent parseOperationDefinitionParameterBindingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21592    OperationDefinition.OperationDefinitionParameterBindingComponent res = new OperationDefinition.OperationDefinitionParameterBindingComponent();
21593    parseElementAttributes(xpp, res);
21594    next(xpp);
21595    int eventType = nextNoWhitespace(xpp);
21596    while (eventType != XmlPullParser.END_TAG) {
21597    if (!parseOperationDefinitionParameterBindingComponentContent(eventType, xpp, res))
21598        unknownContent(xpp);
21599      eventType = nextNoWhitespace(xpp);
21600    }
21601    next(xpp);
21602    parseElementClose(res);
21603    return res;
21604  }
21605
21606  protected boolean parseOperationDefinitionParameterBindingComponentContent(int eventType, XmlPullParser xpp, OperationDefinition.OperationDefinitionParameterBindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21607    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
21608      res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
21609    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
21610      res.setValueSetElement(parseCanonical(xpp));
21611    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21612      return false;
21613    }
21614    return true;
21615  }
21616
21617  protected OperationDefinition.OperationDefinitionParameterReferencedFromComponent parseOperationDefinitionParameterReferencedFromComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21618    OperationDefinition.OperationDefinitionParameterReferencedFromComponent res = new OperationDefinition.OperationDefinitionParameterReferencedFromComponent();
21619    parseElementAttributes(xpp, res);
21620    next(xpp);
21621    int eventType = nextNoWhitespace(xpp);
21622    while (eventType != XmlPullParser.END_TAG) {
21623    if (!parseOperationDefinitionParameterReferencedFromComponentContent(eventType, xpp, res))
21624        unknownContent(xpp);
21625      eventType = nextNoWhitespace(xpp);
21626    }
21627    next(xpp);
21628    parseElementClose(res);
21629    return res;
21630  }
21631
21632  protected boolean parseOperationDefinitionParameterReferencedFromComponentContent(int eventType, XmlPullParser xpp, OperationDefinition.OperationDefinitionParameterReferencedFromComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21633    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21634      res.setSourceElement(parseString(xpp));
21635    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
21636      res.setSourceIdElement(parseString(xpp));
21637    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21638      return false;
21639    }
21640    return true;
21641  }
21642
21643  protected OperationDefinition.OperationDefinitionOverloadComponent parseOperationDefinitionOverloadComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21644    OperationDefinition.OperationDefinitionOverloadComponent res = new OperationDefinition.OperationDefinitionOverloadComponent();
21645    parseElementAttributes(xpp, res);
21646    next(xpp);
21647    int eventType = nextNoWhitespace(xpp);
21648    while (eventType != XmlPullParser.END_TAG) {
21649    if (!parseOperationDefinitionOverloadComponentContent(eventType, xpp, res))
21650        unknownContent(xpp);
21651      eventType = nextNoWhitespace(xpp);
21652    }
21653    next(xpp);
21654    parseElementClose(res);
21655    return res;
21656  }
21657
21658  protected boolean parseOperationDefinitionOverloadComponentContent(int eventType, XmlPullParser xpp, OperationDefinition.OperationDefinitionOverloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21659    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameterName")) {
21660      res.getParameterName().add(parseString(xpp));
21661    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
21662      res.setCommentElement(parseString(xpp));
21663    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21664      return false;
21665    }
21666    return true;
21667  }
21668
21669  protected OperationOutcome parseOperationOutcome(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21670    OperationOutcome res = new OperationOutcome();
21671    parseResourceAttributes(xpp, res);
21672    next(xpp);
21673    int eventType = nextNoWhitespace(xpp);
21674    while (eventType != XmlPullParser.END_TAG) {
21675    if (!parseOperationOutcomeContent(eventType, xpp, res))
21676        unknownContent(xpp);
21677      eventType = nextNoWhitespace(xpp);
21678    }
21679    next(xpp);
21680    parseElementClose(res);
21681    return res;
21682  }
21683
21684  protected boolean parseOperationOutcomeContent(int eventType, XmlPullParser xpp, OperationOutcome res) throws XmlPullParserException, IOException, FHIRFormatError {
21685    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issue")) {
21686      res.getIssue().add(parseOperationOutcomeIssueComponent(xpp));
21687    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
21688      return false;
21689    }
21690    return true;
21691  }
21692
21693  protected OperationOutcome.OperationOutcomeIssueComponent parseOperationOutcomeIssueComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21694    OperationOutcome.OperationOutcomeIssueComponent res = new OperationOutcome.OperationOutcomeIssueComponent();
21695    parseElementAttributes(xpp, res);
21696    next(xpp);
21697    int eventType = nextNoWhitespace(xpp);
21698    while (eventType != XmlPullParser.END_TAG) {
21699    if (!parseOperationOutcomeIssueComponentContent(eventType, xpp, res))
21700        unknownContent(xpp);
21701      eventType = nextNoWhitespace(xpp);
21702    }
21703    next(xpp);
21704    parseElementClose(res);
21705    return res;
21706  }
21707
21708  protected boolean parseOperationOutcomeIssueComponentContent(int eventType, XmlPullParser xpp, OperationOutcome.OperationOutcomeIssueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21709    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
21710      res.setSeverityElement(parseEnumeration(xpp, OperationOutcome.IssueSeverity.NULL, new OperationOutcome.IssueSeverityEnumFactory()));
21711    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21712      res.setCodeElement(parseEnumeration(xpp, OperationOutcome.IssueType.NULL, new OperationOutcome.IssueTypeEnumFactory()));
21713    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
21714      res.setDetails(parseCodeableConcept(xpp));
21715    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnostics")) {
21716      res.setDiagnosticsElement(parseString(xpp));
21717    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
21718      res.getLocation().add(parseString(xpp));
21719    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
21720      res.getExpression().add(parseString(xpp));
21721    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21722      return false;
21723    }
21724    return true;
21725  }
21726
21727  protected Organization parseOrganization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21728    Organization res = new Organization();
21729    parseResourceAttributes(xpp, res);
21730    next(xpp);
21731    int eventType = nextNoWhitespace(xpp);
21732    while (eventType != XmlPullParser.END_TAG) {
21733    if (!parseOrganizationContent(eventType, xpp, res))
21734        unknownContent(xpp);
21735      eventType = nextNoWhitespace(xpp);
21736    }
21737    next(xpp);
21738    parseElementClose(res);
21739    return res;
21740  }
21741
21742  protected boolean parseOrganizationContent(int eventType, XmlPullParser xpp, Organization res) throws XmlPullParserException, IOException, FHIRFormatError {
21743    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21744      res.getIdentifier().add(parseIdentifier(xpp));
21745    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
21746      res.setActiveElement(parseBoolean(xpp));
21747    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21748      res.getType().add(parseCodeableConcept(xpp));
21749    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21750      res.setNameElement(parseString(xpp));
21751    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
21752      res.getAlias().add(parseString(xpp));
21753    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21754      res.setDescriptionElement(parseMarkdown(xpp));
21755    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
21756      res.getContact().add(parseExtendedContactDetail(xpp));
21757    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
21758      res.setPartOf(parseReference(xpp));
21759    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
21760      res.getEndpoint().add(parseReference(xpp));
21761    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
21762      res.getQualification().add(parseOrganizationQualificationComponent(xpp));
21763    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
21764      return false;
21765    }
21766    return true;
21767  }
21768
21769  protected Organization.OrganizationQualificationComponent parseOrganizationQualificationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21770    Organization.OrganizationQualificationComponent res = new Organization.OrganizationQualificationComponent();
21771    parseElementAttributes(xpp, res);
21772    next(xpp);
21773    int eventType = nextNoWhitespace(xpp);
21774    while (eventType != XmlPullParser.END_TAG) {
21775    if (!parseOrganizationQualificationComponentContent(eventType, xpp, res))
21776        unknownContent(xpp);
21777      eventType = nextNoWhitespace(xpp);
21778    }
21779    next(xpp);
21780    parseElementClose(res);
21781    return res;
21782  }
21783
21784  protected boolean parseOrganizationQualificationComponentContent(int eventType, XmlPullParser xpp, Organization.OrganizationQualificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21785    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21786      res.getIdentifier().add(parseIdentifier(xpp));
21787    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21788      res.setCode(parseCodeableConcept(xpp));
21789    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
21790      res.setPeriod(parsePeriod(xpp));
21791    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
21792      res.setIssuer(parseReference(xpp));
21793    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21794      return false;
21795    }
21796    return true;
21797  }
21798
21799  protected OrganizationAffiliation parseOrganizationAffiliation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21800    OrganizationAffiliation res = new OrganizationAffiliation();
21801    parseResourceAttributes(xpp, res);
21802    next(xpp);
21803    int eventType = nextNoWhitespace(xpp);
21804    while (eventType != XmlPullParser.END_TAG) {
21805    if (!parseOrganizationAffiliationContent(eventType, xpp, res))
21806        unknownContent(xpp);
21807      eventType = nextNoWhitespace(xpp);
21808    }
21809    next(xpp);
21810    parseElementClose(res);
21811    return res;
21812  }
21813
21814  protected boolean parseOrganizationAffiliationContent(int eventType, XmlPullParser xpp, OrganizationAffiliation res) throws XmlPullParserException, IOException, FHIRFormatError {
21815    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21816      res.getIdentifier().add(parseIdentifier(xpp));
21817    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
21818      res.setActiveElement(parseBoolean(xpp));
21819    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
21820      res.setPeriod(parsePeriod(xpp));
21821    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
21822      res.setOrganization(parseReference(xpp));
21823    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participatingOrganization")) {
21824      res.setParticipatingOrganization(parseReference(xpp));
21825    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
21826      res.getNetwork().add(parseReference(xpp));
21827    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21828      res.getCode().add(parseCodeableConcept(xpp));
21829    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
21830      res.getSpecialty().add(parseCodeableConcept(xpp));
21831    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
21832      res.getLocation().add(parseReference(xpp));
21833    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
21834      res.getHealthcareService().add(parseReference(xpp));
21835    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
21836      res.getContact().add(parseExtendedContactDetail(xpp));
21837    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
21838      res.getEndpoint().add(parseReference(xpp));
21839    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
21840      return false;
21841    }
21842    return true;
21843  }
21844
21845  protected PackagedProductDefinition parsePackagedProductDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21846    PackagedProductDefinition res = new PackagedProductDefinition();
21847    parseResourceAttributes(xpp, res);
21848    next(xpp);
21849    int eventType = nextNoWhitespace(xpp);
21850    while (eventType != XmlPullParser.END_TAG) {
21851    if (!parsePackagedProductDefinitionContent(eventType, xpp, res))
21852        unknownContent(xpp);
21853      eventType = nextNoWhitespace(xpp);
21854    }
21855    next(xpp);
21856    parseElementClose(res);
21857    return res;
21858  }
21859
21860  protected boolean parsePackagedProductDefinitionContent(int eventType, XmlPullParser xpp, PackagedProductDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
21861    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21862      res.getIdentifier().add(parseIdentifier(xpp));
21863    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21864      res.setNameElement(parseString(xpp));
21865    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21866      res.setType(parseCodeableConcept(xpp));
21867    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageFor")) {
21868      res.getPackageFor().add(parseReference(xpp));
21869    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21870      res.setStatus(parseCodeableConcept(xpp));
21871    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
21872      res.setStatusDateElement(parseDateTime(xpp));
21873    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("containedItemQuantity")) {
21874      res.getContainedItemQuantity().add(parseQuantity(xpp));
21875    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21876      res.setDescriptionElement(parseMarkdown(xpp));
21877    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalStatusOfSupply")) {
21878      res.getLegalStatusOfSupply().add(parsePackagedProductDefinitionLegalStatusOfSupplyComponent(xpp));
21879    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingStatus")) {
21880      res.getMarketingStatus().add(parseMarketingStatus(xpp));
21881    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copackagedIndicator")) {
21882      res.setCopackagedIndicatorElement(parseBoolean(xpp));
21883    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
21884      res.getManufacturer().add(parseReference(xpp));
21885    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachedDocument")) {
21886      res.getAttachedDocument().add(parseReference(xpp));
21887    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packaging")) {
21888      res.setPackaging(parsePackagedProductDefinitionPackagingComponent(xpp));
21889    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
21890      res.getCharacteristic().add(parsePackagedProductDefinitionPackagingPropertyComponent(xpp));
21891    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
21892      return false;
21893    }
21894    return true;
21895  }
21896
21897  protected PackagedProductDefinition.PackagedProductDefinitionLegalStatusOfSupplyComponent parsePackagedProductDefinitionLegalStatusOfSupplyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21898    PackagedProductDefinition.PackagedProductDefinitionLegalStatusOfSupplyComponent res = new PackagedProductDefinition.PackagedProductDefinitionLegalStatusOfSupplyComponent();
21899    parseElementAttributes(xpp, res);
21900    next(xpp);
21901    int eventType = nextNoWhitespace(xpp);
21902    while (eventType != XmlPullParser.END_TAG) {
21903    if (!parsePackagedProductDefinitionLegalStatusOfSupplyComponentContent(eventType, xpp, res))
21904        unknownContent(xpp);
21905      eventType = nextNoWhitespace(xpp);
21906    }
21907    next(xpp);
21908    parseElementClose(res);
21909    return res;
21910  }
21911
21912  protected boolean parsePackagedProductDefinitionLegalStatusOfSupplyComponentContent(int eventType, XmlPullParser xpp, PackagedProductDefinition.PackagedProductDefinitionLegalStatusOfSupplyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21913    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21914      res.setCode(parseCodeableConcept(xpp));
21915    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
21916      res.setJurisdiction(parseCodeableConcept(xpp));
21917    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21918      return false;
21919    }
21920    return true;
21921  }
21922
21923  protected PackagedProductDefinition.PackagedProductDefinitionPackagingComponent parsePackagedProductDefinitionPackagingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21924    PackagedProductDefinition.PackagedProductDefinitionPackagingComponent res = new PackagedProductDefinition.PackagedProductDefinitionPackagingComponent();
21925    parseElementAttributes(xpp, res);
21926    next(xpp);
21927    int eventType = nextNoWhitespace(xpp);
21928    while (eventType != XmlPullParser.END_TAG) {
21929    if (!parsePackagedProductDefinitionPackagingComponentContent(eventType, xpp, res))
21930        unknownContent(xpp);
21931      eventType = nextNoWhitespace(xpp);
21932    }
21933    next(xpp);
21934    parseElementClose(res);
21935    return res;
21936  }
21937
21938  protected boolean parsePackagedProductDefinitionPackagingComponentContent(int eventType, XmlPullParser xpp, PackagedProductDefinition.PackagedProductDefinitionPackagingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21939    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21940      res.getIdentifier().add(parseIdentifier(xpp));
21941    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21942      res.setType(parseCodeableConcept(xpp));
21943    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("componentPart")) {
21944      res.setComponentPartElement(parseBoolean(xpp));
21945    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
21946      res.setQuantityElement(parseInteger(xpp));
21947    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
21948      res.getMaterial().add(parseCodeableConcept(xpp));
21949    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternateMaterial")) {
21950      res.getAlternateMaterial().add(parseCodeableConcept(xpp));
21951    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shelfLifeStorage")) {
21952      res.getShelfLifeStorage().add(parseProductShelfLife(xpp));
21953    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
21954      res.getManufacturer().add(parseReference(xpp));
21955    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
21956      res.getProperty().add(parsePackagedProductDefinitionPackagingPropertyComponent(xpp));
21957    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("containedItem")) {
21958      res.getContainedItem().add(parsePackagedProductDefinitionPackagingContainedItemComponent(xpp));
21959    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packaging")) {
21960      res.getPackaging().add(parsePackagedProductDefinitionPackagingComponent(xpp));
21961    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21962      return false;
21963    }
21964    return true;
21965  }
21966
21967  protected PackagedProductDefinition.PackagedProductDefinitionPackagingPropertyComponent parsePackagedProductDefinitionPackagingPropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21968    PackagedProductDefinition.PackagedProductDefinitionPackagingPropertyComponent res = new PackagedProductDefinition.PackagedProductDefinitionPackagingPropertyComponent();
21969    parseElementAttributes(xpp, res);
21970    next(xpp);
21971    int eventType = nextNoWhitespace(xpp);
21972    while (eventType != XmlPullParser.END_TAG) {
21973    if (!parsePackagedProductDefinitionPackagingPropertyComponentContent(eventType, xpp, res))
21974        unknownContent(xpp);
21975      eventType = nextNoWhitespace(xpp);
21976    }
21977    next(xpp);
21978    parseElementClose(res);
21979    return res;
21980  }
21981
21982  protected boolean parsePackagedProductDefinitionPackagingPropertyComponentContent(int eventType, XmlPullParser xpp, PackagedProductDefinition.PackagedProductDefinitionPackagingPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21983    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21984      res.setType(parseCodeableConcept(xpp));
21985    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
21986      res.setValue(parseType("value", xpp));
21987    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
21988      return false;
21989    }
21990    return true;
21991  }
21992
21993  protected PackagedProductDefinition.PackagedProductDefinitionPackagingContainedItemComponent parsePackagedProductDefinitionPackagingContainedItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21994    PackagedProductDefinition.PackagedProductDefinitionPackagingContainedItemComponent res = new PackagedProductDefinition.PackagedProductDefinitionPackagingContainedItemComponent();
21995    parseElementAttributes(xpp, res);
21996    next(xpp);
21997    int eventType = nextNoWhitespace(xpp);
21998    while (eventType != XmlPullParser.END_TAG) {
21999    if (!parsePackagedProductDefinitionPackagingContainedItemComponentContent(eventType, xpp, res))
22000        unknownContent(xpp);
22001      eventType = nextNoWhitespace(xpp);
22002    }
22003    next(xpp);
22004    parseElementClose(res);
22005    return res;
22006  }
22007
22008  protected boolean parsePackagedProductDefinitionPackagingContainedItemComponentContent(int eventType, XmlPullParser xpp, PackagedProductDefinition.PackagedProductDefinitionPackagingContainedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22009    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
22010      res.setItem(parseCodeableReference(xpp));
22011    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
22012      res.setAmount(parseQuantity(xpp));
22013    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22014      return false;
22015    }
22016    return true;
22017  }
22018
22019  protected Parameters parseParameters(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22020    Parameters res = new Parameters();
22021    parseResourceAttributes(xpp, res);
22022    next(xpp);
22023    int eventType = nextNoWhitespace(xpp);
22024    while (eventType != XmlPullParser.END_TAG) {
22025    if (!parseParametersContent(eventType, xpp, res))
22026        unknownContent(xpp);
22027      eventType = nextNoWhitespace(xpp);
22028    }
22029    next(xpp);
22030    parseElementClose(res);
22031    return res;
22032  }
22033
22034  protected boolean parseParametersContent(int eventType, XmlPullParser xpp, Parameters res) throws XmlPullParserException, IOException, FHIRFormatError {
22035    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
22036      res.getParameter().add(parseParametersParameterComponent(xpp));
22037    } else if (!parseResourceContent(eventType, xpp, res)){ 
22038      return false;
22039    }
22040    return true;
22041  }
22042
22043  protected Parameters.ParametersParameterComponent parseParametersParameterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22044    Parameters.ParametersParameterComponent res = new Parameters.ParametersParameterComponent();
22045    parseElementAttributes(xpp, res);
22046    next(xpp);
22047    int eventType = nextNoWhitespace(xpp);
22048    while (eventType != XmlPullParser.END_TAG) {
22049    if (!parseParametersParameterComponentContent(eventType, xpp, res))
22050        unknownContent(xpp);
22051      eventType = nextNoWhitespace(xpp);
22052    }
22053    next(xpp);
22054    parseElementClose(res);
22055    return res;
22056  }
22057
22058  protected boolean parseParametersParameterComponentContent(int eventType, XmlPullParser xpp, Parameters.ParametersParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22059    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22060      res.setNameElement(parseString(xpp));
22061    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
22062      res.setValue(parseType("value", xpp));
22063    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
22064      res.setResource(parseResourceContained(xpp));
22065    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
22066      res.getPart().add(parseParametersParameterComponent(xpp));
22067    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22068      return false;
22069    }
22070    return true;
22071  }
22072
22073  protected Patient parsePatient(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22074    Patient res = new Patient();
22075    parseResourceAttributes(xpp, res);
22076    next(xpp);
22077    int eventType = nextNoWhitespace(xpp);
22078    while (eventType != XmlPullParser.END_TAG) {
22079    if (!parsePatientContent(eventType, xpp, res))
22080        unknownContent(xpp);
22081      eventType = nextNoWhitespace(xpp);
22082    }
22083    next(xpp);
22084    parseElementClose(res);
22085    return res;
22086  }
22087
22088  protected boolean parsePatientContent(int eventType, XmlPullParser xpp, Patient res) throws XmlPullParserException, IOException, FHIRFormatError {
22089    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22090      res.getIdentifier().add(parseIdentifier(xpp));
22091    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
22092      res.setActiveElement(parseBoolean(xpp));
22093    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22094      res.getName().add(parseHumanName(xpp));
22095    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
22096      res.getTelecom().add(parseContactPoint(xpp));
22097    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
22098      res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
22099    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
22100      res.setBirthDateElement(parseDate(xpp));
22101    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
22102      res.setDeceased(parseType("deceased", xpp));
22103    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
22104      res.getAddress().add(parseAddress(xpp));
22105    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maritalStatus")) {
22106      res.setMaritalStatus(parseCodeableConcept(xpp));
22107    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "multipleBirth")) {
22108      res.setMultipleBirth(parseType("multipleBirth", xpp));
22109    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
22110      res.getPhoto().add(parseAttachment(xpp));
22111    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
22112      res.getContact().add(parsePatientContactComponent(xpp));
22113    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
22114      res.getCommunication().add(parsePatientCommunicationComponent(xpp));
22115    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generalPractitioner")) {
22116      res.getGeneralPractitioner().add(parseReference(xpp));
22117    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
22118      res.setManagingOrganization(parseReference(xpp));
22119    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
22120      res.getLink().add(parsePatientLinkComponent(xpp));
22121    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
22122      return false;
22123    }
22124    return true;
22125  }
22126
22127  protected Patient.ContactComponent parsePatientContactComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22128    Patient.ContactComponent res = new Patient.ContactComponent();
22129    parseElementAttributes(xpp, res);
22130    next(xpp);
22131    int eventType = nextNoWhitespace(xpp);
22132    while (eventType != XmlPullParser.END_TAG) {
22133    if (!parsePatientContactComponentContent(eventType, xpp, res))
22134        unknownContent(xpp);
22135      eventType = nextNoWhitespace(xpp);
22136    }
22137    next(xpp);
22138    parseElementClose(res);
22139    return res;
22140  }
22141
22142  protected boolean parsePatientContactComponentContent(int eventType, XmlPullParser xpp, Patient.ContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22143    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
22144      res.getRelationship().add(parseCodeableConcept(xpp));
22145    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22146      res.setName(parseHumanName(xpp));
22147    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
22148      res.getTelecom().add(parseContactPoint(xpp));
22149    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
22150      res.setAddress(parseAddress(xpp));
22151    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
22152      res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
22153    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
22154      res.setOrganization(parseReference(xpp));
22155    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
22156      res.setPeriod(parsePeriod(xpp));
22157    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22158      return false;
22159    }
22160    return true;
22161  }
22162
22163  protected Patient.PatientCommunicationComponent parsePatientCommunicationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22164    Patient.PatientCommunicationComponent res = new Patient.PatientCommunicationComponent();
22165    parseElementAttributes(xpp, res);
22166    next(xpp);
22167    int eventType = nextNoWhitespace(xpp);
22168    while (eventType != XmlPullParser.END_TAG) {
22169    if (!parsePatientCommunicationComponentContent(eventType, xpp, res))
22170        unknownContent(xpp);
22171      eventType = nextNoWhitespace(xpp);
22172    }
22173    next(xpp);
22174    parseElementClose(res);
22175    return res;
22176  }
22177
22178  protected boolean parsePatientCommunicationComponentContent(int eventType, XmlPullParser xpp, Patient.PatientCommunicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22179    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
22180      res.setLanguage(parseCodeableConcept(xpp));
22181    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
22182      res.setPreferredElement(parseBoolean(xpp));
22183    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22184      return false;
22185    }
22186    return true;
22187  }
22188
22189  protected Patient.PatientLinkComponent parsePatientLinkComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22190    Patient.PatientLinkComponent res = new Patient.PatientLinkComponent();
22191    parseElementAttributes(xpp, res);
22192    next(xpp);
22193    int eventType = nextNoWhitespace(xpp);
22194    while (eventType != XmlPullParser.END_TAG) {
22195    if (!parsePatientLinkComponentContent(eventType, xpp, res))
22196        unknownContent(xpp);
22197      eventType = nextNoWhitespace(xpp);
22198    }
22199    next(xpp);
22200    parseElementClose(res);
22201    return res;
22202  }
22203
22204  protected boolean parsePatientLinkComponentContent(int eventType, XmlPullParser xpp, Patient.PatientLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22205    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("other")) {
22206      res.setOther(parseReference(xpp));
22207    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22208      res.setTypeElement(parseEnumeration(xpp, Patient.LinkType.NULL, new Patient.LinkTypeEnumFactory()));
22209    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22210      return false;
22211    }
22212    return true;
22213  }
22214
22215  protected PaymentNotice parsePaymentNotice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22216    PaymentNotice res = new PaymentNotice();
22217    parseResourceAttributes(xpp, res);
22218    next(xpp);
22219    int eventType = nextNoWhitespace(xpp);
22220    while (eventType != XmlPullParser.END_TAG) {
22221    if (!parsePaymentNoticeContent(eventType, xpp, res))
22222        unknownContent(xpp);
22223      eventType = nextNoWhitespace(xpp);
22224    }
22225    next(xpp);
22226    parseElementClose(res);
22227    return res;
22228  }
22229
22230  protected boolean parsePaymentNoticeContent(int eventType, XmlPullParser xpp, PaymentNotice res) throws XmlPullParserException, IOException, FHIRFormatError {
22231    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22232      res.getIdentifier().add(parseIdentifier(xpp));
22233    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22234      res.setStatusElement(parseEnumeration(xpp, Enumerations.FinancialResourceStatusCodes.NULL, new Enumerations.FinancialResourceStatusCodesEnumFactory()));
22235    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
22236      res.setRequest(parseReference(xpp));
22237    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
22238      res.setResponse(parseReference(xpp));
22239    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
22240      res.setCreatedElement(parseDateTime(xpp));
22241    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reporter")) {
22242      res.setReporter(parseReference(xpp));
22243    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
22244      res.setPayment(parseReference(xpp));
22245    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentDate")) {
22246      res.setPaymentDateElement(parseDate(xpp));
22247    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
22248      res.setPayee(parseReference(xpp));
22249    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
22250      res.setRecipient(parseReference(xpp));
22251    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
22252      res.setAmount(parseMoney(xpp));
22253    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentStatus")) {
22254      res.setPaymentStatus(parseCodeableConcept(xpp));
22255    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
22256      return false;
22257    }
22258    return true;
22259  }
22260
22261  protected PaymentReconciliation parsePaymentReconciliation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22262    PaymentReconciliation res = new PaymentReconciliation();
22263    parseResourceAttributes(xpp, res);
22264    next(xpp);
22265    int eventType = nextNoWhitespace(xpp);
22266    while (eventType != XmlPullParser.END_TAG) {
22267    if (!parsePaymentReconciliationContent(eventType, xpp, res))
22268        unknownContent(xpp);
22269      eventType = nextNoWhitespace(xpp);
22270    }
22271    next(xpp);
22272    parseElementClose(res);
22273    return res;
22274  }
22275
22276  protected boolean parsePaymentReconciliationContent(int eventType, XmlPullParser xpp, PaymentReconciliation res) throws XmlPullParserException, IOException, FHIRFormatError {
22277    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22278      res.getIdentifier().add(parseIdentifier(xpp));
22279    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22280      res.setType(parseCodeableConcept(xpp));
22281    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22282      res.setStatusElement(parseEnumeration(xpp, Enumerations.FinancialResourceStatusCodes.NULL, new Enumerations.FinancialResourceStatusCodesEnumFactory()));
22283    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
22284      res.setKind(parseCodeableConcept(xpp));
22285    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
22286      res.setPeriod(parsePeriod(xpp));
22287    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
22288      res.setCreatedElement(parseDateTime(xpp));
22289    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
22290      res.setEnterer(parseReference(xpp));
22291    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuerType")) {
22292      res.setIssuerType(parseCodeableConcept(xpp));
22293    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentIssuer")) {
22294      res.setPaymentIssuer(parseReference(xpp));
22295    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
22296      res.setRequest(parseReference(xpp));
22297    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
22298      res.setRequestor(parseReference(xpp));
22299    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
22300      res.setOutcomeElement(parseEnumeration(xpp, PaymentReconciliation.PaymentOutcome.NULL, new PaymentReconciliation.PaymentOutcomeEnumFactory()));
22301    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
22302      res.setDispositionElement(parseString(xpp));
22303    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
22304      res.setDateElement(parseDate(xpp));
22305    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
22306      res.setLocation(parseReference(xpp));
22307    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
22308      res.setMethod(parseCodeableConcept(xpp));
22309    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardBrand")) {
22310      res.setCardBrandElement(parseString(xpp));
22311    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accountNumber")) {
22312      res.setAccountNumberElement(parseString(xpp));
22313    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
22314      res.setExpirationDateElement(parseDate(xpp));
22315    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processor")) {
22316      res.setProcessorElement(parseString(xpp));
22317    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceNumber")) {
22318      res.setReferenceNumberElement(parseString(xpp));
22319    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorization")) {
22320      res.setAuthorizationElement(parseString(xpp));
22321    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tenderedAmount")) {
22322      res.setTenderedAmount(parseMoney(xpp));
22323    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("returnedAmount")) {
22324      res.setReturnedAmount(parseMoney(xpp));
22325    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
22326      res.setAmount(parseMoney(xpp));
22327    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentIdentifier")) {
22328      res.setPaymentIdentifier(parseIdentifier(xpp));
22329    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allocation")) {
22330      res.getAllocation().add(parsePaymentReconciliationAllocationComponent(xpp));
22331    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("formCode")) {
22332      res.setFormCode(parseCodeableConcept(xpp));
22333    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
22334      res.getProcessNote().add(parsePaymentReconciliationNotesComponent(xpp));
22335    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
22336      return false;
22337    }
22338    return true;
22339  }
22340
22341  protected PaymentReconciliation.PaymentReconciliationAllocationComponent parsePaymentReconciliationAllocationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22342    PaymentReconciliation.PaymentReconciliationAllocationComponent res = new PaymentReconciliation.PaymentReconciliationAllocationComponent();
22343    parseElementAttributes(xpp, res);
22344    next(xpp);
22345    int eventType = nextNoWhitespace(xpp);
22346    while (eventType != XmlPullParser.END_TAG) {
22347    if (!parsePaymentReconciliationAllocationComponentContent(eventType, xpp, res))
22348        unknownContent(xpp);
22349      eventType = nextNoWhitespace(xpp);
22350    }
22351    next(xpp);
22352    parseElementClose(res);
22353    return res;
22354  }
22355
22356  protected boolean parsePaymentReconciliationAllocationComponentContent(int eventType, XmlPullParser xpp, PaymentReconciliation.PaymentReconciliationAllocationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22357    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22358      res.setIdentifier(parseIdentifier(xpp));
22359    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("predecessor")) {
22360      res.setPredecessor(parseIdentifier(xpp));
22361    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
22362      res.setTarget(parseReference(xpp));
22363    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "targetItem")) {
22364      res.setTargetItem(parseType("targetItem", xpp));
22365    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
22366      res.setEncounter(parseReference(xpp));
22367    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
22368      res.setAccount(parseReference(xpp));
22369    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22370      res.setType(parseCodeableConcept(xpp));
22371    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("submitter")) {
22372      res.setSubmitter(parseReference(xpp));
22373    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
22374      res.setResponse(parseReference(xpp));
22375    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
22376      res.setDateElement(parseDate(xpp));
22377    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
22378      res.setResponsible(parseReference(xpp));
22379    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
22380      res.setPayee(parseReference(xpp));
22381    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
22382      res.setAmount(parseMoney(xpp));
22383    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22384      return false;
22385    }
22386    return true;
22387  }
22388
22389  protected PaymentReconciliation.NotesComponent parsePaymentReconciliationNotesComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22390    PaymentReconciliation.NotesComponent res = new PaymentReconciliation.NotesComponent();
22391    parseElementAttributes(xpp, res);
22392    next(xpp);
22393    int eventType = nextNoWhitespace(xpp);
22394    while (eventType != XmlPullParser.END_TAG) {
22395    if (!parsePaymentReconciliationNotesComponentContent(eventType, xpp, res))
22396        unknownContent(xpp);
22397      eventType = nextNoWhitespace(xpp);
22398    }
22399    next(xpp);
22400    parseElementClose(res);
22401    return res;
22402  }
22403
22404  protected boolean parsePaymentReconciliationNotesComponentContent(int eventType, XmlPullParser xpp, PaymentReconciliation.NotesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22405    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22406      res.setTypeElement(parseEnumeration(xpp, PaymentReconciliation.NoteType.NULL, new PaymentReconciliation.NoteTypeEnumFactory()));
22407    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
22408      res.setTextElement(parseString(xpp));
22409    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22410      return false;
22411    }
22412    return true;
22413  }
22414
22415  protected Permission parsePermission(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22416    Permission res = new Permission();
22417    parseResourceAttributes(xpp, res);
22418    next(xpp);
22419    int eventType = nextNoWhitespace(xpp);
22420    while (eventType != XmlPullParser.END_TAG) {
22421    if (!parsePermissionContent(eventType, xpp, res))
22422        unknownContent(xpp);
22423      eventType = nextNoWhitespace(xpp);
22424    }
22425    next(xpp);
22426    parseElementClose(res);
22427    return res;
22428  }
22429
22430  protected boolean parsePermissionContent(int eventType, XmlPullParser xpp, Permission res) throws XmlPullParserException, IOException, FHIRFormatError {
22431    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22432      res.setStatusElement(parseEnumeration(xpp, Permission.PermissionStatus.NULL, new Permission.PermissionStatusEnumFactory()));
22433    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
22434      res.setAsserter(parseReference(xpp));
22435    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
22436      res.getDate().add(parseDateTime(xpp));
22437    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validity")) {
22438      res.setValidity(parsePeriod(xpp));
22439    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("justification")) {
22440      res.setJustification(parsePermissionJustificationComponent(xpp));
22441    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("combining")) {
22442      res.setCombiningElement(parseEnumeration(xpp, Permission.PermissionRuleCombining.NULL, new Permission.PermissionRuleCombiningEnumFactory()));
22443    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
22444      res.getRule().add(parsePermissionRuleComponent(xpp));
22445    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
22446      return false;
22447    }
22448    return true;
22449  }
22450
22451  protected Permission.PermissionJustificationComponent parsePermissionJustificationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22452    Permission.PermissionJustificationComponent res = new Permission.PermissionJustificationComponent();
22453    parseElementAttributes(xpp, res);
22454    next(xpp);
22455    int eventType = nextNoWhitespace(xpp);
22456    while (eventType != XmlPullParser.END_TAG) {
22457    if (!parsePermissionJustificationComponentContent(eventType, xpp, res))
22458        unknownContent(xpp);
22459      eventType = nextNoWhitespace(xpp);
22460    }
22461    next(xpp);
22462    parseElementClose(res);
22463    return res;
22464  }
22465
22466  protected boolean parsePermissionJustificationComponentContent(int eventType, XmlPullParser xpp, Permission.PermissionJustificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22467    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
22468      res.getBasis().add(parseCodeableConcept(xpp));
22469    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evidence")) {
22470      res.getEvidence().add(parseReference(xpp));
22471    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22472      return false;
22473    }
22474    return true;
22475  }
22476
22477  protected Permission.RuleComponent parsePermissionRuleComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22478    Permission.RuleComponent res = new Permission.RuleComponent();
22479    parseElementAttributes(xpp, res);
22480    next(xpp);
22481    int eventType = nextNoWhitespace(xpp);
22482    while (eventType != XmlPullParser.END_TAG) {
22483    if (!parsePermissionRuleComponentContent(eventType, xpp, res))
22484        unknownContent(xpp);
22485      eventType = nextNoWhitespace(xpp);
22486    }
22487    next(xpp);
22488    parseElementClose(res);
22489    return res;
22490  }
22491
22492  protected boolean parsePermissionRuleComponentContent(int eventType, XmlPullParser xpp, Permission.RuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22493    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22494      res.setTypeElement(parseEnumeration(xpp, Enumerations.ConsentProvisionType.NULL, new Enumerations.ConsentProvisionTypeEnumFactory()));
22495    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
22496      res.getData().add(parsePermissionRuleDataComponent(xpp));
22497    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
22498      res.getActivity().add(parsePermissionRuleActivityComponent(xpp));
22499    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("limit")) {
22500      res.getLimit().add(parseCodeableConcept(xpp));
22501    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22502      return false;
22503    }
22504    return true;
22505  }
22506
22507  protected Permission.RuleDataComponent parsePermissionRuleDataComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22508    Permission.RuleDataComponent res = new Permission.RuleDataComponent();
22509    parseElementAttributes(xpp, res);
22510    next(xpp);
22511    int eventType = nextNoWhitespace(xpp);
22512    while (eventType != XmlPullParser.END_TAG) {
22513    if (!parsePermissionRuleDataComponentContent(eventType, xpp, res))
22514        unknownContent(xpp);
22515      eventType = nextNoWhitespace(xpp);
22516    }
22517    next(xpp);
22518    parseElementClose(res);
22519    return res;
22520  }
22521
22522  protected boolean parsePermissionRuleDataComponentContent(int eventType, XmlPullParser xpp, Permission.RuleDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22523    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
22524      res.getResource().add(parsePermissionRuleDataResourceComponent(xpp));
22525    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
22526      res.getSecurity().add(parseCoding(xpp));
22527    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
22528      res.getPeriod().add(parsePeriod(xpp));
22529    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
22530      res.setExpression(parseExpression(xpp));
22531    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22532      return false;
22533    }
22534    return true;
22535  }
22536
22537  protected Permission.RuleDataResourceComponent parsePermissionRuleDataResourceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22538    Permission.RuleDataResourceComponent res = new Permission.RuleDataResourceComponent();
22539    parseElementAttributes(xpp, res);
22540    next(xpp);
22541    int eventType = nextNoWhitespace(xpp);
22542    while (eventType != XmlPullParser.END_TAG) {
22543    if (!parsePermissionRuleDataResourceComponentContent(eventType, xpp, res))
22544        unknownContent(xpp);
22545      eventType = nextNoWhitespace(xpp);
22546    }
22547    next(xpp);
22548    parseElementClose(res);
22549    return res;
22550  }
22551
22552  protected boolean parsePermissionRuleDataResourceComponentContent(int eventType, XmlPullParser xpp, Permission.RuleDataResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22553    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaning")) {
22554      res.setMeaningElement(parseEnumeration(xpp, Enumerations.ConsentDataMeaning.NULL, new Enumerations.ConsentDataMeaningEnumFactory()));
22555    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
22556      res.setReference(parseReference(xpp));
22557    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22558      return false;
22559    }
22560    return true;
22561  }
22562
22563  protected Permission.RuleActivityComponent parsePermissionRuleActivityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22564    Permission.RuleActivityComponent res = new Permission.RuleActivityComponent();
22565    parseElementAttributes(xpp, res);
22566    next(xpp);
22567    int eventType = nextNoWhitespace(xpp);
22568    while (eventType != XmlPullParser.END_TAG) {
22569    if (!parsePermissionRuleActivityComponentContent(eventType, xpp, res))
22570        unknownContent(xpp);
22571      eventType = nextNoWhitespace(xpp);
22572    }
22573    next(xpp);
22574    parseElementClose(res);
22575    return res;
22576  }
22577
22578  protected boolean parsePermissionRuleActivityComponentContent(int eventType, XmlPullParser xpp, Permission.RuleActivityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22579    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
22580      res.getActor().add(parseReference(xpp));
22581    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
22582      res.getAction().add(parseCodeableConcept(xpp));
22583    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
22584      res.getPurpose().add(parseCodeableConcept(xpp));
22585    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22586      return false;
22587    }
22588    return true;
22589  }
22590
22591  protected Person parsePerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22592    Person res = new Person();
22593    parseResourceAttributes(xpp, res);
22594    next(xpp);
22595    int eventType = nextNoWhitespace(xpp);
22596    while (eventType != XmlPullParser.END_TAG) {
22597    if (!parsePersonContent(eventType, xpp, res))
22598        unknownContent(xpp);
22599      eventType = nextNoWhitespace(xpp);
22600    }
22601    next(xpp);
22602    parseElementClose(res);
22603    return res;
22604  }
22605
22606  protected boolean parsePersonContent(int eventType, XmlPullParser xpp, Person res) throws XmlPullParserException, IOException, FHIRFormatError {
22607    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22608      res.getIdentifier().add(parseIdentifier(xpp));
22609    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
22610      res.setActiveElement(parseBoolean(xpp));
22611    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22612      res.getName().add(parseHumanName(xpp));
22613    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
22614      res.getTelecom().add(parseContactPoint(xpp));
22615    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
22616      res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
22617    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
22618      res.setBirthDateElement(parseDate(xpp));
22619    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
22620      res.setDeceased(parseType("deceased", xpp));
22621    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
22622      res.getAddress().add(parseAddress(xpp));
22623    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maritalStatus")) {
22624      res.setMaritalStatus(parseCodeableConcept(xpp));
22625    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
22626      res.getPhoto().add(parseAttachment(xpp));
22627    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
22628      res.getCommunication().add(parsePersonCommunicationComponent(xpp));
22629    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
22630      res.setManagingOrganization(parseReference(xpp));
22631    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
22632      res.getLink().add(parsePersonLinkComponent(xpp));
22633    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
22634      return false;
22635    }
22636    return true;
22637  }
22638
22639  protected Person.PersonCommunicationComponent parsePersonCommunicationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22640    Person.PersonCommunicationComponent res = new Person.PersonCommunicationComponent();
22641    parseElementAttributes(xpp, res);
22642    next(xpp);
22643    int eventType = nextNoWhitespace(xpp);
22644    while (eventType != XmlPullParser.END_TAG) {
22645    if (!parsePersonCommunicationComponentContent(eventType, xpp, res))
22646        unknownContent(xpp);
22647      eventType = nextNoWhitespace(xpp);
22648    }
22649    next(xpp);
22650    parseElementClose(res);
22651    return res;
22652  }
22653
22654  protected boolean parsePersonCommunicationComponentContent(int eventType, XmlPullParser xpp, Person.PersonCommunicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22655    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
22656      res.setLanguage(parseCodeableConcept(xpp));
22657    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
22658      res.setPreferredElement(parseBoolean(xpp));
22659    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22660      return false;
22661    }
22662    return true;
22663  }
22664
22665  protected Person.PersonLinkComponent parsePersonLinkComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22666    Person.PersonLinkComponent res = new Person.PersonLinkComponent();
22667    parseElementAttributes(xpp, res);
22668    next(xpp);
22669    int eventType = nextNoWhitespace(xpp);
22670    while (eventType != XmlPullParser.END_TAG) {
22671    if (!parsePersonLinkComponentContent(eventType, xpp, res))
22672        unknownContent(xpp);
22673      eventType = nextNoWhitespace(xpp);
22674    }
22675    next(xpp);
22676    parseElementClose(res);
22677    return res;
22678  }
22679
22680  protected boolean parsePersonLinkComponentContent(int eventType, XmlPullParser xpp, Person.PersonLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22681    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
22682      res.setTarget(parseReference(xpp));
22683    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assurance")) {
22684      res.setAssuranceElement(parseEnumeration(xpp, Person.IdentityAssuranceLevel.NULL, new Person.IdentityAssuranceLevelEnumFactory()));
22685    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22686      return false;
22687    }
22688    return true;
22689  }
22690
22691  protected PlanDefinition parsePlanDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22692    PlanDefinition res = new PlanDefinition();
22693    parseResourceAttributes(xpp, res);
22694    next(xpp);
22695    int eventType = nextNoWhitespace(xpp);
22696    while (eventType != XmlPullParser.END_TAG) {
22697    if (!parsePlanDefinitionContent(eventType, xpp, res))
22698        unknownContent(xpp);
22699      eventType = nextNoWhitespace(xpp);
22700    }
22701    next(xpp);
22702    parseElementClose(res);
22703    return res;
22704  }
22705
22706  protected boolean parsePlanDefinitionContent(int eventType, XmlPullParser xpp, PlanDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
22707    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
22708      res.setUrlElement(parseUri(xpp));
22709    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22710      res.getIdentifier().add(parseIdentifier(xpp));
22711    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
22712      res.setVersionElement(parseString(xpp));
22713    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
22714      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
22715    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22716      res.setNameElement(parseString(xpp));
22717    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
22718      res.setTitleElement(parseString(xpp));
22719    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
22720      res.setSubtitleElement(parseString(xpp));
22721    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22722      res.setType(parseCodeableConcept(xpp));
22723    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22724      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
22725    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
22726      res.setExperimentalElement(parseBoolean(xpp));
22727    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
22728      res.setSubject(parseType("subject", xpp));
22729    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
22730      res.setDateElement(parseDateTime(xpp));
22731    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
22732      res.setPublisherElement(parseString(xpp));
22733    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
22734      res.getContact().add(parseContactDetail(xpp));
22735    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22736      res.setDescriptionElement(parseMarkdown(xpp));
22737    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
22738      res.getUseContext().add(parseUsageContext(xpp));
22739    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
22740      res.getJurisdiction().add(parseCodeableConcept(xpp));
22741    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
22742      res.setPurposeElement(parseMarkdown(xpp));
22743    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
22744      res.setUsageElement(parseMarkdown(xpp));
22745    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
22746      res.setCopyrightElement(parseMarkdown(xpp));
22747    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
22748      res.setCopyrightLabelElement(parseString(xpp));
22749    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
22750      res.setApprovalDateElement(parseDate(xpp));
22751    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
22752      res.setLastReviewDateElement(parseDate(xpp));
22753    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
22754      res.setEffectivePeriod(parsePeriod(xpp));
22755    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
22756      res.getTopic().add(parseCodeableConcept(xpp));
22757    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
22758      res.getAuthor().add(parseContactDetail(xpp));
22759    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
22760      res.getEditor().add(parseContactDetail(xpp));
22761    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
22762      res.getReviewer().add(parseContactDetail(xpp));
22763    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
22764      res.getEndorser().add(parseContactDetail(xpp));
22765    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
22766      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
22767    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
22768      res.getLibrary().add(parseCanonical(xpp));
22769    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
22770      res.getGoal().add(parsePlanDefinitionGoalComponent(xpp));
22771    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
22772      res.getActor().add(parsePlanDefinitionActorComponent(xpp));
22773    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
22774      res.getAction().add(parsePlanDefinitionActionComponent(xpp));
22775    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
22776      res.setAsNeeded(parseType("asNeeded", xpp));
22777    } else if (!parseMetadataResourceContent(eventType, xpp, res)){ 
22778      return false;
22779    }
22780    return true;
22781  }
22782
22783  protected PlanDefinition.PlanDefinitionGoalComponent parsePlanDefinitionGoalComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22784    PlanDefinition.PlanDefinitionGoalComponent res = new PlanDefinition.PlanDefinitionGoalComponent();
22785    parseElementAttributes(xpp, res);
22786    next(xpp);
22787    int eventType = nextNoWhitespace(xpp);
22788    while (eventType != XmlPullParser.END_TAG) {
22789    if (!parsePlanDefinitionGoalComponentContent(eventType, xpp, res))
22790        unknownContent(xpp);
22791      eventType = nextNoWhitespace(xpp);
22792    }
22793    next(xpp);
22794    parseElementClose(res);
22795    return res;
22796  }
22797
22798  protected boolean parsePlanDefinitionGoalComponentContent(int eventType, XmlPullParser xpp, PlanDefinition.PlanDefinitionGoalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22799    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
22800      res.setCategory(parseCodeableConcept(xpp));
22801    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22802      res.setDescription(parseCodeableConcept(xpp));
22803    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
22804      res.setPriority(parseCodeableConcept(xpp));
22805    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
22806      res.setStart(parseCodeableConcept(xpp));
22807    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
22808      res.getAddresses().add(parseCodeableConcept(xpp));
22809    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
22810      res.getDocumentation().add(parseRelatedArtifact(xpp));
22811    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
22812      res.getTarget().add(parsePlanDefinitionGoalTargetComponent(xpp));
22813    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22814      return false;
22815    }
22816    return true;
22817  }
22818
22819  protected PlanDefinition.PlanDefinitionGoalTargetComponent parsePlanDefinitionGoalTargetComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22820    PlanDefinition.PlanDefinitionGoalTargetComponent res = new PlanDefinition.PlanDefinitionGoalTargetComponent();
22821    parseElementAttributes(xpp, res);
22822    next(xpp);
22823    int eventType = nextNoWhitespace(xpp);
22824    while (eventType != XmlPullParser.END_TAG) {
22825    if (!parsePlanDefinitionGoalTargetComponentContent(eventType, xpp, res))
22826        unknownContent(xpp);
22827      eventType = nextNoWhitespace(xpp);
22828    }
22829    next(xpp);
22830    parseElementClose(res);
22831    return res;
22832  }
22833
22834  protected boolean parsePlanDefinitionGoalTargetComponentContent(int eventType, XmlPullParser xpp, PlanDefinition.PlanDefinitionGoalTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22835    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
22836      res.setMeasure(parseCodeableConcept(xpp));
22837    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "detail")) {
22838      res.setDetail(parseType("detail", xpp));
22839    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("due")) {
22840      res.setDue(parseDuration(xpp));
22841    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22842      return false;
22843    }
22844    return true;
22845  }
22846
22847  protected PlanDefinition.PlanDefinitionActorComponent parsePlanDefinitionActorComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22848    PlanDefinition.PlanDefinitionActorComponent res = new PlanDefinition.PlanDefinitionActorComponent();
22849    parseElementAttributes(xpp, res);
22850    next(xpp);
22851    int eventType = nextNoWhitespace(xpp);
22852    while (eventType != XmlPullParser.END_TAG) {
22853    if (!parsePlanDefinitionActorComponentContent(eventType, xpp, res))
22854        unknownContent(xpp);
22855      eventType = nextNoWhitespace(xpp);
22856    }
22857    next(xpp);
22858    parseElementClose(res);
22859    return res;
22860  }
22861
22862  protected boolean parsePlanDefinitionActorComponentContent(int eventType, XmlPullParser xpp, PlanDefinition.PlanDefinitionActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22863    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
22864      res.setTitleElement(parseString(xpp));
22865    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22866      res.setDescriptionElement(parseMarkdown(xpp));
22867    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("option")) {
22868      res.getOption().add(parsePlanDefinitionActorOptionComponent(xpp));
22869    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22870      return false;
22871    }
22872    return true;
22873  }
22874
22875  protected PlanDefinition.PlanDefinitionActorOptionComponent parsePlanDefinitionActorOptionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22876    PlanDefinition.PlanDefinitionActorOptionComponent res = new PlanDefinition.PlanDefinitionActorOptionComponent();
22877    parseElementAttributes(xpp, res);
22878    next(xpp);
22879    int eventType = nextNoWhitespace(xpp);
22880    while (eventType != XmlPullParser.END_TAG) {
22881    if (!parsePlanDefinitionActorOptionComponentContent(eventType, xpp, res))
22882        unknownContent(xpp);
22883      eventType = nextNoWhitespace(xpp);
22884    }
22885    next(xpp);
22886    parseElementClose(res);
22887    return res;
22888  }
22889
22890  protected boolean parsePlanDefinitionActorOptionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition.PlanDefinitionActorOptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22891    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22892      res.setTypeElement(parseEnumeration(xpp, Enumerations.ActionParticipantType.NULL, new Enumerations.ActionParticipantTypeEnumFactory()));
22893    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeCanonical")) {
22894      res.setTypeCanonicalElement(parseCanonical(xpp));
22895    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeReference")) {
22896      res.setTypeReference(parseReference(xpp));
22897    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
22898      res.setRole(parseCodeableConcept(xpp));
22899    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22900      return false;
22901    }
22902    return true;
22903  }
22904
22905  protected PlanDefinition.PlanDefinitionActionComponent parsePlanDefinitionActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22906    PlanDefinition.PlanDefinitionActionComponent res = new PlanDefinition.PlanDefinitionActionComponent();
22907    parseElementAttributes(xpp, res);
22908    next(xpp);
22909    int eventType = nextNoWhitespace(xpp);
22910    while (eventType != XmlPullParser.END_TAG) {
22911    if (!parsePlanDefinitionActionComponentContent(eventType, xpp, res))
22912        unknownContent(xpp);
22913      eventType = nextNoWhitespace(xpp);
22914    }
22915    next(xpp);
22916    parseElementClose(res);
22917    return res;
22918  }
22919
22920  protected boolean parsePlanDefinitionActionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition.PlanDefinitionActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22921    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
22922      res.setLinkIdElement(parseString(xpp));
22923    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
22924      res.setPrefixElement(parseString(xpp));
22925    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
22926      res.setTitleElement(parseString(xpp));
22927    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22928      res.setDescriptionElement(parseMarkdown(xpp));
22929    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
22930      res.setTextEquivalentElement(parseMarkdown(xpp));
22931    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
22932      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
22933    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
22934      res.setCode(parseCodeableConcept(xpp));
22935    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
22936      res.getReason().add(parseCodeableConcept(xpp));
22937    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
22938      res.getDocumentation().add(parseRelatedArtifact(xpp));
22939    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goalId")) {
22940      res.getGoalId().add(parseId(xpp));
22941    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
22942      res.setSubject(parseType("subject", xpp));
22943    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("trigger")) {
22944      res.getTrigger().add(parseTriggerDefinition(xpp));
22945    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
22946      res.getCondition().add(parsePlanDefinitionActionConditionComponent(xpp));
22947    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
22948      res.getInput().add(parsePlanDefinitionActionInputComponent(xpp));
22949    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
22950      res.getOutput().add(parsePlanDefinitionActionOutputComponent(xpp));
22951    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
22952      res.getRelatedAction().add(parsePlanDefinitionActionRelatedActionComponent(xpp));
22953    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
22954      res.setTiming(parseType("timing", xpp));
22955    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
22956      res.setLocation(parseCodeableReference(xpp));
22957    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
22958      res.getParticipant().add(parsePlanDefinitionActionParticipantComponent(xpp));
22959    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22960      res.setType(parseCodeableConcept(xpp));
22961    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingBehavior")) {
22962      res.setGroupingBehaviorElement(parseEnumeration(xpp, Enumerations.ActionGroupingBehavior.NULL, new Enumerations.ActionGroupingBehaviorEnumFactory()));
22963    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("selectionBehavior")) {
22964      res.setSelectionBehaviorElement(parseEnumeration(xpp, Enumerations.ActionSelectionBehavior.NULL, new Enumerations.ActionSelectionBehaviorEnumFactory()));
22965    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requiredBehavior")) {
22966      res.setRequiredBehaviorElement(parseEnumeration(xpp, Enumerations.ActionRequiredBehavior.NULL, new Enumerations.ActionRequiredBehaviorEnumFactory()));
22967    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precheckBehavior")) {
22968      res.setPrecheckBehaviorElement(parseEnumeration(xpp, Enumerations.ActionPrecheckBehavior.NULL, new Enumerations.ActionPrecheckBehaviorEnumFactory()));
22969    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardinalityBehavior")) {
22970      res.setCardinalityBehaviorElement(parseEnumeration(xpp, Enumerations.ActionCardinalityBehavior.NULL, new Enumerations.ActionCardinalityBehaviorEnumFactory()));
22971    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "definition")) {
22972      res.setDefinition(parseType("definition", xpp));
22973    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
22974      res.setTransformElement(parseCanonical(xpp));
22975    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
22976      res.getDynamicValue().add(parsePlanDefinitionActionDynamicValueComponent(xpp));
22977    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
22978      res.getAction().add(parsePlanDefinitionActionComponent(xpp));
22979    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
22980      return false;
22981    }
22982    return true;
22983  }
22984
22985  protected PlanDefinition.PlanDefinitionActionConditionComponent parsePlanDefinitionActionConditionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22986    PlanDefinition.PlanDefinitionActionConditionComponent res = new PlanDefinition.PlanDefinitionActionConditionComponent();
22987    parseElementAttributes(xpp, res);
22988    next(xpp);
22989    int eventType = nextNoWhitespace(xpp);
22990    while (eventType != XmlPullParser.END_TAG) {
22991    if (!parsePlanDefinitionActionConditionComponentContent(eventType, xpp, res))
22992        unknownContent(xpp);
22993      eventType = nextNoWhitespace(xpp);
22994    }
22995    next(xpp);
22996    parseElementClose(res);
22997    return res;
22998  }
22999
23000  protected boolean parsePlanDefinitionActionConditionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition.PlanDefinitionActionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23001    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
23002      res.setKindElement(parseEnumeration(xpp, Enumerations.ActionConditionKind.NULL, new Enumerations.ActionConditionKindEnumFactory()));
23003    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
23004      res.setExpression(parseExpression(xpp));
23005    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23006      return false;
23007    }
23008    return true;
23009  }
23010
23011  protected PlanDefinition.PlanDefinitionActionInputComponent parsePlanDefinitionActionInputComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23012    PlanDefinition.PlanDefinitionActionInputComponent res = new PlanDefinition.PlanDefinitionActionInputComponent();
23013    parseElementAttributes(xpp, res);
23014    next(xpp);
23015    int eventType = nextNoWhitespace(xpp);
23016    while (eventType != XmlPullParser.END_TAG) {
23017    if (!parsePlanDefinitionActionInputComponentContent(eventType, xpp, res))
23018        unknownContent(xpp);
23019      eventType = nextNoWhitespace(xpp);
23020    }
23021    next(xpp);
23022    parseElementClose(res);
23023    return res;
23024  }
23025
23026  protected boolean parsePlanDefinitionActionInputComponentContent(int eventType, XmlPullParser xpp, PlanDefinition.PlanDefinitionActionInputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23027    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
23028      res.setTitleElement(parseString(xpp));
23029    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
23030      res.setRequirement(parseDataRequirement(xpp));
23031    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedData")) {
23032      res.setRelatedDataElement(parseId(xpp));
23033    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23034      return false;
23035    }
23036    return true;
23037  }
23038
23039  protected PlanDefinition.PlanDefinitionActionOutputComponent parsePlanDefinitionActionOutputComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23040    PlanDefinition.PlanDefinitionActionOutputComponent res = new PlanDefinition.PlanDefinitionActionOutputComponent();
23041    parseElementAttributes(xpp, res);
23042    next(xpp);
23043    int eventType = nextNoWhitespace(xpp);
23044    while (eventType != XmlPullParser.END_TAG) {
23045    if (!parsePlanDefinitionActionOutputComponentContent(eventType, xpp, res))
23046        unknownContent(xpp);
23047      eventType = nextNoWhitespace(xpp);
23048    }
23049    next(xpp);
23050    parseElementClose(res);
23051    return res;
23052  }
23053
23054  protected boolean parsePlanDefinitionActionOutputComponentContent(int eventType, XmlPullParser xpp, PlanDefinition.PlanDefinitionActionOutputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23055    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
23056      res.setTitleElement(parseString(xpp));
23057    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
23058      res.setRequirement(parseDataRequirement(xpp));
23059    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedData")) {
23060      res.setRelatedDataElement(parseString(xpp));
23061    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23062      return false;
23063    }
23064    return true;
23065  }
23066
23067  protected PlanDefinition.PlanDefinitionActionRelatedActionComponent parsePlanDefinitionActionRelatedActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23068    PlanDefinition.PlanDefinitionActionRelatedActionComponent res = new PlanDefinition.PlanDefinitionActionRelatedActionComponent();
23069    parseElementAttributes(xpp, res);
23070    next(xpp);
23071    int eventType = nextNoWhitespace(xpp);
23072    while (eventType != XmlPullParser.END_TAG) {
23073    if (!parsePlanDefinitionActionRelatedActionComponentContent(eventType, xpp, res))
23074        unknownContent(xpp);
23075      eventType = nextNoWhitespace(xpp);
23076    }
23077    next(xpp);
23078    parseElementClose(res);
23079    return res;
23080  }
23081
23082  protected boolean parsePlanDefinitionActionRelatedActionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition.PlanDefinitionActionRelatedActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23083    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetId")) {
23084      res.setTargetIdElement(parseId(xpp));
23085    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
23086      res.setRelationshipElement(parseEnumeration(xpp, Enumerations.ActionRelationshipType.NULL, new Enumerations.ActionRelationshipTypeEnumFactory()));
23087    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endRelationship")) {
23088      res.setEndRelationshipElement(parseEnumeration(xpp, Enumerations.ActionRelationshipType.NULL, new Enumerations.ActionRelationshipTypeEnumFactory()));
23089    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
23090      res.setOffset(parseType("offset", xpp));
23091    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23092      return false;
23093    }
23094    return true;
23095  }
23096
23097  protected PlanDefinition.PlanDefinitionActionParticipantComponent parsePlanDefinitionActionParticipantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23098    PlanDefinition.PlanDefinitionActionParticipantComponent res = new PlanDefinition.PlanDefinitionActionParticipantComponent();
23099    parseElementAttributes(xpp, res);
23100    next(xpp);
23101    int eventType = nextNoWhitespace(xpp);
23102    while (eventType != XmlPullParser.END_TAG) {
23103    if (!parsePlanDefinitionActionParticipantComponentContent(eventType, xpp, res))
23104        unknownContent(xpp);
23105      eventType = nextNoWhitespace(xpp);
23106    }
23107    next(xpp);
23108    parseElementClose(res);
23109    return res;
23110  }
23111
23112  protected boolean parsePlanDefinitionActionParticipantComponentContent(int eventType, XmlPullParser xpp, PlanDefinition.PlanDefinitionActionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23113    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actorId")) {
23114      res.setActorIdElement(parseString(xpp));
23115    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
23116      res.setTypeElement(parseEnumeration(xpp, Enumerations.ActionParticipantType.NULL, new Enumerations.ActionParticipantTypeEnumFactory()));
23117    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeCanonical")) {
23118      res.setTypeCanonicalElement(parseCanonical(xpp));
23119    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeReference")) {
23120      res.setTypeReference(parseReference(xpp));
23121    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
23122      res.setRole(parseCodeableConcept(xpp));
23123    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
23124      res.setFunction(parseCodeableConcept(xpp));
23125    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23126      return false;
23127    }
23128    return true;
23129  }
23130
23131  protected PlanDefinition.PlanDefinitionActionDynamicValueComponent parsePlanDefinitionActionDynamicValueComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23132    PlanDefinition.PlanDefinitionActionDynamicValueComponent res = new PlanDefinition.PlanDefinitionActionDynamicValueComponent();
23133    parseElementAttributes(xpp, res);
23134    next(xpp);
23135    int eventType = nextNoWhitespace(xpp);
23136    while (eventType != XmlPullParser.END_TAG) {
23137    if (!parsePlanDefinitionActionDynamicValueComponentContent(eventType, xpp, res))
23138        unknownContent(xpp);
23139      eventType = nextNoWhitespace(xpp);
23140    }
23141    next(xpp);
23142    parseElementClose(res);
23143    return res;
23144  }
23145
23146  protected boolean parsePlanDefinitionActionDynamicValueComponentContent(int eventType, XmlPullParser xpp, PlanDefinition.PlanDefinitionActionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23147    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
23148      res.setPathElement(parseString(xpp));
23149    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
23150      res.setExpression(parseExpression(xpp));
23151    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23152      return false;
23153    }
23154    return true;
23155  }
23156
23157  protected Practitioner parsePractitioner(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23158    Practitioner res = new Practitioner();
23159    parseResourceAttributes(xpp, res);
23160    next(xpp);
23161    int eventType = nextNoWhitespace(xpp);
23162    while (eventType != XmlPullParser.END_TAG) {
23163    if (!parsePractitionerContent(eventType, xpp, res))
23164        unknownContent(xpp);
23165      eventType = nextNoWhitespace(xpp);
23166    }
23167    next(xpp);
23168    parseElementClose(res);
23169    return res;
23170  }
23171
23172  protected boolean parsePractitionerContent(int eventType, XmlPullParser xpp, Practitioner res) throws XmlPullParserException, IOException, FHIRFormatError {
23173    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
23174      res.getIdentifier().add(parseIdentifier(xpp));
23175    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
23176      res.setActiveElement(parseBoolean(xpp));
23177    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
23178      res.getName().add(parseHumanName(xpp));
23179    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
23180      res.getTelecom().add(parseContactPoint(xpp));
23181    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
23182      res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
23183    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
23184      res.setBirthDateElement(parseDate(xpp));
23185    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
23186      res.setDeceased(parseType("deceased", xpp));
23187    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
23188      res.getAddress().add(parseAddress(xpp));
23189    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
23190      res.getPhoto().add(parseAttachment(xpp));
23191    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
23192      res.getQualification().add(parsePractitionerQualificationComponent(xpp));
23193    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
23194      res.getCommunication().add(parsePractitionerCommunicationComponent(xpp));
23195    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
23196      return false;
23197    }
23198    return true;
23199  }
23200
23201  protected Practitioner.PractitionerQualificationComponent parsePractitionerQualificationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23202    Practitioner.PractitionerQualificationComponent res = new Practitioner.PractitionerQualificationComponent();
23203    parseElementAttributes(xpp, res);
23204    next(xpp);
23205    int eventType = nextNoWhitespace(xpp);
23206    while (eventType != XmlPullParser.END_TAG) {
23207    if (!parsePractitionerQualificationComponentContent(eventType, xpp, res))
23208        unknownContent(xpp);
23209      eventType = nextNoWhitespace(xpp);
23210    }
23211    next(xpp);
23212    parseElementClose(res);
23213    return res;
23214  }
23215
23216  protected boolean parsePractitionerQualificationComponentContent(int eventType, XmlPullParser xpp, Practitioner.PractitionerQualificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23217    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
23218      res.getIdentifier().add(parseIdentifier(xpp));
23219    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
23220      res.setCode(parseCodeableConcept(xpp));
23221    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
23222      res.setPeriod(parsePeriod(xpp));
23223    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
23224      res.setIssuer(parseReference(xpp));
23225    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23226      return false;
23227    }
23228    return true;
23229  }
23230
23231  protected Practitioner.PractitionerCommunicationComponent parsePractitionerCommunicationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23232    Practitioner.PractitionerCommunicationComponent res = new Practitioner.PractitionerCommunicationComponent();
23233    parseElementAttributes(xpp, res);
23234    next(xpp);
23235    int eventType = nextNoWhitespace(xpp);
23236    while (eventType != XmlPullParser.END_TAG) {
23237    if (!parsePractitionerCommunicationComponentContent(eventType, xpp, res))
23238        unknownContent(xpp);
23239      eventType = nextNoWhitespace(xpp);
23240    }
23241    next(xpp);
23242    parseElementClose(res);
23243    return res;
23244  }
23245
23246  protected boolean parsePractitionerCommunicationComponentContent(int eventType, XmlPullParser xpp, Practitioner.PractitionerCommunicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23247    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
23248      res.setLanguage(parseCodeableConcept(xpp));
23249    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
23250      res.setPreferredElement(parseBoolean(xpp));
23251    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23252      return false;
23253    }
23254    return true;
23255  }
23256
23257  protected PractitionerRole parsePractitionerRole(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23258    PractitionerRole res = new PractitionerRole();
23259    parseResourceAttributes(xpp, res);
23260    next(xpp);
23261    int eventType = nextNoWhitespace(xpp);
23262    while (eventType != XmlPullParser.END_TAG) {
23263    if (!parsePractitionerRoleContent(eventType, xpp, res))
23264        unknownContent(xpp);
23265      eventType = nextNoWhitespace(xpp);
23266    }
23267    next(xpp);
23268    parseElementClose(res);
23269    return res;
23270  }
23271
23272  protected boolean parsePractitionerRoleContent(int eventType, XmlPullParser xpp, PractitionerRole res) throws XmlPullParserException, IOException, FHIRFormatError {
23273    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
23274      res.getIdentifier().add(parseIdentifier(xpp));
23275    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
23276      res.setActiveElement(parseBoolean(xpp));
23277    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
23278      res.setPeriod(parsePeriod(xpp));
23279    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practitioner")) {
23280      res.setPractitioner(parseReference(xpp));
23281    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
23282      res.setOrganization(parseReference(xpp));
23283    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
23284      res.getCode().add(parseCodeableConcept(xpp));
23285    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
23286      res.getSpecialty().add(parseCodeableConcept(xpp));
23287    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
23288      res.getLocation().add(parseReference(xpp));
23289    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
23290      res.getHealthcareService().add(parseReference(xpp));
23291    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
23292      res.getContact().add(parseExtendedContactDetail(xpp));
23293    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
23294      res.getCharacteristic().add(parseCodeableConcept(xpp));
23295    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
23296      res.getCommunication().add(parseCodeableConcept(xpp));
23297    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availability")) {
23298      res.getAvailability().add(parseAvailability(xpp));
23299    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
23300      res.getEndpoint().add(parseReference(xpp));
23301    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
23302      return false;
23303    }
23304    return true;
23305  }
23306
23307  protected Procedure parseProcedure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23308    Procedure res = new Procedure();
23309    parseResourceAttributes(xpp, res);
23310    next(xpp);
23311    int eventType = nextNoWhitespace(xpp);
23312    while (eventType != XmlPullParser.END_TAG) {
23313    if (!parseProcedureContent(eventType, xpp, res))
23314        unknownContent(xpp);
23315      eventType = nextNoWhitespace(xpp);
23316    }
23317    next(xpp);
23318    parseElementClose(res);
23319    return res;
23320  }
23321
23322  protected boolean parseProcedureContent(int eventType, XmlPullParser xpp, Procedure res) throws XmlPullParserException, IOException, FHIRFormatError {
23323    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
23324      res.getIdentifier().add(parseIdentifier(xpp));
23325    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
23326      res.getInstantiatesCanonical().add(parseCanonical(xpp));
23327    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
23328      res.getInstantiatesUri().add(parseUri(xpp));
23329    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
23330      res.getBasedOn().add(parseReference(xpp));
23331    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
23332      res.getPartOf().add(parseReference(xpp));
23333    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
23334      res.setStatusElement(parseEnumeration(xpp, Enumerations.EventStatus.NULL, new Enumerations.EventStatusEnumFactory()));
23335    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
23336      res.setStatusReason(parseCodeableConcept(xpp));
23337    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
23338      res.getCategory().add(parseCodeableConcept(xpp));
23339    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
23340      res.setCode(parseCodeableConcept(xpp));
23341    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
23342      res.setSubject(parseReference(xpp));
23343    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
23344      res.setFocus(parseReference(xpp));
23345    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
23346      res.setEncounter(parseReference(xpp));
23347    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
23348      res.setOccurrence(parseType("occurrence", xpp));
23349    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
23350      res.setRecordedElement(parseDateTime(xpp));
23351    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
23352      res.setRecorder(parseReference(xpp));
23353    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reported")) {
23354      res.setReported(parseType("reported", xpp));
23355    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
23356      res.getPerformer().add(parseProcedurePerformerComponent(xpp));
23357    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
23358      res.setLocation(parseReference(xpp));
23359    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
23360      res.getReason().add(parseCodeableReference(xpp));
23361    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
23362      res.getBodySite().add(parseCodeableConcept(xpp));
23363    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
23364      res.setOutcome(parseCodeableConcept(xpp));
23365    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("report")) {
23366      res.getReport().add(parseReference(xpp));
23367    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complication")) {
23368      res.getComplication().add(parseCodeableReference(xpp));
23369    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("followUp")) {
23370      res.getFollowUp().add(parseCodeableConcept(xpp));
23371    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
23372      res.getNote().add(parseAnnotation(xpp));
23373    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focalDevice")) {
23374      res.getFocalDevice().add(parseProcedureFocalDeviceComponent(xpp));
23375    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("used")) {
23376      res.getUsed().add(parseCodeableReference(xpp));
23377    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
23378      res.getSupportingInfo().add(parseReference(xpp));
23379    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
23380      return false;
23381    }
23382    return true;
23383  }
23384
23385  protected Procedure.ProcedurePerformerComponent parseProcedurePerformerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23386    Procedure.ProcedurePerformerComponent res = new Procedure.ProcedurePerformerComponent();
23387    parseElementAttributes(xpp, res);
23388    next(xpp);
23389    int eventType = nextNoWhitespace(xpp);
23390    while (eventType != XmlPullParser.END_TAG) {
23391    if (!parseProcedurePerformerComponentContent(eventType, xpp, res))
23392        unknownContent(xpp);
23393      eventType = nextNoWhitespace(xpp);
23394    }
23395    next(xpp);
23396    parseElementClose(res);
23397    return res;
23398  }
23399
23400  protected boolean parseProcedurePerformerComponentContent(int eventType, XmlPullParser xpp, Procedure.ProcedurePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23401    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
23402      res.setFunction(parseCodeableConcept(xpp));
23403    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
23404      res.setActor(parseReference(xpp));
23405    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
23406      res.setOnBehalfOf(parseReference(xpp));
23407    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
23408      res.setPeriod(parsePeriod(xpp));
23409    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23410      return false;
23411    }
23412    return true;
23413  }
23414
23415  protected Procedure.ProcedureFocalDeviceComponent parseProcedureFocalDeviceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23416    Procedure.ProcedureFocalDeviceComponent res = new Procedure.ProcedureFocalDeviceComponent();
23417    parseElementAttributes(xpp, res);
23418    next(xpp);
23419    int eventType = nextNoWhitespace(xpp);
23420    while (eventType != XmlPullParser.END_TAG) {
23421    if (!parseProcedureFocalDeviceComponentContent(eventType, xpp, res))
23422        unknownContent(xpp);
23423      eventType = nextNoWhitespace(xpp);
23424    }
23425    next(xpp);
23426    parseElementClose(res);
23427    return res;
23428  }
23429
23430  protected boolean parseProcedureFocalDeviceComponentContent(int eventType, XmlPullParser xpp, Procedure.ProcedureFocalDeviceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23431    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
23432      res.setAction(parseCodeableConcept(xpp));
23433    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manipulated")) {
23434      res.setManipulated(parseReference(xpp));
23435    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23436      return false;
23437    }
23438    return true;
23439  }
23440
23441  protected Provenance parseProvenance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23442    Provenance res = new Provenance();
23443    parseResourceAttributes(xpp, res);
23444    next(xpp);
23445    int eventType = nextNoWhitespace(xpp);
23446    while (eventType != XmlPullParser.END_TAG) {
23447    if (!parseProvenanceContent(eventType, xpp, res))
23448        unknownContent(xpp);
23449      eventType = nextNoWhitespace(xpp);
23450    }
23451    next(xpp);
23452    parseElementClose(res);
23453    return res;
23454  }
23455
23456  protected boolean parseProvenanceContent(int eventType, XmlPullParser xpp, Provenance res) throws XmlPullParserException, IOException, FHIRFormatError {
23457    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
23458      res.getTarget().add(parseReference(xpp));
23459    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurred")) {
23460      res.setOccurred(parseType("occurred", xpp));
23461    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
23462      res.setRecordedElement(parseInstant(xpp));
23463    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
23464      res.getPolicy().add(parseUri(xpp));
23465    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
23466      res.setLocation(parseReference(xpp));
23467    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorization")) {
23468      res.getAuthorization().add(parseCodeableReference(xpp));
23469    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
23470      res.setActivity(parseCodeableConcept(xpp));
23471    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
23472      res.getBasedOn().add(parseReference(xpp));
23473    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
23474      res.setPatient(parseReference(xpp));
23475    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
23476      res.setEncounter(parseReference(xpp));
23477    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
23478      res.getAgent().add(parseProvenanceAgentComponent(xpp));
23479    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
23480      res.getEntity().add(parseProvenanceEntityComponent(xpp));
23481    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
23482      res.getSignature().add(parseSignature(xpp));
23483    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
23484      return false;
23485    }
23486    return true;
23487  }
23488
23489  protected Provenance.ProvenanceAgentComponent parseProvenanceAgentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23490    Provenance.ProvenanceAgentComponent res = new Provenance.ProvenanceAgentComponent();
23491    parseElementAttributes(xpp, res);
23492    next(xpp);
23493    int eventType = nextNoWhitespace(xpp);
23494    while (eventType != XmlPullParser.END_TAG) {
23495    if (!parseProvenanceAgentComponentContent(eventType, xpp, res))
23496        unknownContent(xpp);
23497      eventType = nextNoWhitespace(xpp);
23498    }
23499    next(xpp);
23500    parseElementClose(res);
23501    return res;
23502  }
23503
23504  protected boolean parseProvenanceAgentComponentContent(int eventType, XmlPullParser xpp, Provenance.ProvenanceAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23505    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
23506      res.setType(parseCodeableConcept(xpp));
23507    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
23508      res.getRole().add(parseCodeableConcept(xpp));
23509    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
23510      res.setWho(parseReference(xpp));
23511    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
23512      res.setOnBehalfOf(parseReference(xpp));
23513    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23514      return false;
23515    }
23516    return true;
23517  }
23518
23519  protected Provenance.ProvenanceEntityComponent parseProvenanceEntityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23520    Provenance.ProvenanceEntityComponent res = new Provenance.ProvenanceEntityComponent();
23521    parseElementAttributes(xpp, res);
23522    next(xpp);
23523    int eventType = nextNoWhitespace(xpp);
23524    while (eventType != XmlPullParser.END_TAG) {
23525    if (!parseProvenanceEntityComponentContent(eventType, xpp, res))
23526        unknownContent(xpp);
23527      eventType = nextNoWhitespace(xpp);
23528    }
23529    next(xpp);
23530    parseElementClose(res);
23531    return res;
23532  }
23533
23534  protected boolean parseProvenanceEntityComponentContent(int eventType, XmlPullParser xpp, Provenance.ProvenanceEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23535    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
23536      res.setRoleElement(parseEnumeration(xpp, Provenance.ProvenanceEntityRole.NULL, new Provenance.ProvenanceEntityRoleEnumFactory()));
23537    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("what")) {
23538      res.setWhat(parseReference(xpp));
23539    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
23540      res.getAgent().add(parseProvenanceAgentComponent(xpp));
23541    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23542      return false;
23543    }
23544    return true;
23545  }
23546
23547  protected Questionnaire parseQuestionnaire(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23548    Questionnaire res = new Questionnaire();
23549    parseResourceAttributes(xpp, res);
23550    next(xpp);
23551    int eventType = nextNoWhitespace(xpp);
23552    while (eventType != XmlPullParser.END_TAG) {
23553    if (!parseQuestionnaireContent(eventType, xpp, res))
23554        unknownContent(xpp);
23555      eventType = nextNoWhitespace(xpp);
23556    }
23557    next(xpp);
23558    parseElementClose(res);
23559    return res;
23560  }
23561
23562  protected boolean parseQuestionnaireContent(int eventType, XmlPullParser xpp, Questionnaire res) throws XmlPullParserException, IOException, FHIRFormatError {
23563    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
23564      res.setUrlElement(parseUri(xpp));
23565    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
23566      res.getIdentifier().add(parseIdentifier(xpp));
23567    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
23568      res.setVersionElement(parseString(xpp));
23569    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
23570      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
23571    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
23572      res.setNameElement(parseString(xpp));
23573    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
23574      res.setTitleElement(parseString(xpp));
23575    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
23576      res.getDerivedFrom().add(parseCanonical(xpp));
23577    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
23578      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
23579    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
23580      res.setExperimentalElement(parseBoolean(xpp));
23581    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectType")) {
23582      res.getSubjectType().add(parseCode(xpp));
23583    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
23584      res.setDateElement(parseDateTime(xpp));
23585    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
23586      res.setPublisherElement(parseString(xpp));
23587    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
23588      res.getContact().add(parseContactDetail(xpp));
23589    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
23590      res.setDescriptionElement(parseMarkdown(xpp));
23591    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
23592      res.getUseContext().add(parseUsageContext(xpp));
23593    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
23594      res.getJurisdiction().add(parseCodeableConcept(xpp));
23595    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
23596      res.setPurposeElement(parseMarkdown(xpp));
23597    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
23598      res.setCopyrightElement(parseMarkdown(xpp));
23599    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
23600      res.setCopyrightLabelElement(parseString(xpp));
23601    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
23602      res.setApprovalDateElement(parseDate(xpp));
23603    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
23604      res.setLastReviewDateElement(parseDate(xpp));
23605    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
23606      res.setEffectivePeriod(parsePeriod(xpp));
23607    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
23608      res.getCode().add(parseCoding(xpp));
23609    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
23610      res.getItem().add(parseQuestionnaireItemComponent(xpp));
23611    } else if (!parseMetadataResourceContent(eventType, xpp, res)){ 
23612      return false;
23613    }
23614    return true;
23615  }
23616
23617  protected Questionnaire.QuestionnaireItemComponent parseQuestionnaireItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23618    Questionnaire.QuestionnaireItemComponent res = new Questionnaire.QuestionnaireItemComponent();
23619    parseElementAttributes(xpp, res);
23620    next(xpp);
23621    int eventType = nextNoWhitespace(xpp);
23622    while (eventType != XmlPullParser.END_TAG) {
23623    if (!parseQuestionnaireItemComponentContent(eventType, xpp, res))
23624        unknownContent(xpp);
23625      eventType = nextNoWhitespace(xpp);
23626    }
23627    next(xpp);
23628    parseElementClose(res);
23629    return res;
23630  }
23631
23632  protected boolean parseQuestionnaireItemComponentContent(int eventType, XmlPullParser xpp, Questionnaire.QuestionnaireItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23633    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
23634      res.setLinkIdElement(parseString(xpp));
23635    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
23636      res.setDefinitionElement(parseUri(xpp));
23637    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
23638      res.getCode().add(parseCoding(xpp));
23639    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
23640      res.setPrefixElement(parseString(xpp));
23641    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
23642      res.setTextElement(parseString(xpp));
23643    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
23644      res.setTypeElement(parseEnumeration(xpp, Questionnaire.QuestionnaireItemType.NULL, new Questionnaire.QuestionnaireItemTypeEnumFactory()));
23645    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enableWhen")) {
23646      res.getEnableWhen().add(parseQuestionnaireItemEnableWhenComponent(xpp));
23647    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enableBehavior")) {
23648      res.setEnableBehaviorElement(parseEnumeration(xpp, Questionnaire.EnableWhenBehavior.NULL, new Questionnaire.EnableWhenBehaviorEnumFactory()));
23649    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disabledDisplay")) {
23650      res.setDisabledDisplayElement(parseEnumeration(xpp, Questionnaire.QuestionnaireItemDisabledDisplay.NULL, new Questionnaire.QuestionnaireItemDisabledDisplayEnumFactory()));
23651    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
23652      res.setRequiredElement(parseBoolean(xpp));
23653    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeats")) {
23654      res.setRepeatsElement(parseBoolean(xpp));
23655    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readOnly")) {
23656      res.setReadOnlyElement(parseBoolean(xpp));
23657    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
23658      res.setMaxLengthElement(parseInteger(xpp));
23659    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answerConstraint")) {
23660      res.setAnswerConstraintElement(parseEnumeration(xpp, Questionnaire.QuestionnaireAnswerConstraint.NULL, new Questionnaire.QuestionnaireAnswerConstraintEnumFactory()));
23661    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answerValueSet")) {
23662      res.setAnswerValueSetElement(parseCanonical(xpp));
23663    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answerOption")) {
23664      res.getAnswerOption().add(parseQuestionnaireItemAnswerOptionComponent(xpp));
23665    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initial")) {
23666      res.getInitial().add(parseQuestionnaireItemInitialComponent(xpp));
23667    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
23668      res.getItem().add(parseQuestionnaireItemComponent(xpp));
23669    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23670      return false;
23671    }
23672    return true;
23673  }
23674
23675  protected Questionnaire.QuestionnaireItemEnableWhenComponent parseQuestionnaireItemEnableWhenComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23676    Questionnaire.QuestionnaireItemEnableWhenComponent res = new Questionnaire.QuestionnaireItemEnableWhenComponent();
23677    parseElementAttributes(xpp, res);
23678    next(xpp);
23679    int eventType = nextNoWhitespace(xpp);
23680    while (eventType != XmlPullParser.END_TAG) {
23681    if (!parseQuestionnaireItemEnableWhenComponentContent(eventType, xpp, res))
23682        unknownContent(xpp);
23683      eventType = nextNoWhitespace(xpp);
23684    }
23685    next(xpp);
23686    parseElementClose(res);
23687    return res;
23688  }
23689
23690  protected boolean parseQuestionnaireItemEnableWhenComponentContent(int eventType, XmlPullParser xpp, Questionnaire.QuestionnaireItemEnableWhenComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23691    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("question")) {
23692      res.setQuestionElement(parseString(xpp));
23693    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
23694      res.setOperatorElement(parseEnumeration(xpp, Questionnaire.QuestionnaireItemOperator.NULL, new Questionnaire.QuestionnaireItemOperatorEnumFactory()));
23695    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "answer")) {
23696      res.setAnswer(parseType("answer", xpp));
23697    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23698      return false;
23699    }
23700    return true;
23701  }
23702
23703  protected Questionnaire.QuestionnaireItemAnswerOptionComponent parseQuestionnaireItemAnswerOptionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23704    Questionnaire.QuestionnaireItemAnswerOptionComponent res = new Questionnaire.QuestionnaireItemAnswerOptionComponent();
23705    parseElementAttributes(xpp, res);
23706    next(xpp);
23707    int eventType = nextNoWhitespace(xpp);
23708    while (eventType != XmlPullParser.END_TAG) {
23709    if (!parseQuestionnaireItemAnswerOptionComponentContent(eventType, xpp, res))
23710        unknownContent(xpp);
23711      eventType = nextNoWhitespace(xpp);
23712    }
23713    next(xpp);
23714    parseElementClose(res);
23715    return res;
23716  }
23717
23718  protected boolean parseQuestionnaireItemAnswerOptionComponentContent(int eventType, XmlPullParser xpp, Questionnaire.QuestionnaireItemAnswerOptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23719    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
23720      res.setValue(parseType("value", xpp));
23721    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initialSelected")) {
23722      res.setInitialSelectedElement(parseBoolean(xpp));
23723    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23724      return false;
23725    }
23726    return true;
23727  }
23728
23729  protected Questionnaire.QuestionnaireItemInitialComponent parseQuestionnaireItemInitialComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23730    Questionnaire.QuestionnaireItemInitialComponent res = new Questionnaire.QuestionnaireItemInitialComponent();
23731    parseElementAttributes(xpp, res);
23732    next(xpp);
23733    int eventType = nextNoWhitespace(xpp);
23734    while (eventType != XmlPullParser.END_TAG) {
23735    if (!parseQuestionnaireItemInitialComponentContent(eventType, xpp, res))
23736        unknownContent(xpp);
23737      eventType = nextNoWhitespace(xpp);
23738    }
23739    next(xpp);
23740    parseElementClose(res);
23741    return res;
23742  }
23743
23744  protected boolean parseQuestionnaireItemInitialComponentContent(int eventType, XmlPullParser xpp, Questionnaire.QuestionnaireItemInitialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23745    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
23746      res.setValue(parseType("value", xpp));
23747    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23748      return false;
23749    }
23750    return true;
23751  }
23752
23753  protected QuestionnaireResponse parseQuestionnaireResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23754    QuestionnaireResponse res = new QuestionnaireResponse();
23755    parseResourceAttributes(xpp, res);
23756    next(xpp);
23757    int eventType = nextNoWhitespace(xpp);
23758    while (eventType != XmlPullParser.END_TAG) {
23759    if (!parseQuestionnaireResponseContent(eventType, xpp, res))
23760        unknownContent(xpp);
23761      eventType = nextNoWhitespace(xpp);
23762    }
23763    next(xpp);
23764    parseElementClose(res);
23765    return res;
23766  }
23767
23768  protected boolean parseQuestionnaireResponseContent(int eventType, XmlPullParser xpp, QuestionnaireResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
23769    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
23770      res.getIdentifier().add(parseIdentifier(xpp));
23771    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
23772      res.getBasedOn().add(parseReference(xpp));
23773    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
23774      res.getPartOf().add(parseReference(xpp));
23775    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("questionnaire")) {
23776      res.setQuestionnaireElement(parseCanonical(xpp));
23777    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
23778      res.setStatusElement(parseEnumeration(xpp, QuestionnaireResponse.QuestionnaireResponseStatus.NULL, new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory()));
23779    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
23780      res.setSubject(parseReference(xpp));
23781    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
23782      res.setEncounter(parseReference(xpp));
23783    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authored")) {
23784      res.setAuthoredElement(parseDateTime(xpp));
23785    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
23786      res.setAuthor(parseReference(xpp));
23787    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
23788      res.setSource(parseReference(xpp));
23789    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
23790      res.getItem().add(parseQuestionnaireResponseItemComponent(xpp));
23791    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
23792      return false;
23793    }
23794    return true;
23795  }
23796
23797  protected QuestionnaireResponse.QuestionnaireResponseItemComponent parseQuestionnaireResponseItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23798    QuestionnaireResponse.QuestionnaireResponseItemComponent res = new QuestionnaireResponse.QuestionnaireResponseItemComponent();
23799    parseElementAttributes(xpp, res);
23800    next(xpp);
23801    int eventType = nextNoWhitespace(xpp);
23802    while (eventType != XmlPullParser.END_TAG) {
23803    if (!parseQuestionnaireResponseItemComponentContent(eventType, xpp, res))
23804        unknownContent(xpp);
23805      eventType = nextNoWhitespace(xpp);
23806    }
23807    next(xpp);
23808    parseElementClose(res);
23809    return res;
23810  }
23811
23812  protected boolean parseQuestionnaireResponseItemComponentContent(int eventType, XmlPullParser xpp, QuestionnaireResponse.QuestionnaireResponseItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23813    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
23814      res.setLinkIdElement(parseString(xpp));
23815    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
23816      res.setDefinitionElement(parseUri(xpp));
23817    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
23818      res.setTextElement(parseString(xpp));
23819    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
23820      res.getAnswer().add(parseQuestionnaireResponseItemAnswerComponent(xpp));
23821    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
23822      res.getItem().add(parseQuestionnaireResponseItemComponent(xpp));
23823    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23824      return false;
23825    }
23826    return true;
23827  }
23828
23829  protected QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent parseQuestionnaireResponseItemAnswerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23830    QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res = new QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent();
23831    parseElementAttributes(xpp, res);
23832    next(xpp);
23833    int eventType = nextNoWhitespace(xpp);
23834    while (eventType != XmlPullParser.END_TAG) {
23835    if (!parseQuestionnaireResponseItemAnswerComponentContent(eventType, xpp, res))
23836        unknownContent(xpp);
23837      eventType = nextNoWhitespace(xpp);
23838    }
23839    next(xpp);
23840    parseElementClose(res);
23841    return res;
23842  }
23843
23844  protected boolean parseQuestionnaireResponseItemAnswerComponentContent(int eventType, XmlPullParser xpp, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23845    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
23846      res.setValue(parseType("value", xpp));
23847    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
23848      res.getItem().add(parseQuestionnaireResponseItemComponent(xpp));
23849    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23850      return false;
23851    }
23852    return true;
23853  }
23854
23855  protected RegulatedAuthorization parseRegulatedAuthorization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23856    RegulatedAuthorization res = new RegulatedAuthorization();
23857    parseResourceAttributes(xpp, res);
23858    next(xpp);
23859    int eventType = nextNoWhitespace(xpp);
23860    while (eventType != XmlPullParser.END_TAG) {
23861    if (!parseRegulatedAuthorizationContent(eventType, xpp, res))
23862        unknownContent(xpp);
23863      eventType = nextNoWhitespace(xpp);
23864    }
23865    next(xpp);
23866    parseElementClose(res);
23867    return res;
23868  }
23869
23870  protected boolean parseRegulatedAuthorizationContent(int eventType, XmlPullParser xpp, RegulatedAuthorization res) throws XmlPullParserException, IOException, FHIRFormatError {
23871    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
23872      res.getIdentifier().add(parseIdentifier(xpp));
23873    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
23874      res.getSubject().add(parseReference(xpp));
23875    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
23876      res.setType(parseCodeableConcept(xpp));
23877    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
23878      res.setDescriptionElement(parseMarkdown(xpp));
23879    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("region")) {
23880      res.getRegion().add(parseCodeableConcept(xpp));
23881    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
23882      res.setStatus(parseCodeableConcept(xpp));
23883    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
23884      res.setStatusDateElement(parseDateTime(xpp));
23885    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
23886      res.setValidityPeriod(parsePeriod(xpp));
23887    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("indication")) {
23888      res.getIndication().add(parseCodeableReference(xpp));
23889    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedUse")) {
23890      res.setIntendedUse(parseCodeableConcept(xpp));
23891    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
23892      res.getBasis().add(parseCodeableConcept(xpp));
23893    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("holder")) {
23894      res.setHolder(parseReference(xpp));
23895    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulator")) {
23896      res.setRegulator(parseReference(xpp));
23897    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachedDocument")) {
23898      res.getAttachedDocument().add(parseReference(xpp));
23899    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("case")) {
23900      res.setCase(parseRegulatedAuthorizationCaseComponent(xpp));
23901    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
23902      return false;
23903    }
23904    return true;
23905  }
23906
23907  protected RegulatedAuthorization.RegulatedAuthorizationCaseComponent parseRegulatedAuthorizationCaseComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23908    RegulatedAuthorization.RegulatedAuthorizationCaseComponent res = new RegulatedAuthorization.RegulatedAuthorizationCaseComponent();
23909    parseElementAttributes(xpp, res);
23910    next(xpp);
23911    int eventType = nextNoWhitespace(xpp);
23912    while (eventType != XmlPullParser.END_TAG) {
23913    if (!parseRegulatedAuthorizationCaseComponentContent(eventType, xpp, res))
23914        unknownContent(xpp);
23915      eventType = nextNoWhitespace(xpp);
23916    }
23917    next(xpp);
23918    parseElementClose(res);
23919    return res;
23920  }
23921
23922  protected boolean parseRegulatedAuthorizationCaseComponentContent(int eventType, XmlPullParser xpp, RegulatedAuthorization.RegulatedAuthorizationCaseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23923    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
23924      res.setIdentifier(parseIdentifier(xpp));
23925    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
23926      res.setType(parseCodeableConcept(xpp));
23927    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
23928      res.setStatus(parseCodeableConcept(xpp));
23929    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "date")) {
23930      res.setDate(parseType("date", xpp));
23931    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("application")) {
23932      res.getApplication().add(parseRegulatedAuthorizationCaseComponent(xpp));
23933    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
23934      return false;
23935    }
23936    return true;
23937  }
23938
23939  protected RelatedPerson parseRelatedPerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23940    RelatedPerson res = new RelatedPerson();
23941    parseResourceAttributes(xpp, res);
23942    next(xpp);
23943    int eventType = nextNoWhitespace(xpp);
23944    while (eventType != XmlPullParser.END_TAG) {
23945    if (!parseRelatedPersonContent(eventType, xpp, res))
23946        unknownContent(xpp);
23947      eventType = nextNoWhitespace(xpp);
23948    }
23949    next(xpp);
23950    parseElementClose(res);
23951    return res;
23952  }
23953
23954  protected boolean parseRelatedPersonContent(int eventType, XmlPullParser xpp, RelatedPerson res) throws XmlPullParserException, IOException, FHIRFormatError {
23955    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
23956      res.getIdentifier().add(parseIdentifier(xpp));
23957    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
23958      res.setActiveElement(parseBoolean(xpp));
23959    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
23960      res.setPatient(parseReference(xpp));
23961    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
23962      res.getRelationship().add(parseCodeableConcept(xpp));
23963    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
23964      res.getName().add(parseHumanName(xpp));
23965    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
23966      res.getTelecom().add(parseContactPoint(xpp));
23967    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
23968      res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
23969    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
23970      res.setBirthDateElement(parseDate(xpp));
23971    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
23972      res.getAddress().add(parseAddress(xpp));
23973    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
23974      res.getPhoto().add(parseAttachment(xpp));
23975    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
23976      res.setPeriod(parsePeriod(xpp));
23977    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
23978      res.getCommunication().add(parseRelatedPersonCommunicationComponent(xpp));
23979    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
23980      return false;
23981    }
23982    return true;
23983  }
23984
23985  protected RelatedPerson.RelatedPersonCommunicationComponent parseRelatedPersonCommunicationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23986    RelatedPerson.RelatedPersonCommunicationComponent res = new RelatedPerson.RelatedPersonCommunicationComponent();
23987    parseElementAttributes(xpp, res);
23988    next(xpp);
23989    int eventType = nextNoWhitespace(xpp);
23990    while (eventType != XmlPullParser.END_TAG) {
23991    if (!parseRelatedPersonCommunicationComponentContent(eventType, xpp, res))
23992        unknownContent(xpp);
23993      eventType = nextNoWhitespace(xpp);
23994    }
23995    next(xpp);
23996    parseElementClose(res);
23997    return res;
23998  }
23999
24000  protected boolean parseRelatedPersonCommunicationComponentContent(int eventType, XmlPullParser xpp, RelatedPerson.RelatedPersonCommunicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24001    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
24002      res.setLanguage(parseCodeableConcept(xpp));
24003    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
24004      res.setPreferredElement(parseBoolean(xpp));
24005    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24006      return false;
24007    }
24008    return true;
24009  }
24010
24011  protected RequestOrchestration parseRequestOrchestration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24012    RequestOrchestration res = new RequestOrchestration();
24013    parseResourceAttributes(xpp, res);
24014    next(xpp);
24015    int eventType = nextNoWhitespace(xpp);
24016    while (eventType != XmlPullParser.END_TAG) {
24017    if (!parseRequestOrchestrationContent(eventType, xpp, res))
24018        unknownContent(xpp);
24019      eventType = nextNoWhitespace(xpp);
24020    }
24021    next(xpp);
24022    parseElementClose(res);
24023    return res;
24024  }
24025
24026  protected boolean parseRequestOrchestrationContent(int eventType, XmlPullParser xpp, RequestOrchestration res) throws XmlPullParserException, IOException, FHIRFormatError {
24027    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
24028      res.getIdentifier().add(parseIdentifier(xpp));
24029    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
24030      res.getInstantiatesCanonical().add(parseCanonical(xpp));
24031    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
24032      res.getInstantiatesUri().add(parseUri(xpp));
24033    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
24034      res.getBasedOn().add(parseReference(xpp));
24035    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
24036      res.getReplaces().add(parseReference(xpp));
24037    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
24038      res.setGroupIdentifier(parseIdentifier(xpp));
24039    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
24040      res.setStatusElement(parseEnumeration(xpp, Enumerations.RequestStatus.NULL, new Enumerations.RequestStatusEnumFactory()));
24041    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
24042      res.setIntentElement(parseEnumeration(xpp, Enumerations.RequestIntent.NULL, new Enumerations.RequestIntentEnumFactory()));
24043    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
24044      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
24045    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
24046      res.setCode(parseCodeableConcept(xpp));
24047    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
24048      res.setSubject(parseReference(xpp));
24049    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
24050      res.setEncounter(parseReference(xpp));
24051    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
24052      res.setAuthoredOnElement(parseDateTime(xpp));
24053    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
24054      res.setAuthor(parseReference(xpp));
24055    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
24056      res.getReason().add(parseCodeableReference(xpp));
24057    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
24058      res.getGoal().add(parseReference(xpp));
24059    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
24060      res.getNote().add(parseAnnotation(xpp));
24061    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
24062      res.getAction().add(parseRequestOrchestrationActionComponent(xpp));
24063    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
24064      return false;
24065    }
24066    return true;
24067  }
24068
24069  protected RequestOrchestration.RequestOrchestrationActionComponent parseRequestOrchestrationActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24070    RequestOrchestration.RequestOrchestrationActionComponent res = new RequestOrchestration.RequestOrchestrationActionComponent();
24071    parseElementAttributes(xpp, res);
24072    next(xpp);
24073    int eventType = nextNoWhitespace(xpp);
24074    while (eventType != XmlPullParser.END_TAG) {
24075    if (!parseRequestOrchestrationActionComponentContent(eventType, xpp, res))
24076        unknownContent(xpp);
24077      eventType = nextNoWhitespace(xpp);
24078    }
24079    next(xpp);
24080    parseElementClose(res);
24081    return res;
24082  }
24083
24084  protected boolean parseRequestOrchestrationActionComponentContent(int eventType, XmlPullParser xpp, RequestOrchestration.RequestOrchestrationActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24085    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
24086      res.setLinkIdElement(parseString(xpp));
24087    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
24088      res.setPrefixElement(parseString(xpp));
24089    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
24090      res.setTitleElement(parseString(xpp));
24091    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
24092      res.setDescriptionElement(parseMarkdown(xpp));
24093    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
24094      res.setTextEquivalentElement(parseMarkdown(xpp));
24095    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
24096      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
24097    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
24098      res.getCode().add(parseCodeableConcept(xpp));
24099    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
24100      res.getDocumentation().add(parseRelatedArtifact(xpp));
24101    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
24102      res.getGoal().add(parseReference(xpp));
24103    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
24104      res.getCondition().add(parseRequestOrchestrationActionConditionComponent(xpp));
24105    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
24106      res.getInput().add(parseRequestOrchestrationActionInputComponent(xpp));
24107    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
24108      res.getOutput().add(parseRequestOrchestrationActionOutputComponent(xpp));
24109    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
24110      res.getRelatedAction().add(parseRequestOrchestrationActionRelatedActionComponent(xpp));
24111    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
24112      res.setTiming(parseType("timing", xpp));
24113    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
24114      res.setLocation(parseCodeableReference(xpp));
24115    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
24116      res.getParticipant().add(parseRequestOrchestrationActionParticipantComponent(xpp));
24117    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
24118      res.setType(parseCodeableConcept(xpp));
24119    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingBehavior")) {
24120      res.setGroupingBehaviorElement(parseEnumeration(xpp, Enumerations.ActionGroupingBehavior.NULL, new Enumerations.ActionGroupingBehaviorEnumFactory()));
24121    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("selectionBehavior")) {
24122      res.setSelectionBehaviorElement(parseEnumeration(xpp, Enumerations.ActionSelectionBehavior.NULL, new Enumerations.ActionSelectionBehaviorEnumFactory()));
24123    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requiredBehavior")) {
24124      res.setRequiredBehaviorElement(parseEnumeration(xpp, Enumerations.ActionRequiredBehavior.NULL, new Enumerations.ActionRequiredBehaviorEnumFactory()));
24125    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precheckBehavior")) {
24126      res.setPrecheckBehaviorElement(parseEnumeration(xpp, Enumerations.ActionPrecheckBehavior.NULL, new Enumerations.ActionPrecheckBehaviorEnumFactory()));
24127    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardinalityBehavior")) {
24128      res.setCardinalityBehaviorElement(parseEnumeration(xpp, Enumerations.ActionCardinalityBehavior.NULL, new Enumerations.ActionCardinalityBehaviorEnumFactory()));
24129    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
24130      res.setResource(parseReference(xpp));
24131    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "definition")) {
24132      res.setDefinition(parseType("definition", xpp));
24133    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
24134      res.setTransformElement(parseCanonical(xpp));
24135    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
24136      res.getDynamicValue().add(parseRequestOrchestrationActionDynamicValueComponent(xpp));
24137    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
24138      res.getAction().add(parseRequestOrchestrationActionComponent(xpp));
24139    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24140      return false;
24141    }
24142    return true;
24143  }
24144
24145  protected RequestOrchestration.RequestOrchestrationActionConditionComponent parseRequestOrchestrationActionConditionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24146    RequestOrchestration.RequestOrchestrationActionConditionComponent res = new RequestOrchestration.RequestOrchestrationActionConditionComponent();
24147    parseElementAttributes(xpp, res);
24148    next(xpp);
24149    int eventType = nextNoWhitespace(xpp);
24150    while (eventType != XmlPullParser.END_TAG) {
24151    if (!parseRequestOrchestrationActionConditionComponentContent(eventType, xpp, res))
24152        unknownContent(xpp);
24153      eventType = nextNoWhitespace(xpp);
24154    }
24155    next(xpp);
24156    parseElementClose(res);
24157    return res;
24158  }
24159
24160  protected boolean parseRequestOrchestrationActionConditionComponentContent(int eventType, XmlPullParser xpp, RequestOrchestration.RequestOrchestrationActionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24161    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
24162      res.setKindElement(parseEnumeration(xpp, Enumerations.ActionConditionKind.NULL, new Enumerations.ActionConditionKindEnumFactory()));
24163    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
24164      res.setExpression(parseExpression(xpp));
24165    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24166      return false;
24167    }
24168    return true;
24169  }
24170
24171  protected RequestOrchestration.RequestOrchestrationActionInputComponent parseRequestOrchestrationActionInputComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24172    RequestOrchestration.RequestOrchestrationActionInputComponent res = new RequestOrchestration.RequestOrchestrationActionInputComponent();
24173    parseElementAttributes(xpp, res);
24174    next(xpp);
24175    int eventType = nextNoWhitespace(xpp);
24176    while (eventType != XmlPullParser.END_TAG) {
24177    if (!parseRequestOrchestrationActionInputComponentContent(eventType, xpp, res))
24178        unknownContent(xpp);
24179      eventType = nextNoWhitespace(xpp);
24180    }
24181    next(xpp);
24182    parseElementClose(res);
24183    return res;
24184  }
24185
24186  protected boolean parseRequestOrchestrationActionInputComponentContent(int eventType, XmlPullParser xpp, RequestOrchestration.RequestOrchestrationActionInputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24187    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
24188      res.setTitleElement(parseString(xpp));
24189    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
24190      res.setRequirement(parseDataRequirement(xpp));
24191    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedData")) {
24192      res.setRelatedDataElement(parseId(xpp));
24193    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24194      return false;
24195    }
24196    return true;
24197  }
24198
24199  protected RequestOrchestration.RequestOrchestrationActionOutputComponent parseRequestOrchestrationActionOutputComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24200    RequestOrchestration.RequestOrchestrationActionOutputComponent res = new RequestOrchestration.RequestOrchestrationActionOutputComponent();
24201    parseElementAttributes(xpp, res);
24202    next(xpp);
24203    int eventType = nextNoWhitespace(xpp);
24204    while (eventType != XmlPullParser.END_TAG) {
24205    if (!parseRequestOrchestrationActionOutputComponentContent(eventType, xpp, res))
24206        unknownContent(xpp);
24207      eventType = nextNoWhitespace(xpp);
24208    }
24209    next(xpp);
24210    parseElementClose(res);
24211    return res;
24212  }
24213
24214  protected boolean parseRequestOrchestrationActionOutputComponentContent(int eventType, XmlPullParser xpp, RequestOrchestration.RequestOrchestrationActionOutputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24215    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
24216      res.setTitleElement(parseString(xpp));
24217    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
24218      res.setRequirement(parseDataRequirement(xpp));
24219    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedData")) {
24220      res.setRelatedDataElement(parseString(xpp));
24221    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24222      return false;
24223    }
24224    return true;
24225  }
24226
24227  protected RequestOrchestration.RequestOrchestrationActionRelatedActionComponent parseRequestOrchestrationActionRelatedActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24228    RequestOrchestration.RequestOrchestrationActionRelatedActionComponent res = new RequestOrchestration.RequestOrchestrationActionRelatedActionComponent();
24229    parseElementAttributes(xpp, res);
24230    next(xpp);
24231    int eventType = nextNoWhitespace(xpp);
24232    while (eventType != XmlPullParser.END_TAG) {
24233    if (!parseRequestOrchestrationActionRelatedActionComponentContent(eventType, xpp, res))
24234        unknownContent(xpp);
24235      eventType = nextNoWhitespace(xpp);
24236    }
24237    next(xpp);
24238    parseElementClose(res);
24239    return res;
24240  }
24241
24242  protected boolean parseRequestOrchestrationActionRelatedActionComponentContent(int eventType, XmlPullParser xpp, RequestOrchestration.RequestOrchestrationActionRelatedActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24243    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetId")) {
24244      res.setTargetIdElement(parseId(xpp));
24245    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
24246      res.setRelationshipElement(parseEnumeration(xpp, Enumerations.ActionRelationshipType.NULL, new Enumerations.ActionRelationshipTypeEnumFactory()));
24247    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endRelationship")) {
24248      res.setEndRelationshipElement(parseEnumeration(xpp, Enumerations.ActionRelationshipType.NULL, new Enumerations.ActionRelationshipTypeEnumFactory()));
24249    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
24250      res.setOffset(parseType("offset", xpp));
24251    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24252      return false;
24253    }
24254    return true;
24255  }
24256
24257  protected RequestOrchestration.RequestOrchestrationActionParticipantComponent parseRequestOrchestrationActionParticipantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24258    RequestOrchestration.RequestOrchestrationActionParticipantComponent res = new RequestOrchestration.RequestOrchestrationActionParticipantComponent();
24259    parseElementAttributes(xpp, res);
24260    next(xpp);
24261    int eventType = nextNoWhitespace(xpp);
24262    while (eventType != XmlPullParser.END_TAG) {
24263    if (!parseRequestOrchestrationActionParticipantComponentContent(eventType, xpp, res))
24264        unknownContent(xpp);
24265      eventType = nextNoWhitespace(xpp);
24266    }
24267    next(xpp);
24268    parseElementClose(res);
24269    return res;
24270  }
24271
24272  protected boolean parseRequestOrchestrationActionParticipantComponentContent(int eventType, XmlPullParser xpp, RequestOrchestration.RequestOrchestrationActionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24273    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
24274      res.setTypeElement(parseEnumeration(xpp, Enumerations.ActionParticipantType.NULL, new Enumerations.ActionParticipantTypeEnumFactory()));
24275    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeCanonical")) {
24276      res.setTypeCanonicalElement(parseCanonical(xpp));
24277    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeReference")) {
24278      res.setTypeReference(parseReference(xpp));
24279    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
24280      res.setRole(parseCodeableConcept(xpp));
24281    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
24282      res.setFunction(parseCodeableConcept(xpp));
24283    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "actor")) {
24284      res.setActor(parseType("actor", xpp));
24285    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24286      return false;
24287    }
24288    return true;
24289  }
24290
24291  protected RequestOrchestration.RequestOrchestrationActionDynamicValueComponent parseRequestOrchestrationActionDynamicValueComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24292    RequestOrchestration.RequestOrchestrationActionDynamicValueComponent res = new RequestOrchestration.RequestOrchestrationActionDynamicValueComponent();
24293    parseElementAttributes(xpp, res);
24294    next(xpp);
24295    int eventType = nextNoWhitespace(xpp);
24296    while (eventType != XmlPullParser.END_TAG) {
24297    if (!parseRequestOrchestrationActionDynamicValueComponentContent(eventType, xpp, res))
24298        unknownContent(xpp);
24299      eventType = nextNoWhitespace(xpp);
24300    }
24301    next(xpp);
24302    parseElementClose(res);
24303    return res;
24304  }
24305
24306  protected boolean parseRequestOrchestrationActionDynamicValueComponentContent(int eventType, XmlPullParser xpp, RequestOrchestration.RequestOrchestrationActionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24307    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
24308      res.setPathElement(parseString(xpp));
24309    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
24310      res.setExpression(parseExpression(xpp));
24311    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24312      return false;
24313    }
24314    return true;
24315  }
24316
24317  protected Requirements parseRequirements(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24318    Requirements res = new Requirements();
24319    parseResourceAttributes(xpp, res);
24320    next(xpp);
24321    int eventType = nextNoWhitespace(xpp);
24322    while (eventType != XmlPullParser.END_TAG) {
24323    if (!parseRequirementsContent(eventType, xpp, res))
24324        unknownContent(xpp);
24325      eventType = nextNoWhitespace(xpp);
24326    }
24327    next(xpp);
24328    parseElementClose(res);
24329    return res;
24330  }
24331
24332  protected boolean parseRequirementsContent(int eventType, XmlPullParser xpp, Requirements res) throws XmlPullParserException, IOException, FHIRFormatError {
24333    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
24334      res.setUrlElement(parseUri(xpp));
24335    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
24336      res.getIdentifier().add(parseIdentifier(xpp));
24337    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
24338      res.setVersionElement(parseString(xpp));
24339    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
24340      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
24341    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
24342      res.setNameElement(parseString(xpp));
24343    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
24344      res.setTitleElement(parseString(xpp));
24345    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
24346      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
24347    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
24348      res.setExperimentalElement(parseBoolean(xpp));
24349    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
24350      res.setDateElement(parseDateTime(xpp));
24351    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
24352      res.setPublisherElement(parseString(xpp));
24353    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
24354      res.getContact().add(parseContactDetail(xpp));
24355    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
24356      res.setDescriptionElement(parseMarkdown(xpp));
24357    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
24358      res.getUseContext().add(parseUsageContext(xpp));
24359    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
24360      res.getJurisdiction().add(parseCodeableConcept(xpp));
24361    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
24362      res.setPurposeElement(parseMarkdown(xpp));
24363    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
24364      res.setCopyrightElement(parseMarkdown(xpp));
24365    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
24366      res.setCopyrightLabelElement(parseString(xpp));
24367    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
24368      res.getDerivedFrom().add(parseCanonical(xpp));
24369    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
24370      res.getReference().add(parseUrl(xpp));
24371    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
24372      res.getActor().add(parseCanonical(xpp));
24373    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statement")) {
24374      res.getStatement().add(parseRequirementsStatementComponent(xpp));
24375    } else if (!parseCanonicalResourceContent(eventType, xpp, res)){ 
24376      return false;
24377    }
24378    return true;
24379  }
24380
24381  protected Requirements.RequirementsStatementComponent parseRequirementsStatementComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24382    Requirements.RequirementsStatementComponent res = new Requirements.RequirementsStatementComponent();
24383    parseElementAttributes(xpp, res);
24384    next(xpp);
24385    int eventType = nextNoWhitespace(xpp);
24386    while (eventType != XmlPullParser.END_TAG) {
24387    if (!parseRequirementsStatementComponentContent(eventType, xpp, res))
24388        unknownContent(xpp);
24389      eventType = nextNoWhitespace(xpp);
24390    }
24391    next(xpp);
24392    parseElementClose(res);
24393    return res;
24394  }
24395
24396  protected boolean parseRequirementsStatementComponentContent(int eventType, XmlPullParser xpp, Requirements.RequirementsStatementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24397    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("key")) {
24398      res.setKeyElement(parseId(xpp));
24399    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
24400      res.setLabelElement(parseString(xpp));
24401    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conformance")) {
24402      res.getConformance().add(parseEnumeration(xpp, Requirements.ConformanceExpectation.NULL, new Requirements.ConformanceExpectationEnumFactory()));
24403    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionality")) {
24404      res.setConditionalityElement(parseBoolean(xpp));
24405    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
24406      res.setRequirementElement(parseMarkdown(xpp));
24407    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
24408      res.setDerivedFromElement(parseString(xpp));
24409    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
24410      res.setParentElement(parseString(xpp));
24411    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("satisfiedBy")) {
24412      res.getSatisfiedBy().add(parseUrl(xpp));
24413    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
24414      res.getReference().add(parseUrl(xpp));
24415    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
24416      res.getSource().add(parseReference(xpp));
24417    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24418      return false;
24419    }
24420    return true;
24421  }
24422
24423  protected ResearchStudy parseResearchStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24424    ResearchStudy res = new ResearchStudy();
24425    parseResourceAttributes(xpp, res);
24426    next(xpp);
24427    int eventType = nextNoWhitespace(xpp);
24428    while (eventType != XmlPullParser.END_TAG) {
24429    if (!parseResearchStudyContent(eventType, xpp, res))
24430        unknownContent(xpp);
24431      eventType = nextNoWhitespace(xpp);
24432    }
24433    next(xpp);
24434    parseElementClose(res);
24435    return res;
24436  }
24437
24438  protected boolean parseResearchStudyContent(int eventType, XmlPullParser xpp, ResearchStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
24439    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
24440      res.setUrlElement(parseUri(xpp));
24441    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
24442      res.getIdentifier().add(parseIdentifier(xpp));
24443    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
24444      res.setVersionElement(parseString(xpp));
24445    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
24446      res.setNameElement(parseString(xpp));
24447    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
24448      res.setTitleElement(parseString(xpp));
24449    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
24450      res.getLabel().add(parseResearchStudyLabelComponent(xpp));
24451    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
24452      res.getProtocol().add(parseReference(xpp));
24453    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
24454      res.getPartOf().add(parseReference(xpp));
24455    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
24456      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
24457    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
24458      res.setDateElement(parseDateTime(xpp));
24459    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
24460      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
24461    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primaryPurposeType")) {
24462      res.setPrimaryPurposeType(parseCodeableConcept(xpp));
24463    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("phase")) {
24464      res.setPhase(parseCodeableConcept(xpp));
24465    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyDesign")) {
24466      res.getStudyDesign().add(parseCodeableConcept(xpp));
24467    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
24468      res.getFocus().add(parseCodeableReference(xpp));
24469    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
24470      res.getCondition().add(parseCodeableConcept(xpp));
24471    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("keyword")) {
24472      res.getKeyword().add(parseCodeableConcept(xpp));
24473    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("region")) {
24474      res.getRegion().add(parseCodeableConcept(xpp));
24475    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("descriptionSummary")) {
24476      res.setDescriptionSummaryElement(parseMarkdown(xpp));
24477    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
24478      res.setDescriptionElement(parseMarkdown(xpp));
24479    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
24480      res.setPeriod(parsePeriod(xpp));
24481    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
24482      res.getSite().add(parseReference(xpp));
24483    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
24484      res.getNote().add(parseAnnotation(xpp));
24485    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classifier")) {
24486      res.getClassifier().add(parseCodeableConcept(xpp));
24487    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("associatedParty")) {
24488      res.getAssociatedParty().add(parseResearchStudyAssociatedPartyComponent(xpp));
24489    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("progressStatus")) {
24490      res.getProgressStatus().add(parseResearchStudyProgressStatusComponent(xpp));
24491    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whyStopped")) {
24492      res.setWhyStopped(parseCodeableConcept(xpp));
24493    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recruitment")) {
24494      res.setRecruitment(parseResearchStudyRecruitmentComponent(xpp));
24495    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparisonGroup")) {
24496      res.getComparisonGroup().add(parseResearchStudyComparisonGroupComponent(xpp));
24497    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("objective")) {
24498      res.getObjective().add(parseResearchStudyObjectiveComponent(xpp));
24499    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeMeasure")) {
24500      res.getOutcomeMeasure().add(parseResearchStudyOutcomeMeasureComponent(xpp));
24501    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
24502      res.getResult().add(parseReference(xpp));
24503    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
24504      return false;
24505    }
24506    return true;
24507  }
24508
24509  protected ResearchStudy.ResearchStudyLabelComponent parseResearchStudyLabelComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24510    ResearchStudy.ResearchStudyLabelComponent res = new ResearchStudy.ResearchStudyLabelComponent();
24511    parseElementAttributes(xpp, res);
24512    next(xpp);
24513    int eventType = nextNoWhitespace(xpp);
24514    while (eventType != XmlPullParser.END_TAG) {
24515    if (!parseResearchStudyLabelComponentContent(eventType, xpp, res))
24516        unknownContent(xpp);
24517      eventType = nextNoWhitespace(xpp);
24518    }
24519    next(xpp);
24520    parseElementClose(res);
24521    return res;
24522  }
24523
24524  protected boolean parseResearchStudyLabelComponentContent(int eventType, XmlPullParser xpp, ResearchStudy.ResearchStudyLabelComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24525    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
24526      res.setType(parseCodeableConcept(xpp));
24527    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
24528      res.setValueElement(parseString(xpp));
24529    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24530      return false;
24531    }
24532    return true;
24533  }
24534
24535  protected ResearchStudy.ResearchStudyAssociatedPartyComponent parseResearchStudyAssociatedPartyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24536    ResearchStudy.ResearchStudyAssociatedPartyComponent res = new ResearchStudy.ResearchStudyAssociatedPartyComponent();
24537    parseElementAttributes(xpp, res);
24538    next(xpp);
24539    int eventType = nextNoWhitespace(xpp);
24540    while (eventType != XmlPullParser.END_TAG) {
24541    if (!parseResearchStudyAssociatedPartyComponentContent(eventType, xpp, res))
24542        unknownContent(xpp);
24543      eventType = nextNoWhitespace(xpp);
24544    }
24545    next(xpp);
24546    parseElementClose(res);
24547    return res;
24548  }
24549
24550  protected boolean parseResearchStudyAssociatedPartyComponentContent(int eventType, XmlPullParser xpp, ResearchStudy.ResearchStudyAssociatedPartyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24551    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
24552      res.setNameElement(parseString(xpp));
24553    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
24554      res.setRole(parseCodeableConcept(xpp));
24555    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
24556      res.getPeriod().add(parsePeriod(xpp));
24557    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classifier")) {
24558      res.getClassifier().add(parseCodeableConcept(xpp));
24559    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
24560      res.setParty(parseReference(xpp));
24561    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24562      return false;
24563    }
24564    return true;
24565  }
24566
24567  protected ResearchStudy.ResearchStudyProgressStatusComponent parseResearchStudyProgressStatusComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24568    ResearchStudy.ResearchStudyProgressStatusComponent res = new ResearchStudy.ResearchStudyProgressStatusComponent();
24569    parseElementAttributes(xpp, res);
24570    next(xpp);
24571    int eventType = nextNoWhitespace(xpp);
24572    while (eventType != XmlPullParser.END_TAG) {
24573    if (!parseResearchStudyProgressStatusComponentContent(eventType, xpp, res))
24574        unknownContent(xpp);
24575      eventType = nextNoWhitespace(xpp);
24576    }
24577    next(xpp);
24578    parseElementClose(res);
24579    return res;
24580  }
24581
24582  protected boolean parseResearchStudyProgressStatusComponentContent(int eventType, XmlPullParser xpp, ResearchStudy.ResearchStudyProgressStatusComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24583    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
24584      res.setState(parseCodeableConcept(xpp));
24585    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actual")) {
24586      res.setActualElement(parseBoolean(xpp));
24587    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
24588      res.setPeriod(parsePeriod(xpp));
24589    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24590      return false;
24591    }
24592    return true;
24593  }
24594
24595  protected ResearchStudy.ResearchStudyRecruitmentComponent parseResearchStudyRecruitmentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24596    ResearchStudy.ResearchStudyRecruitmentComponent res = new ResearchStudy.ResearchStudyRecruitmentComponent();
24597    parseElementAttributes(xpp, res);
24598    next(xpp);
24599    int eventType = nextNoWhitespace(xpp);
24600    while (eventType != XmlPullParser.END_TAG) {
24601    if (!parseResearchStudyRecruitmentComponentContent(eventType, xpp, res))
24602        unknownContent(xpp);
24603      eventType = nextNoWhitespace(xpp);
24604    }
24605    next(xpp);
24606    parseElementClose(res);
24607    return res;
24608  }
24609
24610  protected boolean parseResearchStudyRecruitmentComponentContent(int eventType, XmlPullParser xpp, ResearchStudy.ResearchStudyRecruitmentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24611    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetNumber")) {
24612      res.setTargetNumberElement(parseUnsignedInt(xpp));
24613    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actualNumber")) {
24614      res.setActualNumberElement(parseUnsignedInt(xpp));
24615    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibility")) {
24616      res.setEligibility(parseReference(xpp));
24617    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actualGroup")) {
24618      res.setActualGroup(parseReference(xpp));
24619    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24620      return false;
24621    }
24622    return true;
24623  }
24624
24625  protected ResearchStudy.ResearchStudyComparisonGroupComponent parseResearchStudyComparisonGroupComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24626    ResearchStudy.ResearchStudyComparisonGroupComponent res = new ResearchStudy.ResearchStudyComparisonGroupComponent();
24627    parseElementAttributes(xpp, res);
24628    next(xpp);
24629    int eventType = nextNoWhitespace(xpp);
24630    while (eventType != XmlPullParser.END_TAG) {
24631    if (!parseResearchStudyComparisonGroupComponentContent(eventType, xpp, res))
24632        unknownContent(xpp);
24633      eventType = nextNoWhitespace(xpp);
24634    }
24635    next(xpp);
24636    parseElementClose(res);
24637    return res;
24638  }
24639
24640  protected boolean parseResearchStudyComparisonGroupComponentContent(int eventType, XmlPullParser xpp, ResearchStudy.ResearchStudyComparisonGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24641    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
24642      res.setLinkIdElement(parseId(xpp));
24643    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
24644      res.setNameElement(parseString(xpp));
24645    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
24646      res.setType(parseCodeableConcept(xpp));
24647    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
24648      res.setDescriptionElement(parseMarkdown(xpp));
24649    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedExposure")) {
24650      res.getIntendedExposure().add(parseReference(xpp));
24651    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedGroup")) {
24652      res.setObservedGroup(parseReference(xpp));
24653    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24654      return false;
24655    }
24656    return true;
24657  }
24658
24659  protected ResearchStudy.ResearchStudyObjectiveComponent parseResearchStudyObjectiveComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24660    ResearchStudy.ResearchStudyObjectiveComponent res = new ResearchStudy.ResearchStudyObjectiveComponent();
24661    parseElementAttributes(xpp, res);
24662    next(xpp);
24663    int eventType = nextNoWhitespace(xpp);
24664    while (eventType != XmlPullParser.END_TAG) {
24665    if (!parseResearchStudyObjectiveComponentContent(eventType, xpp, res))
24666        unknownContent(xpp);
24667      eventType = nextNoWhitespace(xpp);
24668    }
24669    next(xpp);
24670    parseElementClose(res);
24671    return res;
24672  }
24673
24674  protected boolean parseResearchStudyObjectiveComponentContent(int eventType, XmlPullParser xpp, ResearchStudy.ResearchStudyObjectiveComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24675    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
24676      res.setNameElement(parseString(xpp));
24677    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
24678      res.setType(parseCodeableConcept(xpp));
24679    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
24680      res.setDescriptionElement(parseMarkdown(xpp));
24681    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24682      return false;
24683    }
24684    return true;
24685  }
24686
24687  protected ResearchStudy.ResearchStudyOutcomeMeasureComponent parseResearchStudyOutcomeMeasureComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24688    ResearchStudy.ResearchStudyOutcomeMeasureComponent res = new ResearchStudy.ResearchStudyOutcomeMeasureComponent();
24689    parseElementAttributes(xpp, res);
24690    next(xpp);
24691    int eventType = nextNoWhitespace(xpp);
24692    while (eventType != XmlPullParser.END_TAG) {
24693    if (!parseResearchStudyOutcomeMeasureComponentContent(eventType, xpp, res))
24694        unknownContent(xpp);
24695      eventType = nextNoWhitespace(xpp);
24696    }
24697    next(xpp);
24698    parseElementClose(res);
24699    return res;
24700  }
24701
24702  protected boolean parseResearchStudyOutcomeMeasureComponentContent(int eventType, XmlPullParser xpp, ResearchStudy.ResearchStudyOutcomeMeasureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24703    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
24704      res.setNameElement(parseString(xpp));
24705    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
24706      res.getType().add(parseCodeableConcept(xpp));
24707    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
24708      res.setDescriptionElement(parseMarkdown(xpp));
24709    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
24710      res.setReference(parseReference(xpp));
24711    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24712      return false;
24713    }
24714    return true;
24715  }
24716
24717  protected ResearchSubject parseResearchSubject(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24718    ResearchSubject res = new ResearchSubject();
24719    parseResourceAttributes(xpp, res);
24720    next(xpp);
24721    int eventType = nextNoWhitespace(xpp);
24722    while (eventType != XmlPullParser.END_TAG) {
24723    if (!parseResearchSubjectContent(eventType, xpp, res))
24724        unknownContent(xpp);
24725      eventType = nextNoWhitespace(xpp);
24726    }
24727    next(xpp);
24728    parseElementClose(res);
24729    return res;
24730  }
24731
24732  protected boolean parseResearchSubjectContent(int eventType, XmlPullParser xpp, ResearchSubject res) throws XmlPullParserException, IOException, FHIRFormatError {
24733    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
24734      res.getIdentifier().add(parseIdentifier(xpp));
24735    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
24736      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
24737    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("progress")) {
24738      res.getProgress().add(parseResearchSubjectProgressComponent(xpp));
24739    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
24740      res.setPeriod(parsePeriod(xpp));
24741    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
24742      res.setStudy(parseReference(xpp));
24743    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
24744      res.setSubject(parseReference(xpp));
24745    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assignedComparisonGroup")) {
24746      res.setAssignedComparisonGroupElement(parseId(xpp));
24747    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actualComparisonGroup")) {
24748      res.setActualComparisonGroupElement(parseId(xpp));
24749    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("consent")) {
24750      res.getConsent().add(parseReference(xpp));
24751    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
24752      return false;
24753    }
24754    return true;
24755  }
24756
24757  protected ResearchSubject.ResearchSubjectProgressComponent parseResearchSubjectProgressComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24758    ResearchSubject.ResearchSubjectProgressComponent res = new ResearchSubject.ResearchSubjectProgressComponent();
24759    parseElementAttributes(xpp, res);
24760    next(xpp);
24761    int eventType = nextNoWhitespace(xpp);
24762    while (eventType != XmlPullParser.END_TAG) {
24763    if (!parseResearchSubjectProgressComponentContent(eventType, xpp, res))
24764        unknownContent(xpp);
24765      eventType = nextNoWhitespace(xpp);
24766    }
24767    next(xpp);
24768    parseElementClose(res);
24769    return res;
24770  }
24771
24772  protected boolean parseResearchSubjectProgressComponentContent(int eventType, XmlPullParser xpp, ResearchSubject.ResearchSubjectProgressComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24773    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
24774      res.setType(parseCodeableConcept(xpp));
24775    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectState")) {
24776      res.setSubjectState(parseCodeableConcept(xpp));
24777    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("milestone")) {
24778      res.setMilestone(parseCodeableConcept(xpp));
24779    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
24780      res.setReason(parseCodeableConcept(xpp));
24781    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("startDate")) {
24782      res.setStartDateElement(parseDateTime(xpp));
24783    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endDate")) {
24784      res.setEndDateElement(parseDateTime(xpp));
24785    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24786      return false;
24787    }
24788    return true;
24789  }
24790
24791  protected RiskAssessment parseRiskAssessment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24792    RiskAssessment res = new RiskAssessment();
24793    parseResourceAttributes(xpp, res);
24794    next(xpp);
24795    int eventType = nextNoWhitespace(xpp);
24796    while (eventType != XmlPullParser.END_TAG) {
24797    if (!parseRiskAssessmentContent(eventType, xpp, res))
24798        unknownContent(xpp);
24799      eventType = nextNoWhitespace(xpp);
24800    }
24801    next(xpp);
24802    parseElementClose(res);
24803    return res;
24804  }
24805
24806  protected boolean parseRiskAssessmentContent(int eventType, XmlPullParser xpp, RiskAssessment res) throws XmlPullParserException, IOException, FHIRFormatError {
24807    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
24808      res.getIdentifier().add(parseIdentifier(xpp));
24809    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
24810      res.setBasedOn(parseReference(xpp));
24811    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
24812      res.setParent(parseReference(xpp));
24813    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
24814      res.setStatusElement(parseEnumeration(xpp, Enumerations.ObservationStatus.NULL, new Enumerations.ObservationStatusEnumFactory()));
24815    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
24816      res.setMethod(parseCodeableConcept(xpp));
24817    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
24818      res.setCode(parseCodeableConcept(xpp));
24819    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
24820      res.setSubject(parseReference(xpp));
24821    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
24822      res.setEncounter(parseReference(xpp));
24823    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
24824      res.setOccurrence(parseType("occurrence", xpp));
24825    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
24826      res.setCondition(parseReference(xpp));
24827    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
24828      res.setPerformer(parseReference(xpp));
24829    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
24830      res.getReason().add(parseCodeableReference(xpp));
24831    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
24832      res.getBasis().add(parseReference(xpp));
24833    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prediction")) {
24834      res.getPrediction().add(parseRiskAssessmentPredictionComponent(xpp));
24835    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
24836      res.setMitigationElement(parseString(xpp));
24837    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
24838      res.getNote().add(parseAnnotation(xpp));
24839    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
24840      return false;
24841    }
24842    return true;
24843  }
24844
24845  protected RiskAssessment.RiskAssessmentPredictionComponent parseRiskAssessmentPredictionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24846    RiskAssessment.RiskAssessmentPredictionComponent res = new RiskAssessment.RiskAssessmentPredictionComponent();
24847    parseElementAttributes(xpp, res);
24848    next(xpp);
24849    int eventType = nextNoWhitespace(xpp);
24850    while (eventType != XmlPullParser.END_TAG) {
24851    if (!parseRiskAssessmentPredictionComponentContent(eventType, xpp, res))
24852        unknownContent(xpp);
24853      eventType = nextNoWhitespace(xpp);
24854    }
24855    next(xpp);
24856    parseElementClose(res);
24857    return res;
24858  }
24859
24860  protected boolean parseRiskAssessmentPredictionComponentContent(int eventType, XmlPullParser xpp, RiskAssessment.RiskAssessmentPredictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
24861    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
24862      res.setOutcome(parseCodeableConcept(xpp));
24863    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "probability")) {
24864      res.setProbability(parseType("probability", xpp));
24865    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualitativeRisk")) {
24866      res.setQualitativeRisk(parseCodeableConcept(xpp));
24867    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relativeRisk")) {
24868      res.setRelativeRiskElement(parseDecimal(xpp));
24869    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "when")) {
24870      res.setWhen(parseType("when", xpp));
24871    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
24872      res.setRationaleElement(parseString(xpp));
24873    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
24874      return false;
24875    }
24876    return true;
24877  }
24878
24879  protected Schedule parseSchedule(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24880    Schedule res = new Schedule();
24881    parseResourceAttributes(xpp, res);
24882    next(xpp);
24883    int eventType = nextNoWhitespace(xpp);
24884    while (eventType != XmlPullParser.END_TAG) {
24885    if (!parseScheduleContent(eventType, xpp, res))
24886        unknownContent(xpp);
24887      eventType = nextNoWhitespace(xpp);
24888    }
24889    next(xpp);
24890    parseElementClose(res);
24891    return res;
24892  }
24893
24894  protected boolean parseScheduleContent(int eventType, XmlPullParser xpp, Schedule res) throws XmlPullParserException, IOException, FHIRFormatError {
24895    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
24896      res.getIdentifier().add(parseIdentifier(xpp));
24897    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
24898      res.setActiveElement(parseBoolean(xpp));
24899    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
24900      res.getServiceCategory().add(parseCodeableConcept(xpp));
24901    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
24902      res.getServiceType().add(parseCodeableReference(xpp));
24903    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
24904      res.getSpecialty().add(parseCodeableConcept(xpp));
24905    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
24906      res.setNameElement(parseString(xpp));
24907    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
24908      res.getActor().add(parseReference(xpp));
24909    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("planningHorizon")) {
24910      res.setPlanningHorizon(parsePeriod(xpp));
24911    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
24912      res.setCommentElement(parseMarkdown(xpp));
24913    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
24914      return false;
24915    }
24916    return true;
24917  }
24918
24919  protected SearchParameter parseSearchParameter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24920    SearchParameter res = new SearchParameter();
24921    parseResourceAttributes(xpp, res);
24922    next(xpp);
24923    int eventType = nextNoWhitespace(xpp);
24924    while (eventType != XmlPullParser.END_TAG) {
24925    if (!parseSearchParameterContent(eventType, xpp, res))
24926        unknownContent(xpp);
24927      eventType = nextNoWhitespace(xpp);
24928    }
24929    next(xpp);
24930    parseElementClose(res);
24931    return res;
24932  }
24933
24934  protected boolean parseSearchParameterContent(int eventType, XmlPullParser xpp, SearchParameter res) throws XmlPullParserException, IOException, FHIRFormatError {
24935    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
24936      res.setUrlElement(parseUri(xpp));
24937    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
24938      res.getIdentifier().add(parseIdentifier(xpp));
24939    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
24940      res.setVersionElement(parseString(xpp));
24941    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
24942      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
24943    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
24944      res.setNameElement(parseString(xpp));
24945    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
24946      res.setTitleElement(parseString(xpp));
24947    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
24948      res.setDerivedFromElement(parseCanonical(xpp));
24949    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
24950      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
24951    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
24952      res.setExperimentalElement(parseBoolean(xpp));
24953    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
24954      res.setDateElement(parseDateTime(xpp));
24955    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
24956      res.setPublisherElement(parseString(xpp));
24957    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
24958      res.getContact().add(parseContactDetail(xpp));
24959    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
24960      res.setDescriptionElement(parseMarkdown(xpp));
24961    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
24962      res.getUseContext().add(parseUsageContext(xpp));
24963    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
24964      res.getJurisdiction().add(parseCodeableConcept(xpp));
24965    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
24966      res.setPurposeElement(parseMarkdown(xpp));
24967    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
24968      res.setCopyrightElement(parseMarkdown(xpp));
24969    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
24970      res.setCopyrightLabelElement(parseString(xpp));
24971    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
24972      res.setCodeElement(parseCode(xpp));
24973    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
24974      res.getBase().add(parseEnumeration(xpp, Enumerations.VersionIndependentResourceTypesAll.NULL, new Enumerations.VersionIndependentResourceTypesAllEnumFactory()));
24975    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
24976      res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
24977    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
24978      res.setExpressionElement(parseString(xpp));
24979    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processingMode")) {
24980      res.setProcessingModeElement(parseEnumeration(xpp, SearchParameter.SearchProcessingModeType.NULL, new SearchParameter.SearchProcessingModeTypeEnumFactory()));
24981    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("constraint")) {
24982      res.setConstraintElement(parseString(xpp));
24983    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
24984      res.getTarget().add(parseEnumeration(xpp, Enumerations.VersionIndependentResourceTypesAll.NULL, new Enumerations.VersionIndependentResourceTypesAllEnumFactory()));
24985    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleOr")) {
24986      res.setMultipleOrElement(parseBoolean(xpp));
24987    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleAnd")) {
24988      res.setMultipleAndElement(parseBoolean(xpp));
24989    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
24990      res.getComparator().add(parseEnumeration(xpp, Enumerations.SearchComparator.NULL, new Enumerations.SearchComparatorEnumFactory()));
24991    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
24992      res.getModifier().add(parseEnumeration(xpp, Enumerations.SearchModifierCode.NULL, new Enumerations.SearchModifierCodeEnumFactory()));
24993    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chain")) {
24994      res.getChain().add(parseString(xpp));
24995    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
24996      res.getComponent().add(parseSearchParameterComponentComponent(xpp));
24997    } else if (!parseCanonicalResourceContent(eventType, xpp, res)){ 
24998      return false;
24999    }
25000    return true;
25001  }
25002
25003  protected SearchParameter.SearchParameterComponentComponent parseSearchParameterComponentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25004    SearchParameter.SearchParameterComponentComponent res = new SearchParameter.SearchParameterComponentComponent();
25005    parseElementAttributes(xpp, res);
25006    next(xpp);
25007    int eventType = nextNoWhitespace(xpp);
25008    while (eventType != XmlPullParser.END_TAG) {
25009    if (!parseSearchParameterComponentComponentContent(eventType, xpp, res))
25010        unknownContent(xpp);
25011      eventType = nextNoWhitespace(xpp);
25012    }
25013    next(xpp);
25014    parseElementClose(res);
25015    return res;
25016  }
25017
25018  protected boolean parseSearchParameterComponentComponentContent(int eventType, XmlPullParser xpp, SearchParameter.SearchParameterComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
25019    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
25020      res.setDefinitionElement(parseCanonical(xpp));
25021    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
25022      res.setExpressionElement(parseString(xpp));
25023    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
25024      return false;
25025    }
25026    return true;
25027  }
25028
25029  protected ServiceRequest parseServiceRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25030    ServiceRequest res = new ServiceRequest();
25031    parseResourceAttributes(xpp, res);
25032    next(xpp);
25033    int eventType = nextNoWhitespace(xpp);
25034    while (eventType != XmlPullParser.END_TAG) {
25035    if (!parseServiceRequestContent(eventType, xpp, res))
25036        unknownContent(xpp);
25037      eventType = nextNoWhitespace(xpp);
25038    }
25039    next(xpp);
25040    parseElementClose(res);
25041    return res;
25042  }
25043
25044  protected boolean parseServiceRequestContent(int eventType, XmlPullParser xpp, ServiceRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
25045    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
25046      res.getIdentifier().add(parseIdentifier(xpp));
25047    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
25048      res.getInstantiatesCanonical().add(parseCanonical(xpp));
25049    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
25050      res.getInstantiatesUri().add(parseUri(xpp));
25051    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
25052      res.getBasedOn().add(parseReference(xpp));
25053    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
25054      res.getReplaces().add(parseReference(xpp));
25055    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requisition")) {
25056      res.setRequisition(parseIdentifier(xpp));
25057    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
25058      res.setStatusElement(parseEnumeration(xpp, Enumerations.RequestStatus.NULL, new Enumerations.RequestStatusEnumFactory()));
25059    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
25060      res.setIntentElement(parseEnumeration(xpp, Enumerations.RequestIntent.NULL, new Enumerations.RequestIntentEnumFactory()));
25061    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
25062      res.getCategory().add(parseCodeableConcept(xpp));
25063    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
25064      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
25065    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
25066      res.setDoNotPerformElement(parseBoolean(xpp));
25067    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
25068      res.setCode(parseCodeableReference(xpp));
25069    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderDetail")) {
25070      res.getOrderDetail().add(parseServiceRequestOrderDetailComponent(xpp));
25071    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "quantity")) {
25072      res.setQuantity(parseType("quantity", xpp));
25073    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
25074      res.setSubject(parseReference(xpp));
25075    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
25076      res.getFocus().add(parseReference(xpp));
25077    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
25078      res.setEncounter(parseReference(xpp));
25079    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
25080      res.setOccurrence(parseType("occurrence", xpp));
25081    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
25082      res.setAsNeeded(parseType("asNeeded", xpp));
25083    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
25084      res.setAuthoredOnElement(parseDateTime(xpp));
25085    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
25086      res.setRequester(parseReference(xpp));
25087    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
25088      res.setPerformerType(parseCodeableConcept(xpp));
25089    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
25090      res.getPerformer().add(parseReference(xpp));
25091    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
25092      res.getLocation().add(parseCodeableReference(xpp));
25093    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
25094      res.getReason().add(parseCodeableReference(xpp));
25095    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
25096      res.getInsurance().add(parseReference(xpp));
25097    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
25098      res.getSupportingInfo().add(parseCodeableReference(xpp));
25099    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
25100      res.getSpecimen().add(parseReference(xpp));
25101    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
25102      res.getBodySite().add(parseCodeableConcept(xpp));
25103    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodyStructure")) {
25104      res.setBodyStructure(parseReference(xpp));
25105    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
25106      res.getNote().add(parseAnnotation(xpp));
25107    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
25108      res.getPatientInstruction().add(parseServiceRequestPatientInstructionComponent(xpp));
25109    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
25110      res.getRelevantHistory().add(parseReference(xpp));
25111    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
25112      return false;
25113    }
25114    return true;
25115  }
25116
25117  protected ServiceRequest.ServiceRequestOrderDetailComponent parseServiceRequestOrderDetailComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25118    ServiceRequest.ServiceRequestOrderDetailComponent res = new ServiceRequest.ServiceRequestOrderDetailComponent();
25119    parseElementAttributes(xpp, res);
25120    next(xpp);
25121    int eventType = nextNoWhitespace(xpp);
25122    while (eventType != XmlPullParser.END_TAG) {
25123    if (!parseServiceRequestOrderDetailComponentContent(eventType, xpp, res))
25124        unknownContent(xpp);
25125      eventType = nextNoWhitespace(xpp);
25126    }
25127    next(xpp);
25128    parseElementClose(res);
25129    return res;
25130  }
25131
25132  protected boolean parseServiceRequestOrderDetailComponentContent(int eventType, XmlPullParser xpp, ServiceRequest.ServiceRequestOrderDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
25133    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameterFocus")) {
25134      res.setParameterFocus(parseCodeableReference(xpp));
25135    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
25136      res.getParameter().add(parseServiceRequestOrderDetailParameterComponent(xpp));
25137    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
25138      return false;
25139    }
25140    return true;
25141  }
25142
25143  protected ServiceRequest.ServiceRequestOrderDetailParameterComponent parseServiceRequestOrderDetailParameterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25144    ServiceRequest.ServiceRequestOrderDetailParameterComponent res = new ServiceRequest.ServiceRequestOrderDetailParameterComponent();
25145    parseElementAttributes(xpp, res);
25146    next(xpp);
25147    int eventType = nextNoWhitespace(xpp);
25148    while (eventType != XmlPullParser.END_TAG) {
25149    if (!parseServiceRequestOrderDetailParameterComponentContent(eventType, xpp, res))
25150        unknownContent(xpp);
25151      eventType = nextNoWhitespace(xpp);
25152    }
25153    next(xpp);
25154    parseElementClose(res);
25155    return res;
25156  }
25157
25158  protected boolean parseServiceRequestOrderDetailParameterComponentContent(int eventType, XmlPullParser xpp, ServiceRequest.ServiceRequestOrderDetailParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
25159    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
25160      res.setCode(parseCodeableConcept(xpp));
25161    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
25162      res.setValue(parseType("value", xpp));
25163    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
25164      return false;
25165    }
25166    return true;
25167  }
25168
25169  protected ServiceRequest.ServiceRequestPatientInstructionComponent parseServiceRequestPatientInstructionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25170    ServiceRequest.ServiceRequestPatientInstructionComponent res = new ServiceRequest.ServiceRequestPatientInstructionComponent();
25171    parseElementAttributes(xpp, res);
25172    next(xpp);
25173    int eventType = nextNoWhitespace(xpp);
25174    while (eventType != XmlPullParser.END_TAG) {
25175    if (!parseServiceRequestPatientInstructionComponentContent(eventType, xpp, res))
25176        unknownContent(xpp);
25177      eventType = nextNoWhitespace(xpp);
25178    }
25179    next(xpp);
25180    parseElementClose(res);
25181    return res;
25182  }
25183
25184  protected boolean parseServiceRequestPatientInstructionComponentContent(int eventType, XmlPullParser xpp, ServiceRequest.ServiceRequestPatientInstructionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
25185    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "instruction")) {
25186      res.setInstruction(parseType("instruction", xpp));
25187    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
25188      return false;
25189    }
25190    return true;
25191  }
25192
25193  protected Slot parseSlot(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25194    Slot res = new Slot();
25195    parseResourceAttributes(xpp, res);
25196    next(xpp);
25197    int eventType = nextNoWhitespace(xpp);
25198    while (eventType != XmlPullParser.END_TAG) {
25199    if (!parseSlotContent(eventType, xpp, res))
25200        unknownContent(xpp);
25201      eventType = nextNoWhitespace(xpp);
25202    }
25203    next(xpp);
25204    parseElementClose(res);
25205    return res;
25206  }
25207
25208  protected boolean parseSlotContent(int eventType, XmlPullParser xpp, Slot res) throws XmlPullParserException, IOException, FHIRFormatError {
25209    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
25210      res.getIdentifier().add(parseIdentifier(xpp));
25211    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
25212      res.getServiceCategory().add(parseCodeableConcept(xpp));
25213    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
25214      res.getServiceType().add(parseCodeableReference(xpp));
25215    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
25216      res.getSpecialty().add(parseCodeableConcept(xpp));
25217    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
25218      res.getAppointmentType().add(parseCodeableConcept(xpp));
25219    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
25220      res.setSchedule(parseReference(xpp));
25221    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
25222      res.setStatusElement(parseEnumeration(xpp, Slot.SlotStatus.NULL, new Slot.SlotStatusEnumFactory()));
25223    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
25224      res.setStartElement(parseInstant(xpp));
25225    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
25226      res.setEndElement(parseInstant(xpp));
25227    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overbooked")) {
25228      res.setOverbookedElement(parseBoolean(xpp));
25229    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
25230      res.setCommentElement(parseString(xpp));
25231    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
25232      return false;
25233    }
25234    return true;
25235  }
25236
25237  protected Specimen parseSpecimen(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25238    Specimen res = new Specimen();
25239    parseResourceAttributes(xpp, res);
25240    next(xpp);
25241    int eventType = nextNoWhitespace(xpp);
25242    while (eventType != XmlPullParser.END_TAG) {
25243    if (!parseSpecimenContent(eventType, xpp, res))
25244        unknownContent(xpp);
25245      eventType = nextNoWhitespace(xpp);
25246    }
25247    next(xpp);
25248    parseElementClose(res);
25249    return res;
25250  }
25251
25252  protected boolean parseSpecimenContent(int eventType, XmlPullParser xpp, Specimen res) throws XmlPullParserException, IOException, FHIRFormatError {
25253    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
25254      res.getIdentifier().add(parseIdentifier(xpp));
25255    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accessionIdentifier")) {
25256      res.setAccessionIdentifier(parseIdentifier(xpp));
25257    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
25258      res.setStatusElement(parseEnumeration(xpp, Specimen.SpecimenStatus.NULL, new Specimen.SpecimenStatusEnumFactory()));
25259    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
25260      res.setType(parseCodeableConcept(xpp));
25261    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
25262      res.setSubject(parseReference(xpp));
25263    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receivedTime")) {
25264      res.setReceivedTimeElement(parseDateTime(xpp));
25265    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
25266      res.getParent().add(parseReference(xpp));
25267    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
25268      res.getRequest().add(parseReference(xpp));
25269    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("combined")) {
25270      res.setCombinedElement(parseEnumeration(xpp, Specimen.SpecimenCombined.NULL, new Specimen.SpecimenCombinedEnumFactory()));
25271    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
25272      res.getRole().add(parseCodeableConcept(xpp));
25273    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("feature")) {
25274      res.getFeature().add(parseSpecimenFeatureComponent(xpp));
25275    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
25276      res.setCollection(parseSpecimenCollectionComponent(xpp));
25277    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processing")) {
25278      res.getProcessing().add(parseSpecimenProcessingComponent(xpp));
25279    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
25280      res.getContainer().add(parseSpecimenContainerComponent(xpp));
25281    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
25282      res.getCondition().add(parseCodeableConcept(xpp));
25283    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
25284      res.getNote().add(parseAnnotation(xpp));
25285    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
25286      return false;
25287    }
25288    return true;
25289  }
25290
25291  protected Specimen.SpecimenFeatureComponent parseSpecimenFeatureComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25292    Specimen.SpecimenFeatureComponent res = new Specimen.SpecimenFeatureComponent();
25293    parseElementAttributes(xpp, res);
25294    next(xpp);
25295    int eventType = nextNoWhitespace(xpp);
25296    while (eventType != XmlPullParser.END_TAG) {
25297    if (!parseSpecimenFeatureComponentContent(eventType, xpp, res))
25298        unknownContent(xpp);
25299      eventType = nextNoWhitespace(xpp);
25300    }
25301    next(xpp);
25302    parseElementClose(res);
25303    return res;
25304  }
25305
25306  protected boolean parseSpecimenFeatureComponentContent(int eventType, XmlPullParser xpp, Specimen.SpecimenFeatureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
25307    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
25308      res.setType(parseCodeableConcept(xpp));
25309    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
25310      res.setDescriptionElement(parseString(xpp));
25311    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
25312      return false;
25313    }
25314    return true;
25315  }
25316
25317  protected Specimen.SpecimenCollectionComponent parseSpecimenCollectionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25318    Specimen.SpecimenCollectionComponent res = new Specimen.SpecimenCollectionComponent();
25319    parseElementAttributes(xpp, res);
25320    next(xpp);
25321    int eventType = nextNoWhitespace(xpp);
25322    while (eventType != XmlPullParser.END_TAG) {
25323    if (!parseSpecimenCollectionComponentContent(eventType, xpp, res))
25324        unknownContent(xpp);
25325      eventType = nextNoWhitespace(xpp);
25326    }
25327    next(xpp);
25328    parseElementClose(res);
25329    return res;
25330  }
25331
25332  protected boolean parseSpecimenCollectionComponentContent(int eventType, XmlPullParser xpp, Specimen.SpecimenCollectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
25333    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collector")) {
25334      res.setCollector(parseReference(xpp));
25335    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "collected")) {
25336      res.setCollected(parseType("collected", xpp));
25337    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
25338      res.setDuration(parseDuration(xpp));
25339    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
25340      res.setQuantity(parseQuantity(xpp));
25341    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
25342      res.setMethod(parseCodeableConcept(xpp));
25343    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
25344      res.setDevice(parseCodeableReference(xpp));
25345    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
25346      res.setProcedure(parseReference(xpp));
25347    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
25348      res.setBodySite(parseCodeableReference(xpp));
25349    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "fastingStatus")) {
25350      res.setFastingStatus(parseType("fastingStatus", xpp));
25351    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
25352      return false;
25353    }
25354    return true;
25355  }
25356
25357  protected Specimen.SpecimenProcessingComponent parseSpecimenProcessingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25358    Specimen.SpecimenProcessingComponent res = new Specimen.SpecimenProcessingComponent();
25359    parseElementAttributes(xpp, res);
25360    next(xpp);
25361    int eventType = nextNoWhitespace(xpp);
25362    while (eventType != XmlPullParser.END_TAG) {
25363    if (!parseSpecimenProcessingComponentContent(eventType, xpp, res))
25364        unknownContent(xpp);
25365      eventType = nextNoWhitespace(xpp);
25366    }
25367    next(xpp);
25368    parseElementClose(res);
25369    return res;
25370  }
25371
25372  protected boolean parseSpecimenProcessingComponentContent(int eventType, XmlPullParser xpp, Specimen.SpecimenProcessingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
25373    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
25374      res.setDescriptionElement(parseString(xpp));
25375    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
25376      res.setMethod(parseCodeableConcept(xpp));
25377    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
25378      res.getAdditive().add(parseReference(xpp));
25379    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
25380      res.setTime(parseType("time", xpp));
25381    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
25382      return false;
25383    }
25384    return true;
25385  }
25386
25387  protected Specimen.SpecimenContainerComponent parseSpecimenContainerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25388    Specimen.SpecimenContainerComponent res = new Specimen.SpecimenContainerComponent();
25389    parseElementAttributes(xpp, res);
25390    next(xpp);
25391    int eventType = nextNoWhitespace(xpp);
25392    while (eventType != XmlPullParser.END_TAG) {
25393    if (!parseSpecimenContainerComponentContent(eventType, xpp, res))
25394        unknownContent(xpp);
25395      eventType = nextNoWhitespace(xpp);
25396    }
25397    next(xpp);
25398    parseElementClose(res);
25399    return res;
25400  }
25401
25402  protected boolean parseSpecimenContainerComponentContent(int eventType, XmlPullParser xpp, Specimen.SpecimenContainerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
25403    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
25404      res.setDevice(parseReference(xpp));
25405    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
25406      res.setLocation(parseReference(xpp));
25407    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenQuantity")) {
25408      res.setSpecimenQuantity(parseQuantity(xpp));
25409    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
25410      return false;
25411    }
25412    return true;
25413  }
25414
25415  protected SpecimenDefinition parseSpecimenDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25416    SpecimenDefinition res = new SpecimenDefinition();
25417    parseResourceAttributes(xpp, res);
25418    next(xpp);
25419    int eventType = nextNoWhitespace(xpp);
25420    while (eventType != XmlPullParser.END_TAG) {
25421    if (!parseSpecimenDefinitionContent(eventType, xpp, res))
25422        unknownContent(xpp);
25423      eventType = nextNoWhitespace(xpp);
25424    }
25425    next(xpp);
25426    parseElementClose(res);
25427    return res;
25428  }
25429
25430  protected boolean parseSpecimenDefinitionContent(int eventType, XmlPullParser xpp, SpecimenDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
25431    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
25432      res.setUrlElement(parseUri(xpp));
25433    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
25434      res.setIdentifier(parseIdentifier(xpp));
25435    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
25436      res.setVersionElement(parseString(xpp));
25437    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
25438      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
25439    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
25440      res.setNameElement(parseString(xpp));
25441    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
25442      res.setTitleElement(parseString(xpp));
25443    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFromCanonical")) {
25444      res.getDerivedFromCanonical().add(parseCanonical(xpp));
25445    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFromUri")) {
25446      res.getDerivedFromUri().add(parseUri(xpp));
25447    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
25448      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
25449    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
25450      res.setExperimentalElement(parseBoolean(xpp));
25451    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
25452      res.setSubject(parseType("subject", xpp));
25453    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
25454      res.setDateElement(parseDateTime(xpp));
25455    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
25456      res.setPublisherElement(parseString(xpp));
25457    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
25458      res.getContact().add(parseContactDetail(xpp));
25459    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
25460      res.setDescriptionElement(parseMarkdown(xpp));
25461    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
25462      res.getUseContext().add(parseUsageContext(xpp));
25463    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
25464      res.getJurisdiction().add(parseCodeableConcept(xpp));
25465    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
25466      res.setPurposeElement(parseMarkdown(xpp));
25467    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
25468      res.setCopyrightElement(parseMarkdown(xpp));
25469    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
25470      res.setCopyrightLabelElement(parseString(xpp));
25471    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
25472      res.setApprovalDateElement(parseDate(xpp));
25473    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
25474      res.setLastReviewDateElement(parseDate(xpp));
25475    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
25476      res.setEffectivePeriod(parsePeriod(xpp));
25477    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeCollected")) {
25478      res.setTypeCollected(parseCodeableConcept(xpp));
25479    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientPreparation")) {
25480      res.getPatientPreparation().add(parseCodeableConcept(xpp));
25481    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeAspect")) {
25482      res.setTimeAspectElement(parseString(xpp));
25483    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
25484      res.getCollection().add(parseCodeableConcept(xpp));
25485    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeTested")) {
25486      res.getTypeTested().add(parseSpecimenDefinitionTypeTestedComponent(xpp));
25487    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
25488      return false;
25489    }
25490    return true;
25491  }
25492
25493  protected SpecimenDefinition.SpecimenDefinitionTypeTestedComponent parseSpecimenDefinitionTypeTestedComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25494    SpecimenDefinition.SpecimenDefinitionTypeTestedComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedComponent();
25495    parseElementAttributes(xpp, res);
25496    next(xpp);
25497    int eventType = nextNoWhitespace(xpp);
25498    while (eventType != XmlPullParser.END_TAG) {
25499    if (!parseSpecimenDefinitionTypeTestedComponentContent(eventType, xpp, res))
25500        unknownContent(xpp);
25501      eventType = nextNoWhitespace(xpp);
25502    }
25503    next(xpp);
25504    parseElementClose(res);
25505    return res;
25506  }
25507
25508  protected boolean parseSpecimenDefinitionTypeTestedComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition.SpecimenDefinitionTypeTestedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
25509    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDerived")) {
25510      res.setIsDerivedElement(parseBoolean(xpp));
25511    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
25512      res.setType(parseCodeableConcept(xpp));
25513    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preference")) {
25514      res.setPreferenceElement(parseEnumeration(xpp, SpecimenDefinition.SpecimenContainedPreference.NULL, new SpecimenDefinition.SpecimenContainedPreferenceEnumFactory()));
25515    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
25516      res.setContainer(parseSpecimenDefinitionTypeTestedContainerComponent(xpp));
25517    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
25518      res.setRequirementElement(parseMarkdown(xpp));
25519    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("retentionTime")) {
25520      res.setRetentionTime(parseDuration(xpp));
25521    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("singleUse")) {
25522      res.setSingleUseElement(parseBoolean(xpp));
25523    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rejectionCriterion")) {
25524      res.getRejectionCriterion().add(parseCodeableConcept(xpp));
25525    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("handling")) {
25526      res.getHandling().add(parseSpecimenDefinitionTypeTestedHandlingComponent(xpp));
25527    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("testingDestination")) {
25528      res.getTestingDestination().add(parseCodeableConcept(xpp));
25529    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
25530      return false;
25531    }
25532    return true;
25533  }
25534
25535  protected SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent parseSpecimenDefinitionTypeTestedContainerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25536    SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent();
25537    parseElementAttributes(xpp, res);
25538    next(xpp);
25539    int eventType = nextNoWhitespace(xpp);
25540    while (eventType != XmlPullParser.END_TAG) {
25541    if (!parseSpecimenDefinitionTypeTestedContainerComponentContent(eventType, xpp, res))
25542        unknownContent(xpp);
25543      eventType = nextNoWhitespace(xpp);
25544    }
25545    next(xpp);
25546    parseElementClose(res);
25547    return res;
25548  }
25549
25550  protected boolean parseSpecimenDefinitionTypeTestedContainerComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
25551    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
25552      res.setMaterial(parseCodeableConcept(xpp));
25553    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
25554      res.setType(parseCodeableConcept(xpp));
25555    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cap")) {
25556      res.setCap(parseCodeableConcept(xpp));
25557    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
25558      res.setDescriptionElement(parseMarkdown(xpp));
25559    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capacity")) {
25560      res.setCapacity(parseQuantity(xpp));
25561    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "minimumVolume")) {
25562      res.setMinimumVolume(parseType("minimumVolume", xpp));
25563    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
25564      res.getAdditive().add(parseSpecimenDefinitionTypeTestedContainerAdditiveComponent(xpp));
25565    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preparation")) {
25566      res.setPreparationElement(parseMarkdown(xpp));
25567    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
25568      return false;
25569    }
25570    return true;
25571  }
25572
25573  protected SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent parseSpecimenDefinitionTypeTestedContainerAdditiveComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25574    SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent();
25575    parseElementAttributes(xpp, res);
25576    next(xpp);
25577    int eventType = nextNoWhitespace(xpp);
25578    while (eventType != XmlPullParser.END_TAG) {
25579    if (!parseSpecimenDefinitionTypeTestedContainerAdditiveComponentContent(eventType, xpp, res))
25580        unknownContent(xpp);
25581      eventType = nextNoWhitespace(xpp);
25582    }
25583    next(xpp);
25584    parseElementClose(res);
25585    return res;
25586  }
25587
25588  protected boolean parseSpecimenDefinitionTypeTestedContainerAdditiveComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
25589    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "additive")) {
25590      res.setAdditive(parseType("additive", xpp));
25591    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
25592      return false;
25593    }
25594    return true;
25595  }
25596
25597  protected SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent parseSpecimenDefinitionTypeTestedHandlingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25598    SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent();
25599    parseElementAttributes(xpp, res);
25600    next(xpp);
25601    int eventType = nextNoWhitespace(xpp);
25602    while (eventType != XmlPullParser.END_TAG) {
25603    if (!parseSpecimenDefinitionTypeTestedHandlingComponentContent(eventType, xpp, res))
25604        unknownContent(xpp);
25605      eventType = nextNoWhitespace(xpp);
25606    }
25607    next(xpp);
25608    parseElementClose(res);
25609    return res;
25610  }
25611
25612  protected boolean parseSpecimenDefinitionTypeTestedHandlingComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
25613    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("temperatureQualifier")) {
25614      res.setTemperatureQualifier(parseCodeableConcept(xpp));
25615    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("temperatureRange")) {
25616      res.setTemperatureRange(parseRange(xpp));
25617    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDuration")) {
25618      res.setMaxDuration(parseDuration(xpp));
25619    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
25620      res.setInstructionElement(parseMarkdown(xpp));
25621    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
25622      return false;
25623    }
25624    return true;
25625  }
25626
25627  protected StructureDefinition parseStructureDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25628    StructureDefinition res = new StructureDefinition();
25629    parseResourceAttributes(xpp, res);
25630    next(xpp);
25631    int eventType = nextNoWhitespace(xpp);
25632    while (eventType != XmlPullParser.END_TAG) {
25633    if (!parseStructureDefinitionContent(eventType, xpp, res))
25634        unknownContent(xpp);
25635      eventType = nextNoWhitespace(xpp);
25636    }
25637    next(xpp);
25638    parseElementClose(res);
25639    return res;
25640  }
25641
25642  protected boolean parseStructureDefinitionContent(int eventType, XmlPullParser xpp, StructureDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
25643    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
25644      res.setUrlElement(parseUri(xpp));
25645    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
25646      res.getIdentifier().add(parseIdentifier(xpp));
25647    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
25648      res.setVersionElement(parseString(xpp));
25649    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
25650      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
25651    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
25652      res.setNameElement(parseString(xpp));
25653    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
25654      res.setTitleElement(parseString(xpp));
25655    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
25656      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
25657    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
25658      res.setExperimentalElement(parseBoolean(xpp));
25659    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
25660      res.setDateElement(parseDateTime(xpp));
25661    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
25662      res.setPublisherElement(parseString(xpp));
25663    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
25664      res.getContact().add(parseContactDetail(xpp));
25665    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
25666      res.setDescriptionElement(parseMarkdown(xpp));
25667    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
25668      res.getUseContext().add(parseUsageContext(xpp));
25669    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
25670      res.getJurisdiction().add(parseCodeableConcept(xpp));
25671    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
25672      res.setPurposeElement(parseMarkdown(xpp));
25673    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
25674      res.setCopyrightElement(parseMarkdown(xpp));
25675    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
25676      res.setCopyrightLabelElement(parseString(xpp));
25677    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("keyword")) {
25678      res.getKeyword().add(parseCoding(xpp));
25679    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
25680      res.setFhirVersionElement(parseEnumeration(xpp, Enumerations.FHIRVersion.NULL, new Enumerations.FHIRVersionEnumFactory()));
25681    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
25682      res.getMapping().add(parseStructureDefinitionMappingComponent(xpp));
25683    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
25684      res.setKindElement(parseEnumeration(xpp, StructureDefinition.StructureDefinitionKind.NULL, new StructureDefinition.StructureDefinitionKindEnumFactory()));
25685    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
25686      res.setAbstractElement(parseBoolean(xpp));
25687    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
25688      res.getContext().add(parseStructureDefinitionContextComponent(xpp));
25689    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextInvariant")) {
25690      res.getContextInvariant().add(parseString(xpp));
25691    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
25692      res.setTypeElement(parseUri(xpp));
25693    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseDefinition")) {
25694      res.setBaseDefinitionElement(parseCanonical(xpp));
25695    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivation")) {
25696      res.setDerivationElement(parseEnumeration(xpp, StructureDefinition.TypeDerivationRule.NULL, new StructureDefinition.TypeDerivationRuleEnumFactory()));
25697    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("snapshot")) {
25698      res.setSnapshot(parseStructureDefinitionSnapshotComponent(xpp));
25699    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("differential")) {
25700      res.setDifferential(parseStructureDefinitionDifferentialComponent(xpp));
25701    } else if (!parseCanonicalResourceContent(eventType, xpp, res)){ 
25702      return false;
25703    }
25704    return true;
25705  }
25706
25707  protected StructureDefinition.StructureDefinitionMappingComponent parseStructureDefinitionMappingComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25708    StructureDefinition.StructureDefinitionMappingComponent res = new StructureDefinition.StructureDefinitionMappingComponent();
25709    parseElementAttributes(xpp, res);
25710    next(xpp);
25711    int eventType = nextNoWhitespace(xpp);
25712    while (eventType != XmlPullParser.END_TAG) {
25713    if (!parseStructureDefinitionMappingComponentContent(eventType, xpp, res))
25714        unknownContent(xpp);
25715      eventType = nextNoWhitespace(xpp);
25716    }
25717    next(xpp);
25718    parseElementClose(res);
25719    return res;
25720  }
25721
25722  protected boolean parseStructureDefinitionMappingComponentContent(int eventType, XmlPullParser xpp, StructureDefinition.StructureDefinitionMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
25723    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
25724      res.setIdentityElement(parseId(xpp));
25725    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
25726      res.setUriElement(parseUri(xpp));
25727    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
25728      res.setNameElement(parseString(xpp));
25729    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
25730      res.setCommentElement(parseString(xpp));
25731    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
25732      return false;
25733    }
25734    return true;
25735  }
25736
25737  protected StructureDefinition.StructureDefinitionContextComponent parseStructureDefinitionContextComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25738    StructureDefinition.StructureDefinitionContextComponent res = new StructureDefinition.StructureDefinitionContextComponent();
25739    parseElementAttributes(xpp, res);
25740    next(xpp);
25741    int eventType = nextNoWhitespace(xpp);
25742    while (eventType != XmlPullParser.END_TAG) {
25743    if (!parseStructureDefinitionContextComponentContent(eventType, xpp, res))
25744        unknownContent(xpp);
25745      eventType = nextNoWhitespace(xpp);
25746    }
25747    next(xpp);
25748    parseElementClose(res);
25749    return res;
25750  }
25751
25752  protected boolean parseStructureDefinitionContextComponentContent(int eventType, XmlPullParser xpp, StructureDefinition.StructureDefinitionContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
25753    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
25754      res.setTypeElement(parseEnumeration(xpp, StructureDefinition.ExtensionContextType.NULL, new StructureDefinition.ExtensionContextTypeEnumFactory()));
25755    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
25756      res.setExpressionElement(parseString(xpp));
25757    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
25758      return false;
25759    }
25760    return true;
25761  }
25762
25763  protected StructureDefinition.StructureDefinitionSnapshotComponent parseStructureDefinitionSnapshotComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25764    StructureDefinition.StructureDefinitionSnapshotComponent res = new StructureDefinition.StructureDefinitionSnapshotComponent();
25765    parseElementAttributes(xpp, res);
25766    next(xpp);
25767    int eventType = nextNoWhitespace(xpp);
25768    while (eventType != XmlPullParser.END_TAG) {
25769    if (!parseStructureDefinitionSnapshotComponentContent(eventType, xpp, res))
25770        unknownContent(xpp);
25771      eventType = nextNoWhitespace(xpp);
25772    }
25773    next(xpp);
25774    parseElementClose(res);
25775    return res;
25776  }
25777
25778  protected boolean parseStructureDefinitionSnapshotComponentContent(int eventType, XmlPullParser xpp, StructureDefinition.StructureDefinitionSnapshotComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
25779    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
25780      res.getElement().add(parseElementDefinition(xpp));
25781    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
25782      return false;
25783    }
25784    return true;
25785  }
25786
25787  protected StructureDefinition.StructureDefinitionDifferentialComponent parseStructureDefinitionDifferentialComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25788    StructureDefinition.StructureDefinitionDifferentialComponent res = new StructureDefinition.StructureDefinitionDifferentialComponent();
25789    parseElementAttributes(xpp, res);
25790    next(xpp);
25791    int eventType = nextNoWhitespace(xpp);
25792    while (eventType != XmlPullParser.END_TAG) {
25793    if (!parseStructureDefinitionDifferentialComponentContent(eventType, xpp, res))
25794        unknownContent(xpp);
25795      eventType = nextNoWhitespace(xpp);
25796    }
25797    next(xpp);
25798    parseElementClose(res);
25799    return res;
25800  }
25801
25802  protected boolean parseStructureDefinitionDifferentialComponentContent(int eventType, XmlPullParser xpp, StructureDefinition.StructureDefinitionDifferentialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
25803    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
25804      res.getElement().add(parseElementDefinition(xpp));
25805    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
25806      return false;
25807    }
25808    return true;
25809  }
25810
25811  protected StructureMap parseStructureMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25812    StructureMap res = new StructureMap();
25813    parseResourceAttributes(xpp, res);
25814    next(xpp);
25815    int eventType = nextNoWhitespace(xpp);
25816    while (eventType != XmlPullParser.END_TAG) {
25817    if (!parseStructureMapContent(eventType, xpp, res))
25818        unknownContent(xpp);
25819      eventType = nextNoWhitespace(xpp);
25820    }
25821    next(xpp);
25822    parseElementClose(res);
25823    return res;
25824  }
25825
25826  protected boolean parseStructureMapContent(int eventType, XmlPullParser xpp, StructureMap res) throws XmlPullParserException, IOException, FHIRFormatError {
25827    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
25828      res.setUrlElement(parseUri(xpp));
25829    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
25830      res.getIdentifier().add(parseIdentifier(xpp));
25831    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
25832      res.setVersionElement(parseString(xpp));
25833    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
25834      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
25835    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
25836      res.setNameElement(parseString(xpp));
25837    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
25838      res.setTitleElement(parseString(xpp));
25839    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
25840      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
25841    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
25842      res.setExperimentalElement(parseBoolean(xpp));
25843    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
25844      res.setDateElement(parseDateTime(xpp));
25845    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
25846      res.setPublisherElement(parseString(xpp));
25847    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
25848      res.getContact().add(parseContactDetail(xpp));
25849    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
25850      res.setDescriptionElement(parseMarkdown(xpp));
25851    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
25852      res.getUseContext().add(parseUsageContext(xpp));
25853    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
25854      res.getJurisdiction().add(parseCodeableConcept(xpp));
25855    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
25856      res.setPurposeElement(parseMarkdown(xpp));
25857    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
25858      res.setCopyrightElement(parseMarkdown(xpp));
25859    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
25860      res.setCopyrightLabelElement(parseString(xpp));
25861    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structure")) {
25862      res.getStructure().add(parseStructureMapStructureComponent(xpp));
25863    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("import")) {
25864      res.getImport().add(parseCanonical(xpp));
25865    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("const")) {
25866      res.getConst().add(parseStructureMapConstComponent(xpp));
25867    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
25868      res.getGroup().add(parseStructureMapGroupComponent(xpp));
25869    } else if (!parseCanonicalResourceContent(eventType, xpp, res)){ 
25870      return false;
25871    }
25872    return true;
25873  }
25874
25875  protected StructureMap.StructureMapStructureComponent parseStructureMapStructureComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25876    StructureMap.StructureMapStructureComponent res = new StructureMap.StructureMapStructureComponent();
25877    parseElementAttributes(xpp, res);
25878    next(xpp);
25879    int eventType = nextNoWhitespace(xpp);
25880    while (eventType != XmlPullParser.END_TAG) {
25881    if (!parseStructureMapStructureComponentContent(eventType, xpp, res))
25882        unknownContent(xpp);
25883      eventType = nextNoWhitespace(xpp);
25884    }
25885    next(xpp);
25886    parseElementClose(res);
25887    return res;
25888  }
25889
25890  protected boolean parseStructureMapStructureComponentContent(int eventType, XmlPullParser xpp, StructureMap.StructureMapStructureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
25891    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
25892      res.setUrlElement(parseCanonical(xpp));
25893    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
25894      res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapModelMode.NULL, new StructureMap.StructureMapModelModeEnumFactory()));
25895    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
25896      res.setAliasElement(parseString(xpp));
25897    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
25898      res.setDocumentationElement(parseString(xpp));
25899    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
25900      return false;
25901    }
25902    return true;
25903  }
25904
25905  protected StructureMap.StructureMapConstComponent parseStructureMapConstComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25906    StructureMap.StructureMapConstComponent res = new StructureMap.StructureMapConstComponent();
25907    parseElementAttributes(xpp, res);
25908    next(xpp);
25909    int eventType = nextNoWhitespace(xpp);
25910    while (eventType != XmlPullParser.END_TAG) {
25911    if (!parseStructureMapConstComponentContent(eventType, xpp, res))
25912        unknownContent(xpp);
25913      eventType = nextNoWhitespace(xpp);
25914    }
25915    next(xpp);
25916    parseElementClose(res);
25917    return res;
25918  }
25919
25920  protected boolean parseStructureMapConstComponentContent(int eventType, XmlPullParser xpp, StructureMap.StructureMapConstComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
25921    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
25922      res.setNameElement(parseId(xpp));
25923    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
25924      res.setValueElement(parseString(xpp));
25925    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
25926      return false;
25927    }
25928    return true;
25929  }
25930
25931  protected StructureMap.StructureMapGroupComponent parseStructureMapGroupComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25932    StructureMap.StructureMapGroupComponent res = new StructureMap.StructureMapGroupComponent();
25933    parseElementAttributes(xpp, res);
25934    next(xpp);
25935    int eventType = nextNoWhitespace(xpp);
25936    while (eventType != XmlPullParser.END_TAG) {
25937    if (!parseStructureMapGroupComponentContent(eventType, xpp, res))
25938        unknownContent(xpp);
25939      eventType = nextNoWhitespace(xpp);
25940    }
25941    next(xpp);
25942    parseElementClose(res);
25943    return res;
25944  }
25945
25946  protected boolean parseStructureMapGroupComponentContent(int eventType, XmlPullParser xpp, StructureMap.StructureMapGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
25947    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
25948      res.setNameElement(parseId(xpp));
25949    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extends")) {
25950      res.setExtendsElement(parseId(xpp));
25951    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeMode")) {
25952      res.setTypeModeElement(parseEnumeration(xpp, StructureMap.StructureMapGroupTypeMode.NULL, new StructureMap.StructureMapGroupTypeModeEnumFactory()));
25953    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
25954      res.setDocumentationElement(parseString(xpp));
25955    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
25956      res.getInput().add(parseStructureMapGroupInputComponent(xpp));
25957    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
25958      res.getRule().add(parseStructureMapGroupRuleComponent(xpp));
25959    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
25960      return false;
25961    }
25962    return true;
25963  }
25964
25965  protected StructureMap.StructureMapGroupInputComponent parseStructureMapGroupInputComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25966    StructureMap.StructureMapGroupInputComponent res = new StructureMap.StructureMapGroupInputComponent();
25967    parseElementAttributes(xpp, res);
25968    next(xpp);
25969    int eventType = nextNoWhitespace(xpp);
25970    while (eventType != XmlPullParser.END_TAG) {
25971    if (!parseStructureMapGroupInputComponentContent(eventType, xpp, res))
25972        unknownContent(xpp);
25973      eventType = nextNoWhitespace(xpp);
25974    }
25975    next(xpp);
25976    parseElementClose(res);
25977    return res;
25978  }
25979
25980  protected boolean parseStructureMapGroupInputComponentContent(int eventType, XmlPullParser xpp, StructureMap.StructureMapGroupInputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
25981    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
25982      res.setNameElement(parseId(xpp));
25983    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
25984      res.setTypeElement(parseString(xpp));
25985    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
25986      res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapInputMode.NULL, new StructureMap.StructureMapInputModeEnumFactory()));
25987    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
25988      res.setDocumentationElement(parseString(xpp));
25989    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
25990      return false;
25991    }
25992    return true;
25993  }
25994
25995  protected StructureMap.StructureMapGroupRuleComponent parseStructureMapGroupRuleComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
25996    StructureMap.StructureMapGroupRuleComponent res = new StructureMap.StructureMapGroupRuleComponent();
25997    parseElementAttributes(xpp, res);
25998    next(xpp);
25999    int eventType = nextNoWhitespace(xpp);
26000    while (eventType != XmlPullParser.END_TAG) {
26001    if (!parseStructureMapGroupRuleComponentContent(eventType, xpp, res))
26002        unknownContent(xpp);
26003      eventType = nextNoWhitespace(xpp);
26004    }
26005    next(xpp);
26006    parseElementClose(res);
26007    return res;
26008  }
26009
26010  protected boolean parseStructureMapGroupRuleComponentContent(int eventType, XmlPullParser xpp, StructureMap.StructureMapGroupRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26011    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
26012      res.setNameElement(parseId(xpp));
26013    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
26014      res.getSource().add(parseStructureMapGroupRuleSourceComponent(xpp));
26015    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
26016      res.getTarget().add(parseStructureMapGroupRuleTargetComponent(xpp));
26017    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
26018      res.getRule().add(parseStructureMapGroupRuleComponent(xpp));
26019    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
26020      res.getDependent().add(parseStructureMapGroupRuleDependentComponent(xpp));
26021    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
26022      res.setDocumentationElement(parseString(xpp));
26023    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26024      return false;
26025    }
26026    return true;
26027  }
26028
26029  protected StructureMap.StructureMapGroupRuleSourceComponent parseStructureMapGroupRuleSourceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26030    StructureMap.StructureMapGroupRuleSourceComponent res = new StructureMap.StructureMapGroupRuleSourceComponent();
26031    parseElementAttributes(xpp, res);
26032    next(xpp);
26033    int eventType = nextNoWhitespace(xpp);
26034    while (eventType != XmlPullParser.END_TAG) {
26035    if (!parseStructureMapGroupRuleSourceComponentContent(eventType, xpp, res))
26036        unknownContent(xpp);
26037      eventType = nextNoWhitespace(xpp);
26038    }
26039    next(xpp);
26040    parseElementClose(res);
26041    return res;
26042  }
26043
26044  protected boolean parseStructureMapGroupRuleSourceComponentContent(int eventType, XmlPullParser xpp, StructureMap.StructureMapGroupRuleSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26045    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
26046      res.setContextElement(parseId(xpp));
26047    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
26048      res.setMinElement(parseInteger(xpp));
26049    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
26050      res.setMaxElement(parseString(xpp));
26051    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
26052      res.setTypeElement(parseString(xpp));
26053    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("defaultValue")) {
26054      res.setDefaultValueElement(parseString(xpp));
26055    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
26056      res.setElementElement(parseString(xpp));
26057    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
26058      res.setListModeElement(parseEnumeration(xpp, StructureMap.StructureMapSourceListMode.NULL, new StructureMap.StructureMapSourceListModeEnumFactory()));
26059    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
26060      res.setVariableElement(parseId(xpp));
26061    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
26062      res.setConditionElement(parseString(xpp));
26063    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("check")) {
26064      res.setCheckElement(parseString(xpp));
26065    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("logMessage")) {
26066      res.setLogMessageElement(parseString(xpp));
26067    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26068      return false;
26069    }
26070    return true;
26071  }
26072
26073  protected StructureMap.StructureMapGroupRuleTargetComponent parseStructureMapGroupRuleTargetComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26074    StructureMap.StructureMapGroupRuleTargetComponent res = new StructureMap.StructureMapGroupRuleTargetComponent();
26075    parseElementAttributes(xpp, res);
26076    next(xpp);
26077    int eventType = nextNoWhitespace(xpp);
26078    while (eventType != XmlPullParser.END_TAG) {
26079    if (!parseStructureMapGroupRuleTargetComponentContent(eventType, xpp, res))
26080        unknownContent(xpp);
26081      eventType = nextNoWhitespace(xpp);
26082    }
26083    next(xpp);
26084    parseElementClose(res);
26085    return res;
26086  }
26087
26088  protected boolean parseStructureMapGroupRuleTargetComponentContent(int eventType, XmlPullParser xpp, StructureMap.StructureMapGroupRuleTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26089    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
26090      res.setContextElement(parseString(xpp));
26091    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
26092      res.setElementElement(parseString(xpp));
26093    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
26094      res.setVariableElement(parseId(xpp));
26095    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
26096      res.getListMode().add(parseEnumeration(xpp, StructureMap.StructureMapTargetListMode.NULL, new StructureMap.StructureMapTargetListModeEnumFactory()));
26097    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listRuleId")) {
26098      res.setListRuleIdElement(parseId(xpp));
26099    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
26100      res.setTransformElement(parseEnumeration(xpp, StructureMap.StructureMapTransform.NULL, new StructureMap.StructureMapTransformEnumFactory()));
26101    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
26102      res.getParameter().add(parseStructureMapGroupRuleTargetParameterComponent(xpp));
26103    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26104      return false;
26105    }
26106    return true;
26107  }
26108
26109  protected StructureMap.StructureMapGroupRuleTargetParameterComponent parseStructureMapGroupRuleTargetParameterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26110    StructureMap.StructureMapGroupRuleTargetParameterComponent res = new StructureMap.StructureMapGroupRuleTargetParameterComponent();
26111    parseElementAttributes(xpp, res);
26112    next(xpp);
26113    int eventType = nextNoWhitespace(xpp);
26114    while (eventType != XmlPullParser.END_TAG) {
26115    if (!parseStructureMapGroupRuleTargetParameterComponentContent(eventType, xpp, res))
26116        unknownContent(xpp);
26117      eventType = nextNoWhitespace(xpp);
26118    }
26119    next(xpp);
26120    parseElementClose(res);
26121    return res;
26122  }
26123
26124  protected boolean parseStructureMapGroupRuleTargetParameterComponentContent(int eventType, XmlPullParser xpp, StructureMap.StructureMapGroupRuleTargetParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26125    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
26126      res.setValue(parseType("value", xpp));
26127    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26128      return false;
26129    }
26130    return true;
26131  }
26132
26133  protected StructureMap.StructureMapGroupRuleDependentComponent parseStructureMapGroupRuleDependentComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26134    StructureMap.StructureMapGroupRuleDependentComponent res = new StructureMap.StructureMapGroupRuleDependentComponent();
26135    parseElementAttributes(xpp, res);
26136    next(xpp);
26137    int eventType = nextNoWhitespace(xpp);
26138    while (eventType != XmlPullParser.END_TAG) {
26139    if (!parseStructureMapGroupRuleDependentComponentContent(eventType, xpp, res))
26140        unknownContent(xpp);
26141      eventType = nextNoWhitespace(xpp);
26142    }
26143    next(xpp);
26144    parseElementClose(res);
26145    return res;
26146  }
26147
26148  protected boolean parseStructureMapGroupRuleDependentComponentContent(int eventType, XmlPullParser xpp, StructureMap.StructureMapGroupRuleDependentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26149    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
26150      res.setNameElement(parseId(xpp));
26151    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
26152      res.getParameter().add(parseStructureMapGroupRuleTargetParameterComponent(xpp));
26153    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26154      return false;
26155    }
26156    return true;
26157  }
26158
26159  protected Subscription parseSubscription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26160    Subscription res = new Subscription();
26161    parseResourceAttributes(xpp, res);
26162    next(xpp);
26163    int eventType = nextNoWhitespace(xpp);
26164    while (eventType != XmlPullParser.END_TAG) {
26165    if (!parseSubscriptionContent(eventType, xpp, res))
26166        unknownContent(xpp);
26167      eventType = nextNoWhitespace(xpp);
26168    }
26169    next(xpp);
26170    parseElementClose(res);
26171    return res;
26172  }
26173
26174  protected boolean parseSubscriptionContent(int eventType, XmlPullParser xpp, Subscription res) throws XmlPullParserException, IOException, FHIRFormatError {
26175    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
26176      res.getIdentifier().add(parseIdentifier(xpp));
26177    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
26178      res.setNameElement(parseString(xpp));
26179    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
26180      res.setStatusElement(parseEnumeration(xpp, Enumerations.SubscriptionStatusCodes.NULL, new Enumerations.SubscriptionStatusCodesEnumFactory()));
26181    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
26182      res.setTopicElement(parseCanonical(xpp));
26183    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
26184      res.getContact().add(parseContactPoint(xpp));
26185    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
26186      res.setEndElement(parseInstant(xpp));
26187    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingEntity")) {
26188      res.setManagingEntity(parseReference(xpp));
26189    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
26190      res.setReasonElement(parseString(xpp));
26191    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filterBy")) {
26192      res.getFilterBy().add(parseSubscriptionFilterByComponent(xpp));
26193    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("channelType")) {
26194      res.setChannelType(parseCoding(xpp));
26195    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
26196      res.setEndpointElement(parseUrl(xpp));
26197    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
26198      res.getParameter().add(parseSubscriptionParameterComponent(xpp));
26199    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("heartbeatPeriod")) {
26200      res.setHeartbeatPeriodElement(parseUnsignedInt(xpp));
26201    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeout")) {
26202      res.setTimeoutElement(parseUnsignedInt(xpp));
26203    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
26204      res.setContentTypeElement(parseCode(xpp));
26205    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
26206      res.setContentElement(parseEnumeration(xpp, Subscription.SubscriptionPayloadContent.NULL, new Subscription.SubscriptionPayloadContentEnumFactory()));
26207    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxCount")) {
26208      res.setMaxCountElement(parsePositiveInt(xpp));
26209    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
26210      return false;
26211    }
26212    return true;
26213  }
26214
26215  protected Subscription.SubscriptionFilterByComponent parseSubscriptionFilterByComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26216    Subscription.SubscriptionFilterByComponent res = new Subscription.SubscriptionFilterByComponent();
26217    parseElementAttributes(xpp, res);
26218    next(xpp);
26219    int eventType = nextNoWhitespace(xpp);
26220    while (eventType != XmlPullParser.END_TAG) {
26221    if (!parseSubscriptionFilterByComponentContent(eventType, xpp, res))
26222        unknownContent(xpp);
26223      eventType = nextNoWhitespace(xpp);
26224    }
26225    next(xpp);
26226    parseElementClose(res);
26227    return res;
26228  }
26229
26230  protected boolean parseSubscriptionFilterByComponentContent(int eventType, XmlPullParser xpp, Subscription.SubscriptionFilterByComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26231    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceType")) {
26232      res.setResourceTypeElement(parseUri(xpp));
26233    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filterParameter")) {
26234      res.setFilterParameterElement(parseString(xpp));
26235    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
26236      res.setComparatorElement(parseEnumeration(xpp, Enumerations.SearchComparator.NULL, new Enumerations.SearchComparatorEnumFactory()));
26237    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
26238      res.setModifierElement(parseEnumeration(xpp, Enumerations.SearchModifierCode.NULL, new Enumerations.SearchModifierCodeEnumFactory()));
26239    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
26240      res.setValueElement(parseString(xpp));
26241    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26242      return false;
26243    }
26244    return true;
26245  }
26246
26247  protected Subscription.SubscriptionParameterComponent parseSubscriptionParameterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26248    Subscription.SubscriptionParameterComponent res = new Subscription.SubscriptionParameterComponent();
26249    parseElementAttributes(xpp, res);
26250    next(xpp);
26251    int eventType = nextNoWhitespace(xpp);
26252    while (eventType != XmlPullParser.END_TAG) {
26253    if (!parseSubscriptionParameterComponentContent(eventType, xpp, res))
26254        unknownContent(xpp);
26255      eventType = nextNoWhitespace(xpp);
26256    }
26257    next(xpp);
26258    parseElementClose(res);
26259    return res;
26260  }
26261
26262  protected boolean parseSubscriptionParameterComponentContent(int eventType, XmlPullParser xpp, Subscription.SubscriptionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26263    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
26264      res.setNameElement(parseString(xpp));
26265    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
26266      res.setValueElement(parseString(xpp));
26267    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26268      return false;
26269    }
26270    return true;
26271  }
26272
26273  protected SubscriptionStatus parseSubscriptionStatus(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26274    SubscriptionStatus res = new SubscriptionStatus();
26275    parseResourceAttributes(xpp, res);
26276    next(xpp);
26277    int eventType = nextNoWhitespace(xpp);
26278    while (eventType != XmlPullParser.END_TAG) {
26279    if (!parseSubscriptionStatusContent(eventType, xpp, res))
26280        unknownContent(xpp);
26281      eventType = nextNoWhitespace(xpp);
26282    }
26283    next(xpp);
26284    parseElementClose(res);
26285    return res;
26286  }
26287
26288  protected boolean parseSubscriptionStatusContent(int eventType, XmlPullParser xpp, SubscriptionStatus res) throws XmlPullParserException, IOException, FHIRFormatError {
26289    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
26290      res.setStatusElement(parseEnumeration(xpp, Enumerations.SubscriptionStatusCodes.NULL, new Enumerations.SubscriptionStatusCodesEnumFactory()));
26291    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
26292      res.setTypeElement(parseEnumeration(xpp, SubscriptionStatus.SubscriptionNotificationType.NULL, new SubscriptionStatus.SubscriptionNotificationTypeEnumFactory()));
26293    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventsSinceSubscriptionStart")) {
26294      res.setEventsSinceSubscriptionStartElement(parseInteger64(xpp));
26295    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notificationEvent")) {
26296      res.getNotificationEvent().add(parseSubscriptionStatusNotificationEventComponent(xpp));
26297    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscription")) {
26298      res.setSubscription(parseReference(xpp));
26299    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
26300      res.setTopicElement(parseCanonical(xpp));
26301    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
26302      res.getError().add(parseCodeableConcept(xpp));
26303    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
26304      return false;
26305    }
26306    return true;
26307  }
26308
26309  protected SubscriptionStatus.SubscriptionStatusNotificationEventComponent parseSubscriptionStatusNotificationEventComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26310    SubscriptionStatus.SubscriptionStatusNotificationEventComponent res = new SubscriptionStatus.SubscriptionStatusNotificationEventComponent();
26311    parseElementAttributes(xpp, res);
26312    next(xpp);
26313    int eventType = nextNoWhitespace(xpp);
26314    while (eventType != XmlPullParser.END_TAG) {
26315    if (!parseSubscriptionStatusNotificationEventComponentContent(eventType, xpp, res))
26316        unknownContent(xpp);
26317      eventType = nextNoWhitespace(xpp);
26318    }
26319    next(xpp);
26320    parseElementClose(res);
26321    return res;
26322  }
26323
26324  protected boolean parseSubscriptionStatusNotificationEventComponentContent(int eventType, XmlPullParser xpp, SubscriptionStatus.SubscriptionStatusNotificationEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26325    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventNumber")) {
26326      res.setEventNumberElement(parseInteger64(xpp));
26327    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
26328      res.setTimestampElement(parseInstant(xpp));
26329    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
26330      res.setFocus(parseReference(xpp));
26331    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalContext")) {
26332      res.getAdditionalContext().add(parseReference(xpp));
26333    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26334      return false;
26335    }
26336    return true;
26337  }
26338
26339  protected SubscriptionTopic parseSubscriptionTopic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26340    SubscriptionTopic res = new SubscriptionTopic();
26341    parseResourceAttributes(xpp, res);
26342    next(xpp);
26343    int eventType = nextNoWhitespace(xpp);
26344    while (eventType != XmlPullParser.END_TAG) {
26345    if (!parseSubscriptionTopicContent(eventType, xpp, res))
26346        unknownContent(xpp);
26347      eventType = nextNoWhitespace(xpp);
26348    }
26349    next(xpp);
26350    parseElementClose(res);
26351    return res;
26352  }
26353
26354  protected boolean parseSubscriptionTopicContent(int eventType, XmlPullParser xpp, SubscriptionTopic res) throws XmlPullParserException, IOException, FHIRFormatError {
26355    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
26356      res.setUrlElement(parseUri(xpp));
26357    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
26358      res.getIdentifier().add(parseIdentifier(xpp));
26359    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
26360      res.setVersionElement(parseString(xpp));
26361    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
26362      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
26363    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
26364      res.setNameElement(parseString(xpp));
26365    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
26366      res.setTitleElement(parseString(xpp));
26367    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
26368      res.getDerivedFrom().add(parseCanonical(xpp));
26369    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
26370      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
26371    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
26372      res.setExperimentalElement(parseBoolean(xpp));
26373    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
26374      res.setDateElement(parseDateTime(xpp));
26375    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
26376      res.setPublisherElement(parseString(xpp));
26377    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
26378      res.getContact().add(parseContactDetail(xpp));
26379    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
26380      res.setDescriptionElement(parseMarkdown(xpp));
26381    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
26382      res.getUseContext().add(parseUsageContext(xpp));
26383    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
26384      res.getJurisdiction().add(parseCodeableConcept(xpp));
26385    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
26386      res.setPurposeElement(parseMarkdown(xpp));
26387    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
26388      res.setCopyrightElement(parseMarkdown(xpp));
26389    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
26390      res.setCopyrightLabelElement(parseString(xpp));
26391    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
26392      res.setApprovalDateElement(parseDate(xpp));
26393    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
26394      res.setLastReviewDateElement(parseDate(xpp));
26395    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
26396      res.setEffectivePeriod(parsePeriod(xpp));
26397    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceTrigger")) {
26398      res.getResourceTrigger().add(parseSubscriptionTopicResourceTriggerComponent(xpp));
26399    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventTrigger")) {
26400      res.getEventTrigger().add(parseSubscriptionTopicEventTriggerComponent(xpp));
26401    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("canFilterBy")) {
26402      res.getCanFilterBy().add(parseSubscriptionTopicCanFilterByComponent(xpp));
26403    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notificationShape")) {
26404      res.getNotificationShape().add(parseSubscriptionTopicNotificationShapeComponent(xpp));
26405    } else if (!parseCanonicalResourceContent(eventType, xpp, res)){ 
26406      return false;
26407    }
26408    return true;
26409  }
26410
26411  protected SubscriptionTopic.SubscriptionTopicResourceTriggerComponent parseSubscriptionTopicResourceTriggerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26412    SubscriptionTopic.SubscriptionTopicResourceTriggerComponent res = new SubscriptionTopic.SubscriptionTopicResourceTriggerComponent();
26413    parseElementAttributes(xpp, res);
26414    next(xpp);
26415    int eventType = nextNoWhitespace(xpp);
26416    while (eventType != XmlPullParser.END_TAG) {
26417    if (!parseSubscriptionTopicResourceTriggerComponentContent(eventType, xpp, res))
26418        unknownContent(xpp);
26419      eventType = nextNoWhitespace(xpp);
26420    }
26421    next(xpp);
26422    parseElementClose(res);
26423    return res;
26424  }
26425
26426  protected boolean parseSubscriptionTopicResourceTriggerComponentContent(int eventType, XmlPullParser xpp, SubscriptionTopic.SubscriptionTopicResourceTriggerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26427    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
26428      res.setDescriptionElement(parseMarkdown(xpp));
26429    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
26430      res.setResourceElement(parseUri(xpp));
26431    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportedInteraction")) {
26432      res.getSupportedInteraction().add(parseEnumeration(xpp, SubscriptionTopic.InteractionTrigger.NULL, new SubscriptionTopic.InteractionTriggerEnumFactory()));
26433    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("queryCriteria")) {
26434      res.setQueryCriteria(parseSubscriptionTopicResourceTriggerQueryCriteriaComponent(xpp));
26435    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirPathCriteria")) {
26436      res.setFhirPathCriteriaElement(parseString(xpp));
26437    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26438      return false;
26439    }
26440    return true;
26441  }
26442
26443  protected SubscriptionTopic.SubscriptionTopicResourceTriggerQueryCriteriaComponent parseSubscriptionTopicResourceTriggerQueryCriteriaComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26444    SubscriptionTopic.SubscriptionTopicResourceTriggerQueryCriteriaComponent res = new SubscriptionTopic.SubscriptionTopicResourceTriggerQueryCriteriaComponent();
26445    parseElementAttributes(xpp, res);
26446    next(xpp);
26447    int eventType = nextNoWhitespace(xpp);
26448    while (eventType != XmlPullParser.END_TAG) {
26449    if (!parseSubscriptionTopicResourceTriggerQueryCriteriaComponentContent(eventType, xpp, res))
26450        unknownContent(xpp);
26451      eventType = nextNoWhitespace(xpp);
26452    }
26453    next(xpp);
26454    parseElementClose(res);
26455    return res;
26456  }
26457
26458  protected boolean parseSubscriptionTopicResourceTriggerQueryCriteriaComponentContent(int eventType, XmlPullParser xpp, SubscriptionTopic.SubscriptionTopicResourceTriggerQueryCriteriaComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26459    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("previous")) {
26460      res.setPreviousElement(parseString(xpp));
26461    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultForCreate")) {
26462      res.setResultForCreateElement(parseEnumeration(xpp, SubscriptionTopic.CriteriaNotExistsBehavior.NULL, new SubscriptionTopic.CriteriaNotExistsBehaviorEnumFactory()));
26463    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("current")) {
26464      res.setCurrentElement(parseString(xpp));
26465    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultForDelete")) {
26466      res.setResultForDeleteElement(parseEnumeration(xpp, SubscriptionTopic.CriteriaNotExistsBehavior.NULL, new SubscriptionTopic.CriteriaNotExistsBehaviorEnumFactory()));
26467    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requireBoth")) {
26468      res.setRequireBothElement(parseBoolean(xpp));
26469    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26470      return false;
26471    }
26472    return true;
26473  }
26474
26475  protected SubscriptionTopic.SubscriptionTopicEventTriggerComponent parseSubscriptionTopicEventTriggerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26476    SubscriptionTopic.SubscriptionTopicEventTriggerComponent res = new SubscriptionTopic.SubscriptionTopicEventTriggerComponent();
26477    parseElementAttributes(xpp, res);
26478    next(xpp);
26479    int eventType = nextNoWhitespace(xpp);
26480    while (eventType != XmlPullParser.END_TAG) {
26481    if (!parseSubscriptionTopicEventTriggerComponentContent(eventType, xpp, res))
26482        unknownContent(xpp);
26483      eventType = nextNoWhitespace(xpp);
26484    }
26485    next(xpp);
26486    parseElementClose(res);
26487    return res;
26488  }
26489
26490  protected boolean parseSubscriptionTopicEventTriggerComponentContent(int eventType, XmlPullParser xpp, SubscriptionTopic.SubscriptionTopicEventTriggerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26491    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
26492      res.setDescriptionElement(parseMarkdown(xpp));
26493    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
26494      res.setEvent(parseCodeableConcept(xpp));
26495    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
26496      res.setResourceElement(parseUri(xpp));
26497    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26498      return false;
26499    }
26500    return true;
26501  }
26502
26503  protected SubscriptionTopic.SubscriptionTopicCanFilterByComponent parseSubscriptionTopicCanFilterByComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26504    SubscriptionTopic.SubscriptionTopicCanFilterByComponent res = new SubscriptionTopic.SubscriptionTopicCanFilterByComponent();
26505    parseElementAttributes(xpp, res);
26506    next(xpp);
26507    int eventType = nextNoWhitespace(xpp);
26508    while (eventType != XmlPullParser.END_TAG) {
26509    if (!parseSubscriptionTopicCanFilterByComponentContent(eventType, xpp, res))
26510        unknownContent(xpp);
26511      eventType = nextNoWhitespace(xpp);
26512    }
26513    next(xpp);
26514    parseElementClose(res);
26515    return res;
26516  }
26517
26518  protected boolean parseSubscriptionTopicCanFilterByComponentContent(int eventType, XmlPullParser xpp, SubscriptionTopic.SubscriptionTopicCanFilterByComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26519    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
26520      res.setDescriptionElement(parseMarkdown(xpp));
26521    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
26522      res.setResourceElement(parseUri(xpp));
26523    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filterParameter")) {
26524      res.setFilterParameterElement(parseString(xpp));
26525    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filterDefinition")) {
26526      res.setFilterDefinitionElement(parseUri(xpp));
26527    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
26528      res.getComparator().add(parseEnumeration(xpp, Enumerations.SearchComparator.NULL, new Enumerations.SearchComparatorEnumFactory()));
26529    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
26530      res.getModifier().add(parseEnumeration(xpp, Enumerations.SearchModifierCode.NULL, new Enumerations.SearchModifierCodeEnumFactory()));
26531    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26532      return false;
26533    }
26534    return true;
26535  }
26536
26537  protected SubscriptionTopic.SubscriptionTopicNotificationShapeComponent parseSubscriptionTopicNotificationShapeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26538    SubscriptionTopic.SubscriptionTopicNotificationShapeComponent res = new SubscriptionTopic.SubscriptionTopicNotificationShapeComponent();
26539    parseElementAttributes(xpp, res);
26540    next(xpp);
26541    int eventType = nextNoWhitespace(xpp);
26542    while (eventType != XmlPullParser.END_TAG) {
26543    if (!parseSubscriptionTopicNotificationShapeComponentContent(eventType, xpp, res))
26544        unknownContent(xpp);
26545      eventType = nextNoWhitespace(xpp);
26546    }
26547    next(xpp);
26548    parseElementClose(res);
26549    return res;
26550  }
26551
26552  protected boolean parseSubscriptionTopicNotificationShapeComponentContent(int eventType, XmlPullParser xpp, SubscriptionTopic.SubscriptionTopicNotificationShapeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26553    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
26554      res.setResourceElement(parseUri(xpp));
26555    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
26556      res.getInclude().add(parseString(xpp));
26557    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revInclude")) {
26558      res.getRevInclude().add(parseString(xpp));
26559    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26560      return false;
26561    }
26562    return true;
26563  }
26564
26565  protected Substance parseSubstance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26566    Substance res = new Substance();
26567    parseResourceAttributes(xpp, res);
26568    next(xpp);
26569    int eventType = nextNoWhitespace(xpp);
26570    while (eventType != XmlPullParser.END_TAG) {
26571    if (!parseSubstanceContent(eventType, xpp, res))
26572        unknownContent(xpp);
26573      eventType = nextNoWhitespace(xpp);
26574    }
26575    next(xpp);
26576    parseElementClose(res);
26577    return res;
26578  }
26579
26580  protected boolean parseSubstanceContent(int eventType, XmlPullParser xpp, Substance res) throws XmlPullParserException, IOException, FHIRFormatError {
26581    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
26582      res.getIdentifier().add(parseIdentifier(xpp));
26583    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
26584      res.setInstanceElement(parseBoolean(xpp));
26585    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
26586      res.setStatusElement(parseEnumeration(xpp, Substance.FHIRSubstanceStatus.NULL, new Substance.FHIRSubstanceStatusEnumFactory()));
26587    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
26588      res.getCategory().add(parseCodeableConcept(xpp));
26589    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
26590      res.setCode(parseCodeableReference(xpp));
26591    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
26592      res.setDescriptionElement(parseMarkdown(xpp));
26593    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expiry")) {
26594      res.setExpiryElement(parseDateTime(xpp));
26595    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
26596      res.setQuantity(parseQuantity(xpp));
26597    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
26598      res.getIngredient().add(parseSubstanceIngredientComponent(xpp));
26599    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
26600      return false;
26601    }
26602    return true;
26603  }
26604
26605  protected Substance.SubstanceIngredientComponent parseSubstanceIngredientComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26606    Substance.SubstanceIngredientComponent res = new Substance.SubstanceIngredientComponent();
26607    parseElementAttributes(xpp, res);
26608    next(xpp);
26609    int eventType = nextNoWhitespace(xpp);
26610    while (eventType != XmlPullParser.END_TAG) {
26611    if (!parseSubstanceIngredientComponentContent(eventType, xpp, res))
26612        unknownContent(xpp);
26613      eventType = nextNoWhitespace(xpp);
26614    }
26615    next(xpp);
26616    parseElementClose(res);
26617    return res;
26618  }
26619
26620  protected boolean parseSubstanceIngredientComponentContent(int eventType, XmlPullParser xpp, Substance.SubstanceIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26621    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
26622      res.setQuantity(parseRatio(xpp));
26623    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "substance")) {
26624      res.setSubstance(parseType("substance", xpp));
26625    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26626      return false;
26627    }
26628    return true;
26629  }
26630
26631  protected SubstanceDefinition parseSubstanceDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26632    SubstanceDefinition res = new SubstanceDefinition();
26633    parseResourceAttributes(xpp, res);
26634    next(xpp);
26635    int eventType = nextNoWhitespace(xpp);
26636    while (eventType != XmlPullParser.END_TAG) {
26637    if (!parseSubstanceDefinitionContent(eventType, xpp, res))
26638        unknownContent(xpp);
26639      eventType = nextNoWhitespace(xpp);
26640    }
26641    next(xpp);
26642    parseElementClose(res);
26643    return res;
26644  }
26645
26646  protected boolean parseSubstanceDefinitionContent(int eventType, XmlPullParser xpp, SubstanceDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
26647    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
26648      res.getIdentifier().add(parseIdentifier(xpp));
26649    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
26650      res.setVersionElement(parseString(xpp));
26651    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
26652      res.setStatus(parseCodeableConcept(xpp));
26653    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
26654      res.getClassification().add(parseCodeableConcept(xpp));
26655    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
26656      res.setDomain(parseCodeableConcept(xpp));
26657    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("grade")) {
26658      res.getGrade().add(parseCodeableConcept(xpp));
26659    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
26660      res.setDescriptionElement(parseMarkdown(xpp));
26661    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSource")) {
26662      res.getInformationSource().add(parseReference(xpp));
26663    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
26664      res.getNote().add(parseAnnotation(xpp));
26665    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
26666      res.getManufacturer().add(parseReference(xpp));
26667    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
26668      res.getSupplier().add(parseReference(xpp));
26669    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("moiety")) {
26670      res.getMoiety().add(parseSubstanceDefinitionMoietyComponent(xpp));
26671    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characterization")) {
26672      res.getCharacterization().add(parseSubstanceDefinitionCharacterizationComponent(xpp));
26673    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
26674      res.getProperty().add(parseSubstanceDefinitionPropertyComponent(xpp));
26675    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceInformation")) {
26676      res.setReferenceInformation(parseReference(xpp));
26677    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularWeight")) {
26678      res.getMolecularWeight().add(parseSubstanceDefinitionMolecularWeightComponent(xpp));
26679    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structure")) {
26680      res.setStructure(parseSubstanceDefinitionStructureComponent(xpp));
26681    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
26682      res.getCode().add(parseSubstanceDefinitionCodeComponent(xpp));
26683    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
26684      res.getName().add(parseSubstanceDefinitionNameComponent(xpp));
26685    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
26686      res.getRelationship().add(parseSubstanceDefinitionRelationshipComponent(xpp));
26687    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nucleicAcid")) {
26688      res.setNucleicAcid(parseReference(xpp));
26689    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("polymer")) {
26690      res.setPolymer(parseReference(xpp));
26691    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protein")) {
26692      res.setProtein(parseReference(xpp));
26693    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceMaterial")) {
26694      res.setSourceMaterial(parseSubstanceDefinitionSourceMaterialComponent(xpp));
26695    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
26696      return false;
26697    }
26698    return true;
26699  }
26700
26701  protected SubstanceDefinition.SubstanceDefinitionMoietyComponent parseSubstanceDefinitionMoietyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26702    SubstanceDefinition.SubstanceDefinitionMoietyComponent res = new SubstanceDefinition.SubstanceDefinitionMoietyComponent();
26703    parseElementAttributes(xpp, res);
26704    next(xpp);
26705    int eventType = nextNoWhitespace(xpp);
26706    while (eventType != XmlPullParser.END_TAG) {
26707    if (!parseSubstanceDefinitionMoietyComponentContent(eventType, xpp, res))
26708        unknownContent(xpp);
26709      eventType = nextNoWhitespace(xpp);
26710    }
26711    next(xpp);
26712    parseElementClose(res);
26713    return res;
26714  }
26715
26716  protected boolean parseSubstanceDefinitionMoietyComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionMoietyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26717    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
26718      res.setRole(parseCodeableConcept(xpp));
26719    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
26720      res.setIdentifier(parseIdentifier(xpp));
26721    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
26722      res.setNameElement(parseString(xpp));
26723    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stereochemistry")) {
26724      res.setStereochemistry(parseCodeableConcept(xpp));
26725    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("opticalActivity")) {
26726      res.setOpticalActivity(parseCodeableConcept(xpp));
26727    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormula")) {
26728      res.setMolecularFormulaElement(parseString(xpp));
26729    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
26730      res.setAmount(parseType("amount", xpp));
26731    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementType")) {
26732      res.setMeasurementType(parseCodeableConcept(xpp));
26733    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26734      return false;
26735    }
26736    return true;
26737  }
26738
26739  protected SubstanceDefinition.SubstanceDefinitionCharacterizationComponent parseSubstanceDefinitionCharacterizationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26740    SubstanceDefinition.SubstanceDefinitionCharacterizationComponent res = new SubstanceDefinition.SubstanceDefinitionCharacterizationComponent();
26741    parseElementAttributes(xpp, res);
26742    next(xpp);
26743    int eventType = nextNoWhitespace(xpp);
26744    while (eventType != XmlPullParser.END_TAG) {
26745    if (!parseSubstanceDefinitionCharacterizationComponentContent(eventType, xpp, res))
26746        unknownContent(xpp);
26747      eventType = nextNoWhitespace(xpp);
26748    }
26749    next(xpp);
26750    parseElementClose(res);
26751    return res;
26752  }
26753
26754  protected boolean parseSubstanceDefinitionCharacterizationComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionCharacterizationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26755    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("technique")) {
26756      res.setTechnique(parseCodeableConcept(xpp));
26757    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
26758      res.setForm(parseCodeableConcept(xpp));
26759    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
26760      res.setDescriptionElement(parseMarkdown(xpp));
26761    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("file")) {
26762      res.getFile().add(parseAttachment(xpp));
26763    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26764      return false;
26765    }
26766    return true;
26767  }
26768
26769  protected SubstanceDefinition.SubstanceDefinitionPropertyComponent parseSubstanceDefinitionPropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26770    SubstanceDefinition.SubstanceDefinitionPropertyComponent res = new SubstanceDefinition.SubstanceDefinitionPropertyComponent();
26771    parseElementAttributes(xpp, res);
26772    next(xpp);
26773    int eventType = nextNoWhitespace(xpp);
26774    while (eventType != XmlPullParser.END_TAG) {
26775    if (!parseSubstanceDefinitionPropertyComponentContent(eventType, xpp, res))
26776        unknownContent(xpp);
26777      eventType = nextNoWhitespace(xpp);
26778    }
26779    next(xpp);
26780    parseElementClose(res);
26781    return res;
26782  }
26783
26784  protected boolean parseSubstanceDefinitionPropertyComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26785    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
26786      res.setType(parseCodeableConcept(xpp));
26787    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
26788      res.setValue(parseType("value", xpp));
26789    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26790      return false;
26791    }
26792    return true;
26793  }
26794
26795  protected SubstanceDefinition.SubstanceDefinitionMolecularWeightComponent parseSubstanceDefinitionMolecularWeightComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26796    SubstanceDefinition.SubstanceDefinitionMolecularWeightComponent res = new SubstanceDefinition.SubstanceDefinitionMolecularWeightComponent();
26797    parseElementAttributes(xpp, res);
26798    next(xpp);
26799    int eventType = nextNoWhitespace(xpp);
26800    while (eventType != XmlPullParser.END_TAG) {
26801    if (!parseSubstanceDefinitionMolecularWeightComponentContent(eventType, xpp, res))
26802        unknownContent(xpp);
26803      eventType = nextNoWhitespace(xpp);
26804    }
26805    next(xpp);
26806    parseElementClose(res);
26807    return res;
26808  }
26809
26810  protected boolean parseSubstanceDefinitionMolecularWeightComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionMolecularWeightComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26811    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
26812      res.setMethod(parseCodeableConcept(xpp));
26813    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
26814      res.setType(parseCodeableConcept(xpp));
26815    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
26816      res.setAmount(parseQuantity(xpp));
26817    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26818      return false;
26819    }
26820    return true;
26821  }
26822
26823  protected SubstanceDefinition.SubstanceDefinitionStructureComponent parseSubstanceDefinitionStructureComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26824    SubstanceDefinition.SubstanceDefinitionStructureComponent res = new SubstanceDefinition.SubstanceDefinitionStructureComponent();
26825    parseElementAttributes(xpp, res);
26826    next(xpp);
26827    int eventType = nextNoWhitespace(xpp);
26828    while (eventType != XmlPullParser.END_TAG) {
26829    if (!parseSubstanceDefinitionStructureComponentContent(eventType, xpp, res))
26830        unknownContent(xpp);
26831      eventType = nextNoWhitespace(xpp);
26832    }
26833    next(xpp);
26834    parseElementClose(res);
26835    return res;
26836  }
26837
26838  protected boolean parseSubstanceDefinitionStructureComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionStructureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26839    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stereochemistry")) {
26840      res.setStereochemistry(parseCodeableConcept(xpp));
26841    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("opticalActivity")) {
26842      res.setOpticalActivity(parseCodeableConcept(xpp));
26843    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormula")) {
26844      res.setMolecularFormulaElement(parseString(xpp));
26845    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormulaByMoiety")) {
26846      res.setMolecularFormulaByMoietyElement(parseString(xpp));
26847    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularWeight")) {
26848      res.setMolecularWeight(parseSubstanceDefinitionMolecularWeightComponent(xpp));
26849    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("technique")) {
26850      res.getTechnique().add(parseCodeableConcept(xpp));
26851    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceDocument")) {
26852      res.getSourceDocument().add(parseReference(xpp));
26853    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
26854      res.getRepresentation().add(parseSubstanceDefinitionStructureRepresentationComponent(xpp));
26855    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26856      return false;
26857    }
26858    return true;
26859  }
26860
26861  protected SubstanceDefinition.SubstanceDefinitionStructureRepresentationComponent parseSubstanceDefinitionStructureRepresentationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26862    SubstanceDefinition.SubstanceDefinitionStructureRepresentationComponent res = new SubstanceDefinition.SubstanceDefinitionStructureRepresentationComponent();
26863    parseElementAttributes(xpp, res);
26864    next(xpp);
26865    int eventType = nextNoWhitespace(xpp);
26866    while (eventType != XmlPullParser.END_TAG) {
26867    if (!parseSubstanceDefinitionStructureRepresentationComponentContent(eventType, xpp, res))
26868        unknownContent(xpp);
26869      eventType = nextNoWhitespace(xpp);
26870    }
26871    next(xpp);
26872    parseElementClose(res);
26873    return res;
26874  }
26875
26876  protected boolean parseSubstanceDefinitionStructureRepresentationComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionStructureRepresentationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26877    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
26878      res.setType(parseCodeableConcept(xpp));
26879    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
26880      res.setRepresentationElement(parseString(xpp));
26881    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
26882      res.setFormat(parseCodeableConcept(xpp));
26883    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
26884      res.setDocument(parseReference(xpp));
26885    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26886      return false;
26887    }
26888    return true;
26889  }
26890
26891  protected SubstanceDefinition.SubstanceDefinitionCodeComponent parseSubstanceDefinitionCodeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26892    SubstanceDefinition.SubstanceDefinitionCodeComponent res = new SubstanceDefinition.SubstanceDefinitionCodeComponent();
26893    parseElementAttributes(xpp, res);
26894    next(xpp);
26895    int eventType = nextNoWhitespace(xpp);
26896    while (eventType != XmlPullParser.END_TAG) {
26897    if (!parseSubstanceDefinitionCodeComponentContent(eventType, xpp, res))
26898        unknownContent(xpp);
26899      eventType = nextNoWhitespace(xpp);
26900    }
26901    next(xpp);
26902    parseElementClose(res);
26903    return res;
26904  }
26905
26906  protected boolean parseSubstanceDefinitionCodeComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionCodeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26907    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
26908      res.setCode(parseCodeableConcept(xpp));
26909    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
26910      res.setStatus(parseCodeableConcept(xpp));
26911    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
26912      res.setStatusDateElement(parseDateTime(xpp));
26913    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
26914      res.getNote().add(parseAnnotation(xpp));
26915    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
26916      res.getSource().add(parseReference(xpp));
26917    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26918      return false;
26919    }
26920    return true;
26921  }
26922
26923  protected SubstanceDefinition.SubstanceDefinitionNameComponent parseSubstanceDefinitionNameComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26924    SubstanceDefinition.SubstanceDefinitionNameComponent res = new SubstanceDefinition.SubstanceDefinitionNameComponent();
26925    parseElementAttributes(xpp, res);
26926    next(xpp);
26927    int eventType = nextNoWhitespace(xpp);
26928    while (eventType != XmlPullParser.END_TAG) {
26929    if (!parseSubstanceDefinitionNameComponentContent(eventType, xpp, res))
26930        unknownContent(xpp);
26931      eventType = nextNoWhitespace(xpp);
26932    }
26933    next(xpp);
26934    parseElementClose(res);
26935    return res;
26936  }
26937
26938  protected boolean parseSubstanceDefinitionNameComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26939    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
26940      res.setNameElement(parseString(xpp));
26941    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
26942      res.setType(parseCodeableConcept(xpp));
26943    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
26944      res.setStatus(parseCodeableConcept(xpp));
26945    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
26946      res.setPreferredElement(parseBoolean(xpp));
26947    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
26948      res.getLanguage().add(parseCodeableConcept(xpp));
26949    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
26950      res.getDomain().add(parseCodeableConcept(xpp));
26951    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
26952      res.getJurisdiction().add(parseCodeableConcept(xpp));
26953    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("synonym")) {
26954      res.getSynonym().add(parseSubstanceDefinitionNameComponent(xpp));
26955    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translation")) {
26956      res.getTranslation().add(parseSubstanceDefinitionNameComponent(xpp));
26957    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("official")) {
26958      res.getOfficial().add(parseSubstanceDefinitionNameOfficialComponent(xpp));
26959    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
26960      res.getSource().add(parseReference(xpp));
26961    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26962      return false;
26963    }
26964    return true;
26965  }
26966
26967  protected SubstanceDefinition.SubstanceDefinitionNameOfficialComponent parseSubstanceDefinitionNameOfficialComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26968    SubstanceDefinition.SubstanceDefinitionNameOfficialComponent res = new SubstanceDefinition.SubstanceDefinitionNameOfficialComponent();
26969    parseElementAttributes(xpp, res);
26970    next(xpp);
26971    int eventType = nextNoWhitespace(xpp);
26972    while (eventType != XmlPullParser.END_TAG) {
26973    if (!parseSubstanceDefinitionNameOfficialComponentContent(eventType, xpp, res))
26974        unknownContent(xpp);
26975      eventType = nextNoWhitespace(xpp);
26976    }
26977    next(xpp);
26978    parseElementClose(res);
26979    return res;
26980  }
26981
26982  protected boolean parseSubstanceDefinitionNameOfficialComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionNameOfficialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
26983    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
26984      res.setAuthority(parseCodeableConcept(xpp));
26985    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
26986      res.setStatus(parseCodeableConcept(xpp));
26987    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
26988      res.setDateElement(parseDateTime(xpp));
26989    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
26990      return false;
26991    }
26992    return true;
26993  }
26994
26995  protected SubstanceDefinition.SubstanceDefinitionRelationshipComponent parseSubstanceDefinitionRelationshipComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
26996    SubstanceDefinition.SubstanceDefinitionRelationshipComponent res = new SubstanceDefinition.SubstanceDefinitionRelationshipComponent();
26997    parseElementAttributes(xpp, res);
26998    next(xpp);
26999    int eventType = nextNoWhitespace(xpp);
27000    while (eventType != XmlPullParser.END_TAG) {
27001    if (!parseSubstanceDefinitionRelationshipComponentContent(eventType, xpp, res))
27002        unknownContent(xpp);
27003      eventType = nextNoWhitespace(xpp);
27004    }
27005    next(xpp);
27006    parseElementClose(res);
27007    return res;
27008  }
27009
27010  protected boolean parseSubstanceDefinitionRelationshipComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionRelationshipComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27011    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "substanceDefinition")) {
27012      res.setSubstanceDefinition(parseType("substanceDefinition", xpp));
27013    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
27014      res.setType(parseCodeableConcept(xpp));
27015    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDefining")) {
27016      res.setIsDefiningElement(parseBoolean(xpp));
27017    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
27018      res.setAmount(parseType("amount", xpp));
27019    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ratioHighLimitAmount")) {
27020      res.setRatioHighLimitAmount(parseRatio(xpp));
27021    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
27022      res.setComparator(parseCodeableConcept(xpp));
27023    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
27024      res.getSource().add(parseReference(xpp));
27025    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27026      return false;
27027    }
27028    return true;
27029  }
27030
27031  protected SubstanceDefinition.SubstanceDefinitionSourceMaterialComponent parseSubstanceDefinitionSourceMaterialComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27032    SubstanceDefinition.SubstanceDefinitionSourceMaterialComponent res = new SubstanceDefinition.SubstanceDefinitionSourceMaterialComponent();
27033    parseElementAttributes(xpp, res);
27034    next(xpp);
27035    int eventType = nextNoWhitespace(xpp);
27036    while (eventType != XmlPullParser.END_TAG) {
27037    if (!parseSubstanceDefinitionSourceMaterialComponentContent(eventType, xpp, res))
27038        unknownContent(xpp);
27039      eventType = nextNoWhitespace(xpp);
27040    }
27041    next(xpp);
27042    parseElementClose(res);
27043    return res;
27044  }
27045
27046  protected boolean parseSubstanceDefinitionSourceMaterialComponentContent(int eventType, XmlPullParser xpp, SubstanceDefinition.SubstanceDefinitionSourceMaterialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27047    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
27048      res.setType(parseCodeableConcept(xpp));
27049    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genus")) {
27050      res.setGenus(parseCodeableConcept(xpp));
27051    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("species")) {
27052      res.setSpecies(parseCodeableConcept(xpp));
27053    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
27054      res.setPart(parseCodeableConcept(xpp));
27055    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countryOfOrigin")) {
27056      res.getCountryOfOrigin().add(parseCodeableConcept(xpp));
27057    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27058      return false;
27059    }
27060    return true;
27061  }
27062
27063  protected SubstanceNucleicAcid parseSubstanceNucleicAcid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27064    SubstanceNucleicAcid res = new SubstanceNucleicAcid();
27065    parseResourceAttributes(xpp, res);
27066    next(xpp);
27067    int eventType = nextNoWhitespace(xpp);
27068    while (eventType != XmlPullParser.END_TAG) {
27069    if (!parseSubstanceNucleicAcidContent(eventType, xpp, res))
27070        unknownContent(xpp);
27071      eventType = nextNoWhitespace(xpp);
27072    }
27073    next(xpp);
27074    parseElementClose(res);
27075    return res;
27076  }
27077
27078  protected boolean parseSubstanceNucleicAcidContent(int eventType, XmlPullParser xpp, SubstanceNucleicAcid res) throws XmlPullParserException, IOException, FHIRFormatError {
27079    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceType")) {
27080      res.setSequenceType(parseCodeableConcept(xpp));
27081    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSubunits")) {
27082      res.setNumberOfSubunitsElement(parseInteger(xpp));
27083    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("areaOfHybridisation")) {
27084      res.setAreaOfHybridisationElement(parseString(xpp));
27085    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("oligoNucleotideType")) {
27086      res.setOligoNucleotideType(parseCodeableConcept(xpp));
27087    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subunit")) {
27088      res.getSubunit().add(parseSubstanceNucleicAcidSubunitComponent(xpp));
27089    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
27090      return false;
27091    }
27092    return true;
27093  }
27094
27095  protected SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent parseSubstanceNucleicAcidSubunitComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27096    SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent res = new SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent();
27097    parseElementAttributes(xpp, res);
27098    next(xpp);
27099    int eventType = nextNoWhitespace(xpp);
27100    while (eventType != XmlPullParser.END_TAG) {
27101    if (!parseSubstanceNucleicAcidSubunitComponentContent(eventType, xpp, res))
27102        unknownContent(xpp);
27103      eventType = nextNoWhitespace(xpp);
27104    }
27105    next(xpp);
27106    parseElementClose(res);
27107    return res;
27108  }
27109
27110  protected boolean parseSubstanceNucleicAcidSubunitComponentContent(int eventType, XmlPullParser xpp, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27111    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subunit")) {
27112      res.setSubunitElement(parseInteger(xpp));
27113    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
27114      res.setSequenceElement(parseString(xpp));
27115    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
27116      res.setLengthElement(parseInteger(xpp));
27117    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceAttachment")) {
27118      res.setSequenceAttachment(parseAttachment(xpp));
27119    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fivePrime")) {
27120      res.setFivePrime(parseCodeableConcept(xpp));
27121    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("threePrime")) {
27122      res.setThreePrime(parseCodeableConcept(xpp));
27123    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkage")) {
27124      res.getLinkage().add(parseSubstanceNucleicAcidSubunitLinkageComponent(xpp));
27125    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sugar")) {
27126      res.getSugar().add(parseSubstanceNucleicAcidSubunitSugarComponent(xpp));
27127    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27128      return false;
27129    }
27130    return true;
27131  }
27132
27133  protected SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent parseSubstanceNucleicAcidSubunitLinkageComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27134    SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent res = new SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent();
27135    parseElementAttributes(xpp, res);
27136    next(xpp);
27137    int eventType = nextNoWhitespace(xpp);
27138    while (eventType != XmlPullParser.END_TAG) {
27139    if (!parseSubstanceNucleicAcidSubunitLinkageComponentContent(eventType, xpp, res))
27140        unknownContent(xpp);
27141      eventType = nextNoWhitespace(xpp);
27142    }
27143    next(xpp);
27144    parseElementClose(res);
27145    return res;
27146  }
27147
27148  protected boolean parseSubstanceNucleicAcidSubunitLinkageComponentContent(int eventType, XmlPullParser xpp, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27149    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("connectivity")) {
27150      res.setConnectivityElement(parseString(xpp));
27151    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
27152      res.setIdentifier(parseIdentifier(xpp));
27153    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
27154      res.setNameElement(parseString(xpp));
27155    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("residueSite")) {
27156      res.setResidueSiteElement(parseString(xpp));
27157    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27158      return false;
27159    }
27160    return true;
27161  }
27162
27163  protected SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent parseSubstanceNucleicAcidSubunitSugarComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27164    SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent res = new SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent();
27165    parseElementAttributes(xpp, res);
27166    next(xpp);
27167    int eventType = nextNoWhitespace(xpp);
27168    while (eventType != XmlPullParser.END_TAG) {
27169    if (!parseSubstanceNucleicAcidSubunitSugarComponentContent(eventType, xpp, res))
27170        unknownContent(xpp);
27171      eventType = nextNoWhitespace(xpp);
27172    }
27173    next(xpp);
27174    parseElementClose(res);
27175    return res;
27176  }
27177
27178  protected boolean parseSubstanceNucleicAcidSubunitSugarComponentContent(int eventType, XmlPullParser xpp, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27179    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
27180      res.setIdentifier(parseIdentifier(xpp));
27181    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
27182      res.setNameElement(parseString(xpp));
27183    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("residueSite")) {
27184      res.setResidueSiteElement(parseString(xpp));
27185    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27186      return false;
27187    }
27188    return true;
27189  }
27190
27191  protected SubstancePolymer parseSubstancePolymer(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27192    SubstancePolymer res = new SubstancePolymer();
27193    parseResourceAttributes(xpp, res);
27194    next(xpp);
27195    int eventType = nextNoWhitespace(xpp);
27196    while (eventType != XmlPullParser.END_TAG) {
27197    if (!parseSubstancePolymerContent(eventType, xpp, res))
27198        unknownContent(xpp);
27199      eventType = nextNoWhitespace(xpp);
27200    }
27201    next(xpp);
27202    parseElementClose(res);
27203    return res;
27204  }
27205
27206  protected boolean parseSubstancePolymerContent(int eventType, XmlPullParser xpp, SubstancePolymer res) throws XmlPullParserException, IOException, FHIRFormatError {
27207    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
27208      res.setIdentifier(parseIdentifier(xpp));
27209    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
27210      res.setClass_(parseCodeableConcept(xpp));
27211    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geometry")) {
27212      res.setGeometry(parseCodeableConcept(xpp));
27213    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copolymerConnectivity")) {
27214      res.getCopolymerConnectivity().add(parseCodeableConcept(xpp));
27215    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modification")) {
27216      res.setModificationElement(parseString(xpp));
27217    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monomerSet")) {
27218      res.getMonomerSet().add(parseSubstancePolymerMonomerSetComponent(xpp));
27219    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeat")) {
27220      res.getRepeat().add(parseSubstancePolymerRepeatComponent(xpp));
27221    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
27222      return false;
27223    }
27224    return true;
27225  }
27226
27227  protected SubstancePolymer.SubstancePolymerMonomerSetComponent parseSubstancePolymerMonomerSetComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27228    SubstancePolymer.SubstancePolymerMonomerSetComponent res = new SubstancePolymer.SubstancePolymerMonomerSetComponent();
27229    parseElementAttributes(xpp, res);
27230    next(xpp);
27231    int eventType = nextNoWhitespace(xpp);
27232    while (eventType != XmlPullParser.END_TAG) {
27233    if (!parseSubstancePolymerMonomerSetComponentContent(eventType, xpp, res))
27234        unknownContent(xpp);
27235      eventType = nextNoWhitespace(xpp);
27236    }
27237    next(xpp);
27238    parseElementClose(res);
27239    return res;
27240  }
27241
27242  protected boolean parseSubstancePolymerMonomerSetComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer.SubstancePolymerMonomerSetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27243    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ratioType")) {
27244      res.setRatioType(parseCodeableConcept(xpp));
27245    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("startingMaterial")) {
27246      res.getStartingMaterial().add(parseSubstancePolymerMonomerSetStartingMaterialComponent(xpp));
27247    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27248      return false;
27249    }
27250    return true;
27251  }
27252
27253  protected SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent parseSubstancePolymerMonomerSetStartingMaterialComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27254    SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent res = new SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent();
27255    parseElementAttributes(xpp, res);
27256    next(xpp);
27257    int eventType = nextNoWhitespace(xpp);
27258    while (eventType != XmlPullParser.END_TAG) {
27259    if (!parseSubstancePolymerMonomerSetStartingMaterialComponentContent(eventType, xpp, res))
27260        unknownContent(xpp);
27261      eventType = nextNoWhitespace(xpp);
27262    }
27263    next(xpp);
27264    parseElementClose(res);
27265    return res;
27266  }
27267
27268  protected boolean parseSubstancePolymerMonomerSetStartingMaterialComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27269    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
27270      res.setCode(parseCodeableConcept(xpp));
27271    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
27272      res.setCategory(parseCodeableConcept(xpp));
27273    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDefining")) {
27274      res.setIsDefiningElement(parseBoolean(xpp));
27275    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
27276      res.setAmount(parseQuantity(xpp));
27277    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27278      return false;
27279    }
27280    return true;
27281  }
27282
27283  protected SubstancePolymer.SubstancePolymerRepeatComponent parseSubstancePolymerRepeatComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27284    SubstancePolymer.SubstancePolymerRepeatComponent res = new SubstancePolymer.SubstancePolymerRepeatComponent();
27285    parseElementAttributes(xpp, res);
27286    next(xpp);
27287    int eventType = nextNoWhitespace(xpp);
27288    while (eventType != XmlPullParser.END_TAG) {
27289    if (!parseSubstancePolymerRepeatComponentContent(eventType, xpp, res))
27290        unknownContent(xpp);
27291      eventType = nextNoWhitespace(xpp);
27292    }
27293    next(xpp);
27294    parseElementClose(res);
27295    return res;
27296  }
27297
27298  protected boolean parseSubstancePolymerRepeatComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer.SubstancePolymerRepeatComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27299    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("averageMolecularFormula")) {
27300      res.setAverageMolecularFormulaElement(parseString(xpp));
27301    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeatUnitAmountType")) {
27302      res.setRepeatUnitAmountType(parseCodeableConcept(xpp));
27303    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeatUnit")) {
27304      res.getRepeatUnit().add(parseSubstancePolymerRepeatRepeatUnitComponent(xpp));
27305    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27306      return false;
27307    }
27308    return true;
27309  }
27310
27311  protected SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent parseSubstancePolymerRepeatRepeatUnitComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27312    SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent res = new SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent();
27313    parseElementAttributes(xpp, res);
27314    next(xpp);
27315    int eventType = nextNoWhitespace(xpp);
27316    while (eventType != XmlPullParser.END_TAG) {
27317    if (!parseSubstancePolymerRepeatRepeatUnitComponentContent(eventType, xpp, res))
27318        unknownContent(xpp);
27319      eventType = nextNoWhitespace(xpp);
27320    }
27321    next(xpp);
27322    parseElementClose(res);
27323    return res;
27324  }
27325
27326  protected boolean parseSubstancePolymerRepeatRepeatUnitComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27327    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
27328      res.setUnitElement(parseString(xpp));
27329    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orientation")) {
27330      res.setOrientation(parseCodeableConcept(xpp));
27331    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
27332      res.setAmountElement(parseInteger(xpp));
27333    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("degreeOfPolymerisation")) {
27334      res.getDegreeOfPolymerisation().add(parseSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(xpp));
27335    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structuralRepresentation")) {
27336      res.getStructuralRepresentation().add(parseSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(xpp));
27337    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27338      return false;
27339    }
27340    return true;
27341  }
27342
27343  protected SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent parseSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27344    SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent res = new SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent();
27345    parseElementAttributes(xpp, res);
27346    next(xpp);
27347    int eventType = nextNoWhitespace(xpp);
27348    while (eventType != XmlPullParser.END_TAG) {
27349    if (!parseSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentContent(eventType, xpp, res))
27350        unknownContent(xpp);
27351      eventType = nextNoWhitespace(xpp);
27352    }
27353    next(xpp);
27354    parseElementClose(res);
27355    return res;
27356  }
27357
27358  protected boolean parseSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27359    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
27360      res.setType(parseCodeableConcept(xpp));
27361    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("average")) {
27362      res.setAverageElement(parseInteger(xpp));
27363    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
27364      res.setLowElement(parseInteger(xpp));
27365    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
27366      res.setHighElement(parseInteger(xpp));
27367    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27368      return false;
27369    }
27370    return true;
27371  }
27372
27373  protected SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent parseSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27374    SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent res = new SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent();
27375    parseElementAttributes(xpp, res);
27376    next(xpp);
27377    int eventType = nextNoWhitespace(xpp);
27378    while (eventType != XmlPullParser.END_TAG) {
27379    if (!parseSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentContent(eventType, xpp, res))
27380        unknownContent(xpp);
27381      eventType = nextNoWhitespace(xpp);
27382    }
27383    next(xpp);
27384    parseElementClose(res);
27385    return res;
27386  }
27387
27388  protected boolean parseSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27389    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
27390      res.setType(parseCodeableConcept(xpp));
27391    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
27392      res.setRepresentationElement(parseString(xpp));
27393    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
27394      res.setFormat(parseCodeableConcept(xpp));
27395    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
27396      res.setAttachment(parseAttachment(xpp));
27397    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27398      return false;
27399    }
27400    return true;
27401  }
27402
27403  protected SubstanceProtein parseSubstanceProtein(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27404    SubstanceProtein res = new SubstanceProtein();
27405    parseResourceAttributes(xpp, res);
27406    next(xpp);
27407    int eventType = nextNoWhitespace(xpp);
27408    while (eventType != XmlPullParser.END_TAG) {
27409    if (!parseSubstanceProteinContent(eventType, xpp, res))
27410        unknownContent(xpp);
27411      eventType = nextNoWhitespace(xpp);
27412    }
27413    next(xpp);
27414    parseElementClose(res);
27415    return res;
27416  }
27417
27418  protected boolean parseSubstanceProteinContent(int eventType, XmlPullParser xpp, SubstanceProtein res) throws XmlPullParserException, IOException, FHIRFormatError {
27419    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceType")) {
27420      res.setSequenceType(parseCodeableConcept(xpp));
27421    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSubunits")) {
27422      res.setNumberOfSubunitsElement(parseInteger(xpp));
27423    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disulfideLinkage")) {
27424      res.getDisulfideLinkage().add(parseString(xpp));
27425    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subunit")) {
27426      res.getSubunit().add(parseSubstanceProteinSubunitComponent(xpp));
27427    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
27428      return false;
27429    }
27430    return true;
27431  }
27432
27433  protected SubstanceProtein.SubstanceProteinSubunitComponent parseSubstanceProteinSubunitComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27434    SubstanceProtein.SubstanceProteinSubunitComponent res = new SubstanceProtein.SubstanceProteinSubunitComponent();
27435    parseElementAttributes(xpp, res);
27436    next(xpp);
27437    int eventType = nextNoWhitespace(xpp);
27438    while (eventType != XmlPullParser.END_TAG) {
27439    if (!parseSubstanceProteinSubunitComponentContent(eventType, xpp, res))
27440        unknownContent(xpp);
27441      eventType = nextNoWhitespace(xpp);
27442    }
27443    next(xpp);
27444    parseElementClose(res);
27445    return res;
27446  }
27447
27448  protected boolean parseSubstanceProteinSubunitComponentContent(int eventType, XmlPullParser xpp, SubstanceProtein.SubstanceProteinSubunitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27449    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subunit")) {
27450      res.setSubunitElement(parseInteger(xpp));
27451    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
27452      res.setSequenceElement(parseString(xpp));
27453    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
27454      res.setLengthElement(parseInteger(xpp));
27455    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceAttachment")) {
27456      res.setSequenceAttachment(parseAttachment(xpp));
27457    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nTerminalModificationId")) {
27458      res.setNTerminalModificationId(parseIdentifier(xpp));
27459    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nTerminalModification")) {
27460      res.setNTerminalModificationElement(parseString(xpp));
27461    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cTerminalModificationId")) {
27462      res.setCTerminalModificationId(parseIdentifier(xpp));
27463    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cTerminalModification")) {
27464      res.setCTerminalModificationElement(parseString(xpp));
27465    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27466      return false;
27467    }
27468    return true;
27469  }
27470
27471  protected SubstanceReferenceInformation parseSubstanceReferenceInformation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27472    SubstanceReferenceInformation res = new SubstanceReferenceInformation();
27473    parseResourceAttributes(xpp, res);
27474    next(xpp);
27475    int eventType = nextNoWhitespace(xpp);
27476    while (eventType != XmlPullParser.END_TAG) {
27477    if (!parseSubstanceReferenceInformationContent(eventType, xpp, res))
27478        unknownContent(xpp);
27479      eventType = nextNoWhitespace(xpp);
27480    }
27481    next(xpp);
27482    parseElementClose(res);
27483    return res;
27484  }
27485
27486  protected boolean parseSubstanceReferenceInformationContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation res) throws XmlPullParserException, IOException, FHIRFormatError {
27487    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
27488      res.setCommentElement(parseString(xpp));
27489    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gene")) {
27490      res.getGene().add(parseSubstanceReferenceInformationGeneComponent(xpp));
27491    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geneElement")) {
27492      res.getGeneElement().add(parseSubstanceReferenceInformationGeneElementComponent(xpp));
27493    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
27494      res.getTarget().add(parseSubstanceReferenceInformationTargetComponent(xpp));
27495    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
27496      return false;
27497    }
27498    return true;
27499  }
27500
27501  protected SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent parseSubstanceReferenceInformationGeneComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27502    SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent();
27503    parseElementAttributes(xpp, res);
27504    next(xpp);
27505    int eventType = nextNoWhitespace(xpp);
27506    while (eventType != XmlPullParser.END_TAG) {
27507    if (!parseSubstanceReferenceInformationGeneComponentContent(eventType, xpp, res))
27508        unknownContent(xpp);
27509      eventType = nextNoWhitespace(xpp);
27510    }
27511    next(xpp);
27512    parseElementClose(res);
27513    return res;
27514  }
27515
27516  protected boolean parseSubstanceReferenceInformationGeneComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27517    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geneSequenceOrigin")) {
27518      res.setGeneSequenceOrigin(parseCodeableConcept(xpp));
27519    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gene")) {
27520      res.setGene(parseCodeableConcept(xpp));
27521    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
27522      res.getSource().add(parseReference(xpp));
27523    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27524      return false;
27525    }
27526    return true;
27527  }
27528
27529  protected SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent parseSubstanceReferenceInformationGeneElementComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27530    SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent();
27531    parseElementAttributes(xpp, res);
27532    next(xpp);
27533    int eventType = nextNoWhitespace(xpp);
27534    while (eventType != XmlPullParser.END_TAG) {
27535    if (!parseSubstanceReferenceInformationGeneElementComponentContent(eventType, xpp, res))
27536        unknownContent(xpp);
27537      eventType = nextNoWhitespace(xpp);
27538    }
27539    next(xpp);
27540    parseElementClose(res);
27541    return res;
27542  }
27543
27544  protected boolean parseSubstanceReferenceInformationGeneElementComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27545    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
27546      res.setType(parseCodeableConcept(xpp));
27547    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
27548      res.setElement(parseIdentifier(xpp));
27549    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
27550      res.getSource().add(parseReference(xpp));
27551    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27552      return false;
27553    }
27554    return true;
27555  }
27556
27557  protected SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent parseSubstanceReferenceInformationTargetComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27558    SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent();
27559    parseElementAttributes(xpp, res);
27560    next(xpp);
27561    int eventType = nextNoWhitespace(xpp);
27562    while (eventType != XmlPullParser.END_TAG) {
27563    if (!parseSubstanceReferenceInformationTargetComponentContent(eventType, xpp, res))
27564        unknownContent(xpp);
27565      eventType = nextNoWhitespace(xpp);
27566    }
27567    next(xpp);
27568    parseElementClose(res);
27569    return res;
27570  }
27571
27572  protected boolean parseSubstanceReferenceInformationTargetComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27573    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
27574      res.setTarget(parseIdentifier(xpp));
27575    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
27576      res.setType(parseCodeableConcept(xpp));
27577    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
27578      res.setInteraction(parseCodeableConcept(xpp));
27579    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organism")) {
27580      res.setOrganism(parseCodeableConcept(xpp));
27581    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organismType")) {
27582      res.setOrganismType(parseCodeableConcept(xpp));
27583    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
27584      res.setAmount(parseType("amount", xpp));
27585    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountType")) {
27586      res.setAmountType(parseCodeableConcept(xpp));
27587    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
27588      res.getSource().add(parseReference(xpp));
27589    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27590      return false;
27591    }
27592    return true;
27593  }
27594
27595  protected SubstanceSourceMaterial parseSubstanceSourceMaterial(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27596    SubstanceSourceMaterial res = new SubstanceSourceMaterial();
27597    parseResourceAttributes(xpp, res);
27598    next(xpp);
27599    int eventType = nextNoWhitespace(xpp);
27600    while (eventType != XmlPullParser.END_TAG) {
27601    if (!parseSubstanceSourceMaterialContent(eventType, xpp, res))
27602        unknownContent(xpp);
27603      eventType = nextNoWhitespace(xpp);
27604    }
27605    next(xpp);
27606    parseElementClose(res);
27607    return res;
27608  }
27609
27610  protected boolean parseSubstanceSourceMaterialContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial res) throws XmlPullParserException, IOException, FHIRFormatError {
27611    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceMaterialClass")) {
27612      res.setSourceMaterialClass(parseCodeableConcept(xpp));
27613    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceMaterialType")) {
27614      res.setSourceMaterialType(parseCodeableConcept(xpp));
27615    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceMaterialState")) {
27616      res.setSourceMaterialState(parseCodeableConcept(xpp));
27617    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organismId")) {
27618      res.setOrganismId(parseIdentifier(xpp));
27619    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organismName")) {
27620      res.setOrganismNameElement(parseString(xpp));
27621    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parentSubstanceId")) {
27622      res.getParentSubstanceId().add(parseIdentifier(xpp));
27623    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parentSubstanceName")) {
27624      res.getParentSubstanceName().add(parseString(xpp));
27625    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countryOfOrigin")) {
27626      res.getCountryOfOrigin().add(parseCodeableConcept(xpp));
27627    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geographicalLocation")) {
27628      res.getGeographicalLocation().add(parseString(xpp));
27629    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("developmentStage")) {
27630      res.setDevelopmentStage(parseCodeableConcept(xpp));
27631    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fractionDescription")) {
27632      res.getFractionDescription().add(parseSubstanceSourceMaterialFractionDescriptionComponent(xpp));
27633    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organism")) {
27634      res.setOrganism(parseSubstanceSourceMaterialOrganismComponent(xpp));
27635    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partDescription")) {
27636      res.getPartDescription().add(parseSubstanceSourceMaterialPartDescriptionComponent(xpp));
27637    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
27638      return false;
27639    }
27640    return true;
27641  }
27642
27643  protected SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent parseSubstanceSourceMaterialFractionDescriptionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27644    SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent();
27645    parseElementAttributes(xpp, res);
27646    next(xpp);
27647    int eventType = nextNoWhitespace(xpp);
27648    while (eventType != XmlPullParser.END_TAG) {
27649    if (!parseSubstanceSourceMaterialFractionDescriptionComponentContent(eventType, xpp, res))
27650        unknownContent(xpp);
27651      eventType = nextNoWhitespace(xpp);
27652    }
27653    next(xpp);
27654    parseElementClose(res);
27655    return res;
27656  }
27657
27658  protected boolean parseSubstanceSourceMaterialFractionDescriptionComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27659    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fraction")) {
27660      res.setFractionElement(parseString(xpp));
27661    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("materialType")) {
27662      res.setMaterialType(parseCodeableConcept(xpp));
27663    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27664      return false;
27665    }
27666    return true;
27667  }
27668
27669  protected SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent parseSubstanceSourceMaterialOrganismComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27670    SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent();
27671    parseElementAttributes(xpp, res);
27672    next(xpp);
27673    int eventType = nextNoWhitespace(xpp);
27674    while (eventType != XmlPullParser.END_TAG) {
27675    if (!parseSubstanceSourceMaterialOrganismComponentContent(eventType, xpp, res))
27676        unknownContent(xpp);
27677      eventType = nextNoWhitespace(xpp);
27678    }
27679    next(xpp);
27680    parseElementClose(res);
27681    return res;
27682  }
27683
27684  protected boolean parseSubstanceSourceMaterialOrganismComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27685    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("family")) {
27686      res.setFamily(parseCodeableConcept(xpp));
27687    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genus")) {
27688      res.setGenus(parseCodeableConcept(xpp));
27689    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("species")) {
27690      res.setSpecies(parseCodeableConcept(xpp));
27691    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intraspecificType")) {
27692      res.setIntraspecificType(parseCodeableConcept(xpp));
27693    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intraspecificDescription")) {
27694      res.setIntraspecificDescriptionElement(parseString(xpp));
27695    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
27696      res.getAuthor().add(parseSubstanceSourceMaterialOrganismAuthorComponent(xpp));
27697    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hybrid")) {
27698      res.setHybrid(parseSubstanceSourceMaterialOrganismHybridComponent(xpp));
27699    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organismGeneral")) {
27700      res.setOrganismGeneral(parseSubstanceSourceMaterialOrganismOrganismGeneralComponent(xpp));
27701    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27702      return false;
27703    }
27704    return true;
27705  }
27706
27707  protected SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent parseSubstanceSourceMaterialOrganismAuthorComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27708    SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent();
27709    parseElementAttributes(xpp, res);
27710    next(xpp);
27711    int eventType = nextNoWhitespace(xpp);
27712    while (eventType != XmlPullParser.END_TAG) {
27713    if (!parseSubstanceSourceMaterialOrganismAuthorComponentContent(eventType, xpp, res))
27714        unknownContent(xpp);
27715      eventType = nextNoWhitespace(xpp);
27716    }
27717    next(xpp);
27718    parseElementClose(res);
27719    return res;
27720  }
27721
27722  protected boolean parseSubstanceSourceMaterialOrganismAuthorComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27723    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorType")) {
27724      res.setAuthorType(parseCodeableConcept(xpp));
27725    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorDescription")) {
27726      res.setAuthorDescriptionElement(parseString(xpp));
27727    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27728      return false;
27729    }
27730    return true;
27731  }
27732
27733  protected SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent parseSubstanceSourceMaterialOrganismHybridComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27734    SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent();
27735    parseElementAttributes(xpp, res);
27736    next(xpp);
27737    int eventType = nextNoWhitespace(xpp);
27738    while (eventType != XmlPullParser.END_TAG) {
27739    if (!parseSubstanceSourceMaterialOrganismHybridComponentContent(eventType, xpp, res))
27740        unknownContent(xpp);
27741      eventType = nextNoWhitespace(xpp);
27742    }
27743    next(xpp);
27744    parseElementClose(res);
27745    return res;
27746  }
27747
27748  protected boolean parseSubstanceSourceMaterialOrganismHybridComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27749    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maternalOrganismId")) {
27750      res.setMaternalOrganismIdElement(parseString(xpp));
27751    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maternalOrganismName")) {
27752      res.setMaternalOrganismNameElement(parseString(xpp));
27753    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paternalOrganismId")) {
27754      res.setPaternalOrganismIdElement(parseString(xpp));
27755    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paternalOrganismName")) {
27756      res.setPaternalOrganismNameElement(parseString(xpp));
27757    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hybridType")) {
27758      res.setHybridType(parseCodeableConcept(xpp));
27759    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27760      return false;
27761    }
27762    return true;
27763  }
27764
27765  protected SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent parseSubstanceSourceMaterialOrganismOrganismGeneralComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27766    SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent();
27767    parseElementAttributes(xpp, res);
27768    next(xpp);
27769    int eventType = nextNoWhitespace(xpp);
27770    while (eventType != XmlPullParser.END_TAG) {
27771    if (!parseSubstanceSourceMaterialOrganismOrganismGeneralComponentContent(eventType, xpp, res))
27772        unknownContent(xpp);
27773      eventType = nextNoWhitespace(xpp);
27774    }
27775    next(xpp);
27776    parseElementClose(res);
27777    return res;
27778  }
27779
27780  protected boolean parseSubstanceSourceMaterialOrganismOrganismGeneralComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27781    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kingdom")) {
27782      res.setKingdom(parseCodeableConcept(xpp));
27783    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("phylum")) {
27784      res.setPhylum(parseCodeableConcept(xpp));
27785    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
27786      res.setClass_(parseCodeableConcept(xpp));
27787    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("order")) {
27788      res.setOrder(parseCodeableConcept(xpp));
27789    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27790      return false;
27791    }
27792    return true;
27793  }
27794
27795  protected SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent parseSubstanceSourceMaterialPartDescriptionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27796    SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent();
27797    parseElementAttributes(xpp, res);
27798    next(xpp);
27799    int eventType = nextNoWhitespace(xpp);
27800    while (eventType != XmlPullParser.END_TAG) {
27801    if (!parseSubstanceSourceMaterialPartDescriptionComponentContent(eventType, xpp, res))
27802        unknownContent(xpp);
27803      eventType = nextNoWhitespace(xpp);
27804    }
27805    next(xpp);
27806    parseElementClose(res);
27807    return res;
27808  }
27809
27810  protected boolean parseSubstanceSourceMaterialPartDescriptionComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27811    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
27812      res.setPart(parseCodeableConcept(xpp));
27813    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partLocation")) {
27814      res.setPartLocation(parseCodeableConcept(xpp));
27815    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27816      return false;
27817    }
27818    return true;
27819  }
27820
27821  protected SupplyDelivery parseSupplyDelivery(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27822    SupplyDelivery res = new SupplyDelivery();
27823    parseResourceAttributes(xpp, res);
27824    next(xpp);
27825    int eventType = nextNoWhitespace(xpp);
27826    while (eventType != XmlPullParser.END_TAG) {
27827    if (!parseSupplyDeliveryContent(eventType, xpp, res))
27828        unknownContent(xpp);
27829      eventType = nextNoWhitespace(xpp);
27830    }
27831    next(xpp);
27832    parseElementClose(res);
27833    return res;
27834  }
27835
27836  protected boolean parseSupplyDeliveryContent(int eventType, XmlPullParser xpp, SupplyDelivery res) throws XmlPullParserException, IOException, FHIRFormatError {
27837    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
27838      res.getIdentifier().add(parseIdentifier(xpp));
27839    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
27840      res.getBasedOn().add(parseReference(xpp));
27841    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
27842      res.getPartOf().add(parseReference(xpp));
27843    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
27844      res.setStatusElement(parseEnumeration(xpp, SupplyDelivery.SupplyDeliveryStatus.NULL, new SupplyDelivery.SupplyDeliveryStatusEnumFactory()));
27845    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
27846      res.setPatient(parseReference(xpp));
27847    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
27848      res.setType(parseCodeableConcept(xpp));
27849    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suppliedItem")) {
27850      res.getSuppliedItem().add(parseSupplyDeliverySuppliedItemComponent(xpp));
27851    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
27852      res.setOccurrence(parseType("occurrence", xpp));
27853    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
27854      res.setSupplier(parseReference(xpp));
27855    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
27856      res.setDestination(parseReference(xpp));
27857    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
27858      res.getReceiver().add(parseReference(xpp));
27859    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
27860      return false;
27861    }
27862    return true;
27863  }
27864
27865  protected SupplyDelivery.SupplyDeliverySuppliedItemComponent parseSupplyDeliverySuppliedItemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27866    SupplyDelivery.SupplyDeliverySuppliedItemComponent res = new SupplyDelivery.SupplyDeliverySuppliedItemComponent();
27867    parseElementAttributes(xpp, res);
27868    next(xpp);
27869    int eventType = nextNoWhitespace(xpp);
27870    while (eventType != XmlPullParser.END_TAG) {
27871    if (!parseSupplyDeliverySuppliedItemComponentContent(eventType, xpp, res))
27872        unknownContent(xpp);
27873      eventType = nextNoWhitespace(xpp);
27874    }
27875    next(xpp);
27876    parseElementClose(res);
27877    return res;
27878  }
27879
27880  protected boolean parseSupplyDeliverySuppliedItemComponentContent(int eventType, XmlPullParser xpp, SupplyDelivery.SupplyDeliverySuppliedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27881    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
27882      res.setQuantity(parseQuantity(xpp));
27883    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
27884      res.setItem(parseType("item", xpp));
27885    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27886      return false;
27887    }
27888    return true;
27889  }
27890
27891  protected SupplyRequest parseSupplyRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27892    SupplyRequest res = new SupplyRequest();
27893    parseResourceAttributes(xpp, res);
27894    next(xpp);
27895    int eventType = nextNoWhitespace(xpp);
27896    while (eventType != XmlPullParser.END_TAG) {
27897    if (!parseSupplyRequestContent(eventType, xpp, res))
27898        unknownContent(xpp);
27899      eventType = nextNoWhitespace(xpp);
27900    }
27901    next(xpp);
27902    parseElementClose(res);
27903    return res;
27904  }
27905
27906  protected boolean parseSupplyRequestContent(int eventType, XmlPullParser xpp, SupplyRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
27907    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
27908      res.getIdentifier().add(parseIdentifier(xpp));
27909    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
27910      res.setStatusElement(parseEnumeration(xpp, SupplyRequest.SupplyRequestStatus.NULL, new SupplyRequest.SupplyRequestStatusEnumFactory()));
27911    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
27912      res.getBasedOn().add(parseReference(xpp));
27913    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
27914      res.setCategory(parseCodeableConcept(xpp));
27915    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
27916      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
27917    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverFor")) {
27918      res.setDeliverFor(parseReference(xpp));
27919    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
27920      res.setItem(parseCodeableReference(xpp));
27921    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
27922      res.setQuantity(parseQuantity(xpp));
27923    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
27924      res.getParameter().add(parseSupplyRequestParameterComponent(xpp));
27925    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
27926      res.setOccurrence(parseType("occurrence", xpp));
27927    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
27928      res.setAuthoredOnElement(parseDateTime(xpp));
27929    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
27930      res.setRequester(parseReference(xpp));
27931    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
27932      res.getSupplier().add(parseReference(xpp));
27933    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
27934      res.getReason().add(parseCodeableReference(xpp));
27935    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverFrom")) {
27936      res.setDeliverFrom(parseReference(xpp));
27937    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverTo")) {
27938      res.setDeliverTo(parseReference(xpp));
27939    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
27940      return false;
27941    }
27942    return true;
27943  }
27944
27945  protected SupplyRequest.SupplyRequestParameterComponent parseSupplyRequestParameterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27946    SupplyRequest.SupplyRequestParameterComponent res = new SupplyRequest.SupplyRequestParameterComponent();
27947    parseElementAttributes(xpp, res);
27948    next(xpp);
27949    int eventType = nextNoWhitespace(xpp);
27950    while (eventType != XmlPullParser.END_TAG) {
27951    if (!parseSupplyRequestParameterComponentContent(eventType, xpp, res))
27952        unknownContent(xpp);
27953      eventType = nextNoWhitespace(xpp);
27954    }
27955    next(xpp);
27956    parseElementClose(res);
27957    return res;
27958  }
27959
27960  protected boolean parseSupplyRequestParameterComponentContent(int eventType, XmlPullParser xpp, SupplyRequest.SupplyRequestParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
27961    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
27962      res.setCode(parseCodeableConcept(xpp));
27963    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
27964      res.setValue(parseType("value", xpp));
27965    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
27966      return false;
27967    }
27968    return true;
27969  }
27970
27971  protected Task parseTask(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
27972    Task res = new Task();
27973    parseResourceAttributes(xpp, res);
27974    next(xpp);
27975    int eventType = nextNoWhitespace(xpp);
27976    while (eventType != XmlPullParser.END_TAG) {
27977    if (!parseTaskContent(eventType, xpp, res))
27978        unknownContent(xpp);
27979      eventType = nextNoWhitespace(xpp);
27980    }
27981    next(xpp);
27982    parseElementClose(res);
27983    return res;
27984  }
27985
27986  protected boolean parseTaskContent(int eventType, XmlPullParser xpp, Task res) throws XmlPullParserException, IOException, FHIRFormatError {
27987    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
27988      res.getIdentifier().add(parseIdentifier(xpp));
27989    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
27990      res.setInstantiatesCanonicalElement(parseCanonical(xpp));
27991    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
27992      res.setInstantiatesUriElement(parseUri(xpp));
27993    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
27994      res.getBasedOn().add(parseReference(xpp));
27995    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
27996      res.setGroupIdentifier(parseIdentifier(xpp));
27997    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
27998      res.getPartOf().add(parseReference(xpp));
27999    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
28000      res.setStatusElement(parseEnumeration(xpp, Task.TaskStatus.NULL, new Task.TaskStatusEnumFactory()));
28001    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
28002      res.setStatusReason(parseCodeableReference(xpp));
28003    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessStatus")) {
28004      res.setBusinessStatus(parseCodeableConcept(xpp));
28005    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
28006      res.setIntentElement(parseEnumeration(xpp, Task.TaskIntent.NULL, new Task.TaskIntentEnumFactory()));
28007    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
28008      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
28009    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
28010      res.setDoNotPerformElement(parseBoolean(xpp));
28011    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
28012      res.setCode(parseCodeableConcept(xpp));
28013    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
28014      res.setDescriptionElement(parseString(xpp));
28015    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
28016      res.setFocus(parseReference(xpp));
28017    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("for")) {
28018      res.setFor(parseReference(xpp));
28019    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
28020      res.setEncounter(parseReference(xpp));
28021    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestedPeriod")) {
28022      res.setRequestedPeriod(parsePeriod(xpp));
28023    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("executionPeriod")) {
28024      res.setExecutionPeriod(parsePeriod(xpp));
28025    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
28026      res.setAuthoredOnElement(parseDateTime(xpp));
28027    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
28028      res.setLastModifiedElement(parseDateTime(xpp));
28029    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
28030      res.setRequester(parseReference(xpp));
28031    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestedPerformer")) {
28032      res.getRequestedPerformer().add(parseCodeableReference(xpp));
28033    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
28034      res.setOwner(parseReference(xpp));
28035    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
28036      res.getPerformer().add(parseTaskPerformerComponent(xpp));
28037    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
28038      res.setLocation(parseReference(xpp));
28039    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
28040      res.getReason().add(parseCodeableReference(xpp));
28041    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
28042      res.getInsurance().add(parseReference(xpp));
28043    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
28044      res.getNote().add(parseAnnotation(xpp));
28045    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
28046      res.getRelevantHistory().add(parseReference(xpp));
28047    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restriction")) {
28048      res.setRestriction(parseTaskRestrictionComponent(xpp));
28049    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
28050      res.getInput().add(parseTaskInputComponent(xpp));
28051    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
28052      res.getOutput().add(parseTaskOutputComponent(xpp));
28053    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
28054      return false;
28055    }
28056    return true;
28057  }
28058
28059  protected Task.TaskPerformerComponent parseTaskPerformerComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28060    Task.TaskPerformerComponent res = new Task.TaskPerformerComponent();
28061    parseElementAttributes(xpp, res);
28062    next(xpp);
28063    int eventType = nextNoWhitespace(xpp);
28064    while (eventType != XmlPullParser.END_TAG) {
28065    if (!parseTaskPerformerComponentContent(eventType, xpp, res))
28066        unknownContent(xpp);
28067      eventType = nextNoWhitespace(xpp);
28068    }
28069    next(xpp);
28070    parseElementClose(res);
28071    return res;
28072  }
28073
28074  protected boolean parseTaskPerformerComponentContent(int eventType, XmlPullParser xpp, Task.TaskPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28075    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
28076      res.setFunction(parseCodeableConcept(xpp));
28077    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
28078      res.setActor(parseReference(xpp));
28079    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28080      return false;
28081    }
28082    return true;
28083  }
28084
28085  protected Task.TaskRestrictionComponent parseTaskRestrictionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28086    Task.TaskRestrictionComponent res = new Task.TaskRestrictionComponent();
28087    parseElementAttributes(xpp, res);
28088    next(xpp);
28089    int eventType = nextNoWhitespace(xpp);
28090    while (eventType != XmlPullParser.END_TAG) {
28091    if (!parseTaskRestrictionComponentContent(eventType, xpp, res))
28092        unknownContent(xpp);
28093      eventType = nextNoWhitespace(xpp);
28094    }
28095    next(xpp);
28096    parseElementClose(res);
28097    return res;
28098  }
28099
28100  protected boolean parseTaskRestrictionComponentContent(int eventType, XmlPullParser xpp, Task.TaskRestrictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28101    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repetitions")) {
28102      res.setRepetitionsElement(parsePositiveInt(xpp));
28103    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
28104      res.setPeriod(parsePeriod(xpp));
28105    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
28106      res.getRecipient().add(parseReference(xpp));
28107    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28108      return false;
28109    }
28110    return true;
28111  }
28112
28113  protected Task.TaskInputComponent parseTaskInputComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28114    Task.TaskInputComponent res = new Task.TaskInputComponent();
28115    parseElementAttributes(xpp, res);
28116    next(xpp);
28117    int eventType = nextNoWhitespace(xpp);
28118    while (eventType != XmlPullParser.END_TAG) {
28119    if (!parseTaskInputComponentContent(eventType, xpp, res))
28120        unknownContent(xpp);
28121      eventType = nextNoWhitespace(xpp);
28122    }
28123    next(xpp);
28124    parseElementClose(res);
28125    return res;
28126  }
28127
28128  protected boolean parseTaskInputComponentContent(int eventType, XmlPullParser xpp, Task.TaskInputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28129    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
28130      res.setType(parseCodeableConcept(xpp));
28131    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
28132      res.setValue(parseType("value", xpp));
28133    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28134      return false;
28135    }
28136    return true;
28137  }
28138
28139  protected Task.TaskOutputComponent parseTaskOutputComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28140    Task.TaskOutputComponent res = new Task.TaskOutputComponent();
28141    parseElementAttributes(xpp, res);
28142    next(xpp);
28143    int eventType = nextNoWhitespace(xpp);
28144    while (eventType != XmlPullParser.END_TAG) {
28145    if (!parseTaskOutputComponentContent(eventType, xpp, res))
28146        unknownContent(xpp);
28147      eventType = nextNoWhitespace(xpp);
28148    }
28149    next(xpp);
28150    parseElementClose(res);
28151    return res;
28152  }
28153
28154  protected boolean parseTaskOutputComponentContent(int eventType, XmlPullParser xpp, Task.TaskOutputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28155    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
28156      res.setType(parseCodeableConcept(xpp));
28157    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
28158      res.setValue(parseType("value", xpp));
28159    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28160      return false;
28161    }
28162    return true;
28163  }
28164
28165  protected TerminologyCapabilities parseTerminologyCapabilities(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28166    TerminologyCapabilities res = new TerminologyCapabilities();
28167    parseResourceAttributes(xpp, res);
28168    next(xpp);
28169    int eventType = nextNoWhitespace(xpp);
28170    while (eventType != XmlPullParser.END_TAG) {
28171    if (!parseTerminologyCapabilitiesContent(eventType, xpp, res))
28172        unknownContent(xpp);
28173      eventType = nextNoWhitespace(xpp);
28174    }
28175    next(xpp);
28176    parseElementClose(res);
28177    return res;
28178  }
28179
28180  protected boolean parseTerminologyCapabilitiesContent(int eventType, XmlPullParser xpp, TerminologyCapabilities res) throws XmlPullParserException, IOException, FHIRFormatError {
28181    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
28182      res.setUrlElement(parseUri(xpp));
28183    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
28184      res.getIdentifier().add(parseIdentifier(xpp));
28185    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
28186      res.setVersionElement(parseString(xpp));
28187    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
28188      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
28189    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
28190      res.setNameElement(parseString(xpp));
28191    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
28192      res.setTitleElement(parseString(xpp));
28193    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
28194      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
28195    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
28196      res.setExperimentalElement(parseBoolean(xpp));
28197    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
28198      res.setDateElement(parseDateTime(xpp));
28199    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
28200      res.setPublisherElement(parseString(xpp));
28201    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
28202      res.getContact().add(parseContactDetail(xpp));
28203    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
28204      res.setDescriptionElement(parseMarkdown(xpp));
28205    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
28206      res.getUseContext().add(parseUsageContext(xpp));
28207    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
28208      res.getJurisdiction().add(parseCodeableConcept(xpp));
28209    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
28210      res.setPurposeElement(parseMarkdown(xpp));
28211    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
28212      res.setCopyrightElement(parseMarkdown(xpp));
28213    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
28214      res.setCopyrightLabelElement(parseString(xpp));
28215    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
28216      res.setKindElement(parseEnumeration(xpp, Enumerations.CapabilityStatementKind.NULL, new Enumerations.CapabilityStatementKindEnumFactory()));
28217    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
28218      res.setSoftware(parseTerminologyCapabilitiesSoftwareComponent(xpp));
28219    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementation")) {
28220      res.setImplementation(parseTerminologyCapabilitiesImplementationComponent(xpp));
28221    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lockedDate")) {
28222      res.setLockedDateElement(parseBoolean(xpp));
28223    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
28224      res.getCodeSystem().add(parseTerminologyCapabilitiesCodeSystemComponent(xpp));
28225    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expansion")) {
28226      res.setExpansion(parseTerminologyCapabilitiesExpansionComponent(xpp));
28227    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSearch")) {
28228      res.setCodeSearchElement(parseEnumeration(xpp, TerminologyCapabilities.CodeSearchSupport.NULL, new TerminologyCapabilities.CodeSearchSupportEnumFactory()));
28229    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validateCode")) {
28230      res.setValidateCode(parseTerminologyCapabilitiesValidateCodeComponent(xpp));
28231    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translation")) {
28232      res.setTranslation(parseTerminologyCapabilitiesTranslationComponent(xpp));
28233    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("closure")) {
28234      res.setClosure(parseTerminologyCapabilitiesClosureComponent(xpp));
28235    } else if (!parseCanonicalResourceContent(eventType, xpp, res)){ 
28236      return false;
28237    }
28238    return true;
28239  }
28240
28241  protected TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent parseTerminologyCapabilitiesSoftwareComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28242    TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent res = new TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent();
28243    parseElementAttributes(xpp, res);
28244    next(xpp);
28245    int eventType = nextNoWhitespace(xpp);
28246    while (eventType != XmlPullParser.END_TAG) {
28247    if (!parseTerminologyCapabilitiesSoftwareComponentContent(eventType, xpp, res))
28248        unknownContent(xpp);
28249      eventType = nextNoWhitespace(xpp);
28250    }
28251    next(xpp);
28252    parseElementClose(res);
28253    return res;
28254  }
28255
28256  protected boolean parseTerminologyCapabilitiesSoftwareComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28257    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
28258      res.setNameElement(parseString(xpp));
28259    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
28260      res.setVersionElement(parseString(xpp));
28261    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28262      return false;
28263    }
28264    return true;
28265  }
28266
28267  protected TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent parseTerminologyCapabilitiesImplementationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28268    TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent res = new TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent();
28269    parseElementAttributes(xpp, res);
28270    next(xpp);
28271    int eventType = nextNoWhitespace(xpp);
28272    while (eventType != XmlPullParser.END_TAG) {
28273    if (!parseTerminologyCapabilitiesImplementationComponentContent(eventType, xpp, res))
28274        unknownContent(xpp);
28275      eventType = nextNoWhitespace(xpp);
28276    }
28277    next(xpp);
28278    parseElementClose(res);
28279    return res;
28280  }
28281
28282  protected boolean parseTerminologyCapabilitiesImplementationComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28283    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
28284      res.setDescriptionElement(parseString(xpp));
28285    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
28286      res.setUrlElement(parseUrl(xpp));
28287    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28288      return false;
28289    }
28290    return true;
28291  }
28292
28293  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent parseTerminologyCapabilitiesCodeSystemComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28294    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent();
28295    parseElementAttributes(xpp, res);
28296    next(xpp);
28297    int eventType = nextNoWhitespace(xpp);
28298    while (eventType != XmlPullParser.END_TAG) {
28299    if (!parseTerminologyCapabilitiesCodeSystemComponentContent(eventType, xpp, res))
28300        unknownContent(xpp);
28301      eventType = nextNoWhitespace(xpp);
28302    }
28303    next(xpp);
28304    parseElementClose(res);
28305    return res;
28306  }
28307
28308  protected boolean parseTerminologyCapabilitiesCodeSystemComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28309    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
28310      res.setUriElement(parseCanonical(xpp));
28311    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
28312      res.getVersion().add(parseTerminologyCapabilitiesCodeSystemVersionComponent(xpp));
28313    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
28314      res.setContentElement(parseEnumeration(xpp, Enumerations.CodeSystemContentMode.NULL, new Enumerations.CodeSystemContentModeEnumFactory()));
28315    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subsumption")) {
28316      res.setSubsumptionElement(parseBoolean(xpp));
28317    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28318      return false;
28319    }
28320    return true;
28321  }
28322
28323  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent parseTerminologyCapabilitiesCodeSystemVersionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28324    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent();
28325    parseElementAttributes(xpp, res);
28326    next(xpp);
28327    int eventType = nextNoWhitespace(xpp);
28328    while (eventType != XmlPullParser.END_TAG) {
28329    if (!parseTerminologyCapabilitiesCodeSystemVersionComponentContent(eventType, xpp, res))
28330        unknownContent(xpp);
28331      eventType = nextNoWhitespace(xpp);
28332    }
28333    next(xpp);
28334    parseElementClose(res);
28335    return res;
28336  }
28337
28338  protected boolean parseTerminologyCapabilitiesCodeSystemVersionComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28339    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
28340      res.setCodeElement(parseString(xpp));
28341    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDefault")) {
28342      res.setIsDefaultElement(parseBoolean(xpp));
28343    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositional")) {
28344      res.setCompositionalElement(parseBoolean(xpp));
28345    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
28346      res.getLanguage().add(parseEnumeration(xpp, Enumerations.CommonLanguages.NULL, new Enumerations.CommonLanguagesEnumFactory()));
28347    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
28348      res.getFilter().add(parseTerminologyCapabilitiesCodeSystemVersionFilterComponent(xpp));
28349    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
28350      res.getProperty().add(parseCode(xpp));
28351    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28352      return false;
28353    }
28354    return true;
28355  }
28356
28357  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent parseTerminologyCapabilitiesCodeSystemVersionFilterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28358    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent();
28359    parseElementAttributes(xpp, res);
28360    next(xpp);
28361    int eventType = nextNoWhitespace(xpp);
28362    while (eventType != XmlPullParser.END_TAG) {
28363    if (!parseTerminologyCapabilitiesCodeSystemVersionFilterComponentContent(eventType, xpp, res))
28364        unknownContent(xpp);
28365      eventType = nextNoWhitespace(xpp);
28366    }
28367    next(xpp);
28368    parseElementClose(res);
28369    return res;
28370  }
28371
28372  protected boolean parseTerminologyCapabilitiesCodeSystemVersionFilterComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28373    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
28374      res.setCodeElement(parseCode(xpp));
28375    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("op")) {
28376      res.getOp().add(parseCode(xpp));
28377    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28378      return false;
28379    }
28380    return true;
28381  }
28382
28383  protected TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent parseTerminologyCapabilitiesExpansionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28384    TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent res = new TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent();
28385    parseElementAttributes(xpp, res);
28386    next(xpp);
28387    int eventType = nextNoWhitespace(xpp);
28388    while (eventType != XmlPullParser.END_TAG) {
28389    if (!parseTerminologyCapabilitiesExpansionComponentContent(eventType, xpp, res))
28390        unknownContent(xpp);
28391      eventType = nextNoWhitespace(xpp);
28392    }
28393    next(xpp);
28394    parseElementClose(res);
28395    return res;
28396  }
28397
28398  protected boolean parseTerminologyCapabilitiesExpansionComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28399    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hierarchical")) {
28400      res.setHierarchicalElement(parseBoolean(xpp));
28401    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paging")) {
28402      res.setPagingElement(parseBoolean(xpp));
28403    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incomplete")) {
28404      res.setIncompleteElement(parseBoolean(xpp));
28405    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
28406      res.getParameter().add(parseTerminologyCapabilitiesExpansionParameterComponent(xpp));
28407    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textFilter")) {
28408      res.setTextFilterElement(parseMarkdown(xpp));
28409    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28410      return false;
28411    }
28412    return true;
28413  }
28414
28415  protected TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent parseTerminologyCapabilitiesExpansionParameterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28416    TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent res = new TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent();
28417    parseElementAttributes(xpp, res);
28418    next(xpp);
28419    int eventType = nextNoWhitespace(xpp);
28420    while (eventType != XmlPullParser.END_TAG) {
28421    if (!parseTerminologyCapabilitiesExpansionParameterComponentContent(eventType, xpp, res))
28422        unknownContent(xpp);
28423      eventType = nextNoWhitespace(xpp);
28424    }
28425    next(xpp);
28426    parseElementClose(res);
28427    return res;
28428  }
28429
28430  protected boolean parseTerminologyCapabilitiesExpansionParameterComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28431    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
28432      res.setNameElement(parseCode(xpp));
28433    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
28434      res.setDocumentationElement(parseString(xpp));
28435    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28436      return false;
28437    }
28438    return true;
28439  }
28440
28441  protected TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent parseTerminologyCapabilitiesValidateCodeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28442    TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent res = new TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent();
28443    parseElementAttributes(xpp, res);
28444    next(xpp);
28445    int eventType = nextNoWhitespace(xpp);
28446    while (eventType != XmlPullParser.END_TAG) {
28447    if (!parseTerminologyCapabilitiesValidateCodeComponentContent(eventType, xpp, res))
28448        unknownContent(xpp);
28449      eventType = nextNoWhitespace(xpp);
28450    }
28451    next(xpp);
28452    parseElementClose(res);
28453    return res;
28454  }
28455
28456  protected boolean parseTerminologyCapabilitiesValidateCodeComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28457    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translations")) {
28458      res.setTranslationsElement(parseBoolean(xpp));
28459    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28460      return false;
28461    }
28462    return true;
28463  }
28464
28465  protected TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent parseTerminologyCapabilitiesTranslationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28466    TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent res = new TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent();
28467    parseElementAttributes(xpp, res);
28468    next(xpp);
28469    int eventType = nextNoWhitespace(xpp);
28470    while (eventType != XmlPullParser.END_TAG) {
28471    if (!parseTerminologyCapabilitiesTranslationComponentContent(eventType, xpp, res))
28472        unknownContent(xpp);
28473      eventType = nextNoWhitespace(xpp);
28474    }
28475    next(xpp);
28476    parseElementClose(res);
28477    return res;
28478  }
28479
28480  protected boolean parseTerminologyCapabilitiesTranslationComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28481    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("needsMap")) {
28482      res.setNeedsMapElement(parseBoolean(xpp));
28483    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28484      return false;
28485    }
28486    return true;
28487  }
28488
28489  protected TerminologyCapabilities.TerminologyCapabilitiesClosureComponent parseTerminologyCapabilitiesClosureComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28490    TerminologyCapabilities.TerminologyCapabilitiesClosureComponent res = new TerminologyCapabilities.TerminologyCapabilitiesClosureComponent();
28491    parseElementAttributes(xpp, res);
28492    next(xpp);
28493    int eventType = nextNoWhitespace(xpp);
28494    while (eventType != XmlPullParser.END_TAG) {
28495    if (!parseTerminologyCapabilitiesClosureComponentContent(eventType, xpp, res))
28496        unknownContent(xpp);
28497      eventType = nextNoWhitespace(xpp);
28498    }
28499    next(xpp);
28500    parseElementClose(res);
28501    return res;
28502  }
28503
28504  protected boolean parseTerminologyCapabilitiesClosureComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities.TerminologyCapabilitiesClosureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28505    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translation")) {
28506      res.setTranslationElement(parseBoolean(xpp));
28507    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28508      return false;
28509    }
28510    return true;
28511  }
28512
28513  protected TestPlan parseTestPlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28514    TestPlan res = new TestPlan();
28515    parseResourceAttributes(xpp, res);
28516    next(xpp);
28517    int eventType = nextNoWhitespace(xpp);
28518    while (eventType != XmlPullParser.END_TAG) {
28519    if (!parseTestPlanContent(eventType, xpp, res))
28520        unknownContent(xpp);
28521      eventType = nextNoWhitespace(xpp);
28522    }
28523    next(xpp);
28524    parseElementClose(res);
28525    return res;
28526  }
28527
28528  protected boolean parseTestPlanContent(int eventType, XmlPullParser xpp, TestPlan res) throws XmlPullParserException, IOException, FHIRFormatError {
28529    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
28530      res.setUrlElement(parseUri(xpp));
28531    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
28532      res.getIdentifier().add(parseIdentifier(xpp));
28533    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
28534      res.setVersionElement(parseString(xpp));
28535    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
28536      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
28537    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
28538      res.setNameElement(parseString(xpp));
28539    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
28540      res.setTitleElement(parseString(xpp));
28541    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
28542      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
28543    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
28544      res.setExperimentalElement(parseBoolean(xpp));
28545    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
28546      res.setDateElement(parseDateTime(xpp));
28547    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
28548      res.setPublisherElement(parseString(xpp));
28549    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
28550      res.getContact().add(parseContactDetail(xpp));
28551    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
28552      res.setDescriptionElement(parseMarkdown(xpp));
28553    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
28554      res.getUseContext().add(parseUsageContext(xpp));
28555    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
28556      res.getJurisdiction().add(parseCodeableConcept(xpp));
28557    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
28558      res.setPurposeElement(parseMarkdown(xpp));
28559    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
28560      res.setCopyrightElement(parseMarkdown(xpp));
28561    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
28562      res.setCopyrightLabelElement(parseString(xpp));
28563    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
28564      res.getCategory().add(parseCodeableConcept(xpp));
28565    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
28566      res.getScope().add(parseReference(xpp));
28567    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("testTools")) {
28568      res.setTestToolsElement(parseMarkdown(xpp));
28569    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependency")) {
28570      res.getDependency().add(parseTestPlanDependencyComponent(xpp));
28571    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exitCriteria")) {
28572      res.setExitCriteriaElement(parseMarkdown(xpp));
28573    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("testCase")) {
28574      res.getTestCase().add(parseTestPlanTestCaseComponent(xpp));
28575    } else if (!parseCanonicalResourceContent(eventType, xpp, res)){ 
28576      return false;
28577    }
28578    return true;
28579  }
28580
28581  protected TestPlan.TestPlanDependencyComponent parseTestPlanDependencyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28582    TestPlan.TestPlanDependencyComponent res = new TestPlan.TestPlanDependencyComponent();
28583    parseElementAttributes(xpp, res);
28584    next(xpp);
28585    int eventType = nextNoWhitespace(xpp);
28586    while (eventType != XmlPullParser.END_TAG) {
28587    if (!parseTestPlanDependencyComponentContent(eventType, xpp, res))
28588        unknownContent(xpp);
28589      eventType = nextNoWhitespace(xpp);
28590    }
28591    next(xpp);
28592    parseElementClose(res);
28593    return res;
28594  }
28595
28596  protected boolean parseTestPlanDependencyComponentContent(int eventType, XmlPullParser xpp, TestPlan.TestPlanDependencyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28597    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
28598      res.setDescriptionElement(parseMarkdown(xpp));
28599    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("predecessor")) {
28600      res.setPredecessor(parseReference(xpp));
28601    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28602      return false;
28603    }
28604    return true;
28605  }
28606
28607  protected TestPlan.TestPlanTestCaseComponent parseTestPlanTestCaseComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28608    TestPlan.TestPlanTestCaseComponent res = new TestPlan.TestPlanTestCaseComponent();
28609    parseElementAttributes(xpp, res);
28610    next(xpp);
28611    int eventType = nextNoWhitespace(xpp);
28612    while (eventType != XmlPullParser.END_TAG) {
28613    if (!parseTestPlanTestCaseComponentContent(eventType, xpp, res))
28614        unknownContent(xpp);
28615      eventType = nextNoWhitespace(xpp);
28616    }
28617    next(xpp);
28618    parseElementClose(res);
28619    return res;
28620  }
28621
28622  protected boolean parseTestPlanTestCaseComponentContent(int eventType, XmlPullParser xpp, TestPlan.TestPlanTestCaseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28623    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
28624      res.setSequenceElement(parseInteger(xpp));
28625    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
28626      res.getScope().add(parseReference(xpp));
28627    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependency")) {
28628      res.getDependency().add(parseTestPlanTestCaseDependencyComponent(xpp));
28629    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("testRun")) {
28630      res.getTestRun().add(parseTestPlanTestCaseTestRunComponent(xpp));
28631    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("testData")) {
28632      res.getTestData().add(parseTestPlanTestCaseTestDataComponent(xpp));
28633    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assertion")) {
28634      res.getAssertion().add(parseTestPlanTestCaseAssertionComponent(xpp));
28635    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28636      return false;
28637    }
28638    return true;
28639  }
28640
28641  protected TestPlan.TestCaseDependencyComponent parseTestPlanTestCaseDependencyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28642    TestPlan.TestCaseDependencyComponent res = new TestPlan.TestCaseDependencyComponent();
28643    parseElementAttributes(xpp, res);
28644    next(xpp);
28645    int eventType = nextNoWhitespace(xpp);
28646    while (eventType != XmlPullParser.END_TAG) {
28647    if (!parseTestPlanTestCaseDependencyComponentContent(eventType, xpp, res))
28648        unknownContent(xpp);
28649      eventType = nextNoWhitespace(xpp);
28650    }
28651    next(xpp);
28652    parseElementClose(res);
28653    return res;
28654  }
28655
28656  protected boolean parseTestPlanTestCaseDependencyComponentContent(int eventType, XmlPullParser xpp, TestPlan.TestCaseDependencyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28657    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
28658      res.setDescriptionElement(parseMarkdown(xpp));
28659    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("predecessor")) {
28660      res.setPredecessor(parseReference(xpp));
28661    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28662      return false;
28663    }
28664    return true;
28665  }
28666
28667  protected TestPlan.TestPlanTestCaseTestRunComponent parseTestPlanTestCaseTestRunComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28668    TestPlan.TestPlanTestCaseTestRunComponent res = new TestPlan.TestPlanTestCaseTestRunComponent();
28669    parseElementAttributes(xpp, res);
28670    next(xpp);
28671    int eventType = nextNoWhitespace(xpp);
28672    while (eventType != XmlPullParser.END_TAG) {
28673    if (!parseTestPlanTestCaseTestRunComponentContent(eventType, xpp, res))
28674        unknownContent(xpp);
28675      eventType = nextNoWhitespace(xpp);
28676    }
28677    next(xpp);
28678    parseElementClose(res);
28679    return res;
28680  }
28681
28682  protected boolean parseTestPlanTestCaseTestRunComponentContent(int eventType, XmlPullParser xpp, TestPlan.TestPlanTestCaseTestRunComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28683    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("narrative")) {
28684      res.setNarrativeElement(parseMarkdown(xpp));
28685    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("script")) {
28686      res.setScript(parseTestPlanTestCaseTestRunScriptComponent(xpp));
28687    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28688      return false;
28689    }
28690    return true;
28691  }
28692
28693  protected TestPlan.TestPlanTestCaseTestRunScriptComponent parseTestPlanTestCaseTestRunScriptComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28694    TestPlan.TestPlanTestCaseTestRunScriptComponent res = new TestPlan.TestPlanTestCaseTestRunScriptComponent();
28695    parseElementAttributes(xpp, res);
28696    next(xpp);
28697    int eventType = nextNoWhitespace(xpp);
28698    while (eventType != XmlPullParser.END_TAG) {
28699    if (!parseTestPlanTestCaseTestRunScriptComponentContent(eventType, xpp, res))
28700        unknownContent(xpp);
28701      eventType = nextNoWhitespace(xpp);
28702    }
28703    next(xpp);
28704    parseElementClose(res);
28705    return res;
28706  }
28707
28708  protected boolean parseTestPlanTestCaseTestRunScriptComponentContent(int eventType, XmlPullParser xpp, TestPlan.TestPlanTestCaseTestRunScriptComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28709    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
28710      res.setLanguage(parseCodeableConcept(xpp));
28711    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
28712      res.setSource(parseType("source", xpp));
28713    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28714      return false;
28715    }
28716    return true;
28717  }
28718
28719  protected TestPlan.TestPlanTestCaseTestDataComponent parseTestPlanTestCaseTestDataComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28720    TestPlan.TestPlanTestCaseTestDataComponent res = new TestPlan.TestPlanTestCaseTestDataComponent();
28721    parseElementAttributes(xpp, res);
28722    next(xpp);
28723    int eventType = nextNoWhitespace(xpp);
28724    while (eventType != XmlPullParser.END_TAG) {
28725    if (!parseTestPlanTestCaseTestDataComponentContent(eventType, xpp, res))
28726        unknownContent(xpp);
28727      eventType = nextNoWhitespace(xpp);
28728    }
28729    next(xpp);
28730    parseElementClose(res);
28731    return res;
28732  }
28733
28734  protected boolean parseTestPlanTestCaseTestDataComponentContent(int eventType, XmlPullParser xpp, TestPlan.TestPlanTestCaseTestDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28735    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
28736      res.setType(parseCoding(xpp));
28737    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
28738      res.setContent(parseReference(xpp));
28739    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
28740      res.setSource(parseType("source", xpp));
28741    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28742      return false;
28743    }
28744    return true;
28745  }
28746
28747  protected TestPlan.TestPlanTestCaseAssertionComponent parseTestPlanTestCaseAssertionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28748    TestPlan.TestPlanTestCaseAssertionComponent res = new TestPlan.TestPlanTestCaseAssertionComponent();
28749    parseElementAttributes(xpp, res);
28750    next(xpp);
28751    int eventType = nextNoWhitespace(xpp);
28752    while (eventType != XmlPullParser.END_TAG) {
28753    if (!parseTestPlanTestCaseAssertionComponentContent(eventType, xpp, res))
28754        unknownContent(xpp);
28755      eventType = nextNoWhitespace(xpp);
28756    }
28757    next(xpp);
28758    parseElementClose(res);
28759    return res;
28760  }
28761
28762  protected boolean parseTestPlanTestCaseAssertionComponentContent(int eventType, XmlPullParser xpp, TestPlan.TestPlanTestCaseAssertionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28763    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
28764      res.getType().add(parseCodeableConcept(xpp));
28765    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("object")) {
28766      res.getObject().add(parseCodeableReference(xpp));
28767    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
28768      res.getResult().add(parseCodeableReference(xpp));
28769    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28770      return false;
28771    }
28772    return true;
28773  }
28774
28775  protected TestReport parseTestReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28776    TestReport res = new TestReport();
28777    parseResourceAttributes(xpp, res);
28778    next(xpp);
28779    int eventType = nextNoWhitespace(xpp);
28780    while (eventType != XmlPullParser.END_TAG) {
28781    if (!parseTestReportContent(eventType, xpp, res))
28782        unknownContent(xpp);
28783      eventType = nextNoWhitespace(xpp);
28784    }
28785    next(xpp);
28786    parseElementClose(res);
28787    return res;
28788  }
28789
28790  protected boolean parseTestReportContent(int eventType, XmlPullParser xpp, TestReport res) throws XmlPullParserException, IOException, FHIRFormatError {
28791    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
28792      res.setIdentifier(parseIdentifier(xpp));
28793    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
28794      res.setNameElement(parseString(xpp));
28795    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
28796      res.setStatusElement(parseEnumeration(xpp, TestReport.TestReportStatus.NULL, new TestReport.TestReportStatusEnumFactory()));
28797    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("testScript")) {
28798      res.setTestScriptElement(parseCanonical(xpp));
28799    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
28800      res.setResultElement(parseEnumeration(xpp, TestReport.TestReportResult.NULL, new TestReport.TestReportResultEnumFactory()));
28801    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
28802      res.setScoreElement(parseDecimal(xpp));
28803    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tester")) {
28804      res.setTesterElement(parseString(xpp));
28805    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
28806      res.setIssuedElement(parseDateTime(xpp));
28807    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
28808      res.getParticipant().add(parseTestReportParticipantComponent(xpp));
28809    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
28810      res.setSetup(parseTestReportSetupComponent(xpp));
28811    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
28812      res.getTest().add(parseTestReportTestComponent(xpp));
28813    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
28814      res.setTeardown(parseTestReportTeardownComponent(xpp));
28815    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
28816      return false;
28817    }
28818    return true;
28819  }
28820
28821  protected TestReport.TestReportParticipantComponent parseTestReportParticipantComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28822    TestReport.TestReportParticipantComponent res = new TestReport.TestReportParticipantComponent();
28823    parseElementAttributes(xpp, res);
28824    next(xpp);
28825    int eventType = nextNoWhitespace(xpp);
28826    while (eventType != XmlPullParser.END_TAG) {
28827    if (!parseTestReportParticipantComponentContent(eventType, xpp, res))
28828        unknownContent(xpp);
28829      eventType = nextNoWhitespace(xpp);
28830    }
28831    next(xpp);
28832    parseElementClose(res);
28833    return res;
28834  }
28835
28836  protected boolean parseTestReportParticipantComponentContent(int eventType, XmlPullParser xpp, TestReport.TestReportParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28837    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
28838      res.setTypeElement(parseEnumeration(xpp, TestReport.TestReportParticipantType.NULL, new TestReport.TestReportParticipantTypeEnumFactory()));
28839    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
28840      res.setUriElement(parseUri(xpp));
28841    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
28842      res.setDisplayElement(parseString(xpp));
28843    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28844      return false;
28845    }
28846    return true;
28847  }
28848
28849  protected TestReport.TestReportSetupComponent parseTestReportSetupComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28850    TestReport.TestReportSetupComponent res = new TestReport.TestReportSetupComponent();
28851    parseElementAttributes(xpp, res);
28852    next(xpp);
28853    int eventType = nextNoWhitespace(xpp);
28854    while (eventType != XmlPullParser.END_TAG) {
28855    if (!parseTestReportSetupComponentContent(eventType, xpp, res))
28856        unknownContent(xpp);
28857      eventType = nextNoWhitespace(xpp);
28858    }
28859    next(xpp);
28860    parseElementClose(res);
28861    return res;
28862  }
28863
28864  protected boolean parseTestReportSetupComponentContent(int eventType, XmlPullParser xpp, TestReport.TestReportSetupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28865    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
28866      res.getAction().add(parseTestReportSetupActionComponent(xpp));
28867    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28868      return false;
28869    }
28870    return true;
28871  }
28872
28873  protected TestReport.SetupActionComponent parseTestReportSetupActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28874    TestReport.SetupActionComponent res = new TestReport.SetupActionComponent();
28875    parseElementAttributes(xpp, res);
28876    next(xpp);
28877    int eventType = nextNoWhitespace(xpp);
28878    while (eventType != XmlPullParser.END_TAG) {
28879    if (!parseTestReportSetupActionComponentContent(eventType, xpp, res))
28880        unknownContent(xpp);
28881      eventType = nextNoWhitespace(xpp);
28882    }
28883    next(xpp);
28884    parseElementClose(res);
28885    return res;
28886  }
28887
28888  protected boolean parseTestReportSetupActionComponentContent(int eventType, XmlPullParser xpp, TestReport.SetupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28889    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
28890      res.setOperation(parseTestReportSetupActionOperationComponent(xpp));
28891    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
28892      res.setAssert(parseTestReportSetupActionAssertComponent(xpp));
28893    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28894      return false;
28895    }
28896    return true;
28897  }
28898
28899  protected TestReport.SetupActionOperationComponent parseTestReportSetupActionOperationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28900    TestReport.SetupActionOperationComponent res = new TestReport.SetupActionOperationComponent();
28901    parseElementAttributes(xpp, res);
28902    next(xpp);
28903    int eventType = nextNoWhitespace(xpp);
28904    while (eventType != XmlPullParser.END_TAG) {
28905    if (!parseTestReportSetupActionOperationComponentContent(eventType, xpp, res))
28906        unknownContent(xpp);
28907      eventType = nextNoWhitespace(xpp);
28908    }
28909    next(xpp);
28910    parseElementClose(res);
28911    return res;
28912  }
28913
28914  protected boolean parseTestReportSetupActionOperationComponentContent(int eventType, XmlPullParser xpp, TestReport.SetupActionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28915    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
28916      res.setResultElement(parseEnumeration(xpp, TestReport.TestReportActionResult.NULL, new TestReport.TestReportActionResultEnumFactory()));
28917    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
28918      res.setMessageElement(parseMarkdown(xpp));
28919    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
28920      res.setDetailElement(parseUri(xpp));
28921    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28922      return false;
28923    }
28924    return true;
28925  }
28926
28927  protected TestReport.SetupActionAssertComponent parseTestReportSetupActionAssertComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28928    TestReport.SetupActionAssertComponent res = new TestReport.SetupActionAssertComponent();
28929    parseElementAttributes(xpp, res);
28930    next(xpp);
28931    int eventType = nextNoWhitespace(xpp);
28932    while (eventType != XmlPullParser.END_TAG) {
28933    if (!parseTestReportSetupActionAssertComponentContent(eventType, xpp, res))
28934        unknownContent(xpp);
28935      eventType = nextNoWhitespace(xpp);
28936    }
28937    next(xpp);
28938    parseElementClose(res);
28939    return res;
28940  }
28941
28942  protected boolean parseTestReportSetupActionAssertComponentContent(int eventType, XmlPullParser xpp, TestReport.SetupActionAssertComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28943    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
28944      res.setResultElement(parseEnumeration(xpp, TestReport.TestReportActionResult.NULL, new TestReport.TestReportActionResultEnumFactory()));
28945    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
28946      res.setMessageElement(parseMarkdown(xpp));
28947    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
28948      res.setDetailElement(parseString(xpp));
28949    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
28950      res.getRequirement().add(parseTestReportSetupActionAssertRequirementComponent(xpp));
28951    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28952      return false;
28953    }
28954    return true;
28955  }
28956
28957  protected TestReport.SetupActionAssertRequirementComponent parseTestReportSetupActionAssertRequirementComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28958    TestReport.SetupActionAssertRequirementComponent res = new TestReport.SetupActionAssertRequirementComponent();
28959    parseElementAttributes(xpp, res);
28960    next(xpp);
28961    int eventType = nextNoWhitespace(xpp);
28962    while (eventType != XmlPullParser.END_TAG) {
28963    if (!parseTestReportSetupActionAssertRequirementComponentContent(eventType, xpp, res))
28964        unknownContent(xpp);
28965      eventType = nextNoWhitespace(xpp);
28966    }
28967    next(xpp);
28968    parseElementClose(res);
28969    return res;
28970  }
28971
28972  protected boolean parseTestReportSetupActionAssertRequirementComponentContent(int eventType, XmlPullParser xpp, TestReport.SetupActionAssertRequirementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28973    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "link")) {
28974      res.setLink(parseType("link", xpp));
28975    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
28976      return false;
28977    }
28978    return true;
28979  }
28980
28981  protected TestReport.TestReportTestComponent parseTestReportTestComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
28982    TestReport.TestReportTestComponent res = new TestReport.TestReportTestComponent();
28983    parseElementAttributes(xpp, res);
28984    next(xpp);
28985    int eventType = nextNoWhitespace(xpp);
28986    while (eventType != XmlPullParser.END_TAG) {
28987    if (!parseTestReportTestComponentContent(eventType, xpp, res))
28988        unknownContent(xpp);
28989      eventType = nextNoWhitespace(xpp);
28990    }
28991    next(xpp);
28992    parseElementClose(res);
28993    return res;
28994  }
28995
28996  protected boolean parseTestReportTestComponentContent(int eventType, XmlPullParser xpp, TestReport.TestReportTestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
28997    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
28998      res.setNameElement(parseString(xpp));
28999    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
29000      res.setDescriptionElement(parseString(xpp));
29001    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
29002      res.getAction().add(parseTestReportTestActionComponent(xpp));
29003    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29004      return false;
29005    }
29006    return true;
29007  }
29008
29009  protected TestReport.TestActionComponent parseTestReportTestActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29010    TestReport.TestActionComponent res = new TestReport.TestActionComponent();
29011    parseElementAttributes(xpp, res);
29012    next(xpp);
29013    int eventType = nextNoWhitespace(xpp);
29014    while (eventType != XmlPullParser.END_TAG) {
29015    if (!parseTestReportTestActionComponentContent(eventType, xpp, res))
29016        unknownContent(xpp);
29017      eventType = nextNoWhitespace(xpp);
29018    }
29019    next(xpp);
29020    parseElementClose(res);
29021    return res;
29022  }
29023
29024  protected boolean parseTestReportTestActionComponentContent(int eventType, XmlPullParser xpp, TestReport.TestActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29025    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
29026      res.setOperation(parseTestReportSetupActionOperationComponent(xpp));
29027    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
29028      res.setAssert(parseTestReportSetupActionAssertComponent(xpp));
29029    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29030      return false;
29031    }
29032    return true;
29033  }
29034
29035  protected TestReport.TestReportTeardownComponent parseTestReportTeardownComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29036    TestReport.TestReportTeardownComponent res = new TestReport.TestReportTeardownComponent();
29037    parseElementAttributes(xpp, res);
29038    next(xpp);
29039    int eventType = nextNoWhitespace(xpp);
29040    while (eventType != XmlPullParser.END_TAG) {
29041    if (!parseTestReportTeardownComponentContent(eventType, xpp, res))
29042        unknownContent(xpp);
29043      eventType = nextNoWhitespace(xpp);
29044    }
29045    next(xpp);
29046    parseElementClose(res);
29047    return res;
29048  }
29049
29050  protected boolean parseTestReportTeardownComponentContent(int eventType, XmlPullParser xpp, TestReport.TestReportTeardownComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29051    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
29052      res.getAction().add(parseTestReportTeardownActionComponent(xpp));
29053    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29054      return false;
29055    }
29056    return true;
29057  }
29058
29059  protected TestReport.TeardownActionComponent parseTestReportTeardownActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29060    TestReport.TeardownActionComponent res = new TestReport.TeardownActionComponent();
29061    parseElementAttributes(xpp, res);
29062    next(xpp);
29063    int eventType = nextNoWhitespace(xpp);
29064    while (eventType != XmlPullParser.END_TAG) {
29065    if (!parseTestReportTeardownActionComponentContent(eventType, xpp, res))
29066        unknownContent(xpp);
29067      eventType = nextNoWhitespace(xpp);
29068    }
29069    next(xpp);
29070    parseElementClose(res);
29071    return res;
29072  }
29073
29074  protected boolean parseTestReportTeardownActionComponentContent(int eventType, XmlPullParser xpp, TestReport.TeardownActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29075    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
29076      res.setOperation(parseTestReportSetupActionOperationComponent(xpp));
29077    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29078      return false;
29079    }
29080    return true;
29081  }
29082
29083  protected TestScript parseTestScript(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29084    TestScript res = new TestScript();
29085    parseResourceAttributes(xpp, res);
29086    next(xpp);
29087    int eventType = nextNoWhitespace(xpp);
29088    while (eventType != XmlPullParser.END_TAG) {
29089    if (!parseTestScriptContent(eventType, xpp, res))
29090        unknownContent(xpp);
29091      eventType = nextNoWhitespace(xpp);
29092    }
29093    next(xpp);
29094    parseElementClose(res);
29095    return res;
29096  }
29097
29098  protected boolean parseTestScriptContent(int eventType, XmlPullParser xpp, TestScript res) throws XmlPullParserException, IOException, FHIRFormatError {
29099    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
29100      res.setUrlElement(parseUri(xpp));
29101    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
29102      res.getIdentifier().add(parseIdentifier(xpp));
29103    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
29104      res.setVersionElement(parseString(xpp));
29105    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
29106      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
29107    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
29108      res.setNameElement(parseString(xpp));
29109    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
29110      res.setTitleElement(parseString(xpp));
29111    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
29112      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
29113    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
29114      res.setExperimentalElement(parseBoolean(xpp));
29115    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
29116      res.setDateElement(parseDateTime(xpp));
29117    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
29118      res.setPublisherElement(parseString(xpp));
29119    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
29120      res.getContact().add(parseContactDetail(xpp));
29121    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
29122      res.setDescriptionElement(parseMarkdown(xpp));
29123    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
29124      res.getUseContext().add(parseUsageContext(xpp));
29125    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
29126      res.getJurisdiction().add(parseCodeableConcept(xpp));
29127    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
29128      res.setPurposeElement(parseMarkdown(xpp));
29129    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
29130      res.setCopyrightElement(parseMarkdown(xpp));
29131    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
29132      res.setCopyrightLabelElement(parseString(xpp));
29133    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
29134      res.getOrigin().add(parseTestScriptOriginComponent(xpp));
29135    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
29136      res.getDestination().add(parseTestScriptDestinationComponent(xpp));
29137    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("metadata")) {
29138      res.setMetadata(parseTestScriptMetadataComponent(xpp));
29139    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
29140      res.getScope().add(parseTestScriptScopeComponent(xpp));
29141    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fixture")) {
29142      res.getFixture().add(parseTestScriptFixtureComponent(xpp));
29143    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
29144      res.getProfile().add(parseCanonical(xpp));
29145    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
29146      res.getVariable().add(parseTestScriptVariableComponent(xpp));
29147    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
29148      res.setSetup(parseTestScriptSetupComponent(xpp));
29149    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
29150      res.getTest().add(parseTestScriptTestComponent(xpp));
29151    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
29152      res.setTeardown(parseTestScriptTeardownComponent(xpp));
29153    } else if (!parseCanonicalResourceContent(eventType, xpp, res)){ 
29154      return false;
29155    }
29156    return true;
29157  }
29158
29159  protected TestScript.TestScriptOriginComponent parseTestScriptOriginComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29160    TestScript.TestScriptOriginComponent res = new TestScript.TestScriptOriginComponent();
29161    parseElementAttributes(xpp, res);
29162    next(xpp);
29163    int eventType = nextNoWhitespace(xpp);
29164    while (eventType != XmlPullParser.END_TAG) {
29165    if (!parseTestScriptOriginComponentContent(eventType, xpp, res))
29166        unknownContent(xpp);
29167      eventType = nextNoWhitespace(xpp);
29168    }
29169    next(xpp);
29170    parseElementClose(res);
29171    return res;
29172  }
29173
29174  protected boolean parseTestScriptOriginComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptOriginComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29175    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
29176      res.setIndexElement(parseInteger(xpp));
29177    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
29178      res.setProfile(parseCoding(xpp));
29179    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
29180      res.setUrlElement(parseUrl(xpp));
29181    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29182      return false;
29183    }
29184    return true;
29185  }
29186
29187  protected TestScript.TestScriptDestinationComponent parseTestScriptDestinationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29188    TestScript.TestScriptDestinationComponent res = new TestScript.TestScriptDestinationComponent();
29189    parseElementAttributes(xpp, res);
29190    next(xpp);
29191    int eventType = nextNoWhitespace(xpp);
29192    while (eventType != XmlPullParser.END_TAG) {
29193    if (!parseTestScriptDestinationComponentContent(eventType, xpp, res))
29194        unknownContent(xpp);
29195      eventType = nextNoWhitespace(xpp);
29196    }
29197    next(xpp);
29198    parseElementClose(res);
29199    return res;
29200  }
29201
29202  protected boolean parseTestScriptDestinationComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptDestinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29203    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
29204      res.setIndexElement(parseInteger(xpp));
29205    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
29206      res.setProfile(parseCoding(xpp));
29207    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
29208      res.setUrlElement(parseUrl(xpp));
29209    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29210      return false;
29211    }
29212    return true;
29213  }
29214
29215  protected TestScript.TestScriptMetadataComponent parseTestScriptMetadataComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29216    TestScript.TestScriptMetadataComponent res = new TestScript.TestScriptMetadataComponent();
29217    parseElementAttributes(xpp, res);
29218    next(xpp);
29219    int eventType = nextNoWhitespace(xpp);
29220    while (eventType != XmlPullParser.END_TAG) {
29221    if (!parseTestScriptMetadataComponentContent(eventType, xpp, res))
29222        unknownContent(xpp);
29223      eventType = nextNoWhitespace(xpp);
29224    }
29225    next(xpp);
29226    parseElementClose(res);
29227    return res;
29228  }
29229
29230  protected boolean parseTestScriptMetadataComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptMetadataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29231    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
29232      res.getLink().add(parseTestScriptMetadataLinkComponent(xpp));
29233    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capability")) {
29234      res.getCapability().add(parseTestScriptMetadataCapabilityComponent(xpp));
29235    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29236      return false;
29237    }
29238    return true;
29239  }
29240
29241  protected TestScript.TestScriptMetadataLinkComponent parseTestScriptMetadataLinkComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29242    TestScript.TestScriptMetadataLinkComponent res = new TestScript.TestScriptMetadataLinkComponent();
29243    parseElementAttributes(xpp, res);
29244    next(xpp);
29245    int eventType = nextNoWhitespace(xpp);
29246    while (eventType != XmlPullParser.END_TAG) {
29247    if (!parseTestScriptMetadataLinkComponentContent(eventType, xpp, res))
29248        unknownContent(xpp);
29249      eventType = nextNoWhitespace(xpp);
29250    }
29251    next(xpp);
29252    parseElementClose(res);
29253    return res;
29254  }
29255
29256  protected boolean parseTestScriptMetadataLinkComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptMetadataLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29257    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
29258      res.setUrlElement(parseUri(xpp));
29259    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
29260      res.setDescriptionElement(parseString(xpp));
29261    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29262      return false;
29263    }
29264    return true;
29265  }
29266
29267  protected TestScript.TestScriptMetadataCapabilityComponent parseTestScriptMetadataCapabilityComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29268    TestScript.TestScriptMetadataCapabilityComponent res = new TestScript.TestScriptMetadataCapabilityComponent();
29269    parseElementAttributes(xpp, res);
29270    next(xpp);
29271    int eventType = nextNoWhitespace(xpp);
29272    while (eventType != XmlPullParser.END_TAG) {
29273    if (!parseTestScriptMetadataCapabilityComponentContent(eventType, xpp, res))
29274        unknownContent(xpp);
29275      eventType = nextNoWhitespace(xpp);
29276    }
29277    next(xpp);
29278    parseElementClose(res);
29279    return res;
29280  }
29281
29282  protected boolean parseTestScriptMetadataCapabilityComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptMetadataCapabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29283    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
29284      res.setRequiredElement(parseBoolean(xpp));
29285    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validated")) {
29286      res.setValidatedElement(parseBoolean(xpp));
29287    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
29288      res.setDescriptionElement(parseString(xpp));
29289    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
29290      res.getOrigin().add(parseInteger(xpp));
29291    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
29292      res.setDestinationElement(parseInteger(xpp));
29293    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
29294      res.getLink().add(parseUri(xpp));
29295    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capabilities")) {
29296      res.setCapabilitiesElement(parseCanonical(xpp));
29297    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29298      return false;
29299    }
29300    return true;
29301  }
29302
29303  protected TestScript.TestScriptScopeComponent parseTestScriptScopeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29304    TestScript.TestScriptScopeComponent res = new TestScript.TestScriptScopeComponent();
29305    parseElementAttributes(xpp, res);
29306    next(xpp);
29307    int eventType = nextNoWhitespace(xpp);
29308    while (eventType != XmlPullParser.END_TAG) {
29309    if (!parseTestScriptScopeComponentContent(eventType, xpp, res))
29310        unknownContent(xpp);
29311      eventType = nextNoWhitespace(xpp);
29312    }
29313    next(xpp);
29314    parseElementClose(res);
29315    return res;
29316  }
29317
29318  protected boolean parseTestScriptScopeComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptScopeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29319    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("artifact")) {
29320      res.setArtifactElement(parseCanonical(xpp));
29321    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conformance")) {
29322      res.setConformance(parseCodeableConcept(xpp));
29323    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("phase")) {
29324      res.setPhase(parseCodeableConcept(xpp));
29325    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29326      return false;
29327    }
29328    return true;
29329  }
29330
29331  protected TestScript.TestScriptFixtureComponent parseTestScriptFixtureComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29332    TestScript.TestScriptFixtureComponent res = new TestScript.TestScriptFixtureComponent();
29333    parseElementAttributes(xpp, res);
29334    next(xpp);
29335    int eventType = nextNoWhitespace(xpp);
29336    while (eventType != XmlPullParser.END_TAG) {
29337    if (!parseTestScriptFixtureComponentContent(eventType, xpp, res))
29338        unknownContent(xpp);
29339      eventType = nextNoWhitespace(xpp);
29340    }
29341    next(xpp);
29342    parseElementClose(res);
29343    return res;
29344  }
29345
29346  protected boolean parseTestScriptFixtureComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptFixtureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29347    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autocreate")) {
29348      res.setAutocreateElement(parseBoolean(xpp));
29349    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autodelete")) {
29350      res.setAutodeleteElement(parseBoolean(xpp));
29351    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
29352      res.setResource(parseReference(xpp));
29353    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29354      return false;
29355    }
29356    return true;
29357  }
29358
29359  protected TestScript.TestScriptVariableComponent parseTestScriptVariableComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29360    TestScript.TestScriptVariableComponent res = new TestScript.TestScriptVariableComponent();
29361    parseElementAttributes(xpp, res);
29362    next(xpp);
29363    int eventType = nextNoWhitespace(xpp);
29364    while (eventType != XmlPullParser.END_TAG) {
29365    if (!parseTestScriptVariableComponentContent(eventType, xpp, res))
29366        unknownContent(xpp);
29367      eventType = nextNoWhitespace(xpp);
29368    }
29369    next(xpp);
29370    parseElementClose(res);
29371    return res;
29372  }
29373
29374  protected boolean parseTestScriptVariableComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptVariableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29375    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
29376      res.setNameElement(parseString(xpp));
29377    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("defaultValue")) {
29378      res.setDefaultValueElement(parseString(xpp));
29379    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
29380      res.setDescriptionElement(parseString(xpp));
29381    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
29382      res.setExpressionElement(parseString(xpp));
29383    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
29384      res.setHeaderFieldElement(parseString(xpp));
29385    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hint")) {
29386      res.setHintElement(parseString(xpp));
29387    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
29388      res.setPathElement(parseString(xpp));
29389    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
29390      res.setSourceIdElement(parseId(xpp));
29391    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29392      return false;
29393    }
29394    return true;
29395  }
29396
29397  protected TestScript.TestScriptSetupComponent parseTestScriptSetupComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29398    TestScript.TestScriptSetupComponent res = new TestScript.TestScriptSetupComponent();
29399    parseElementAttributes(xpp, res);
29400    next(xpp);
29401    int eventType = nextNoWhitespace(xpp);
29402    while (eventType != XmlPullParser.END_TAG) {
29403    if (!parseTestScriptSetupComponentContent(eventType, xpp, res))
29404        unknownContent(xpp);
29405      eventType = nextNoWhitespace(xpp);
29406    }
29407    next(xpp);
29408    parseElementClose(res);
29409    return res;
29410  }
29411
29412  protected boolean parseTestScriptSetupComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptSetupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29413    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
29414      res.getAction().add(parseTestScriptSetupActionComponent(xpp));
29415    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29416      return false;
29417    }
29418    return true;
29419  }
29420
29421  protected TestScript.SetupActionComponent parseTestScriptSetupActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29422    TestScript.SetupActionComponent res = new TestScript.SetupActionComponent();
29423    parseElementAttributes(xpp, res);
29424    next(xpp);
29425    int eventType = nextNoWhitespace(xpp);
29426    while (eventType != XmlPullParser.END_TAG) {
29427    if (!parseTestScriptSetupActionComponentContent(eventType, xpp, res))
29428        unknownContent(xpp);
29429      eventType = nextNoWhitespace(xpp);
29430    }
29431    next(xpp);
29432    parseElementClose(res);
29433    return res;
29434  }
29435
29436  protected boolean parseTestScriptSetupActionComponentContent(int eventType, XmlPullParser xpp, TestScript.SetupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29437    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
29438      res.setOperation(parseTestScriptSetupActionOperationComponent(xpp));
29439    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
29440      res.setAssert(parseTestScriptSetupActionAssertComponent(xpp));
29441    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29442      return false;
29443    }
29444    return true;
29445  }
29446
29447  protected TestScript.SetupActionOperationComponent parseTestScriptSetupActionOperationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29448    TestScript.SetupActionOperationComponent res = new TestScript.SetupActionOperationComponent();
29449    parseElementAttributes(xpp, res);
29450    next(xpp);
29451    int eventType = nextNoWhitespace(xpp);
29452    while (eventType != XmlPullParser.END_TAG) {
29453    if (!parseTestScriptSetupActionOperationComponentContent(eventType, xpp, res))
29454        unknownContent(xpp);
29455      eventType = nextNoWhitespace(xpp);
29456    }
29457    next(xpp);
29458    parseElementClose(res);
29459    return res;
29460  }
29461
29462  protected boolean parseTestScriptSetupActionOperationComponentContent(int eventType, XmlPullParser xpp, TestScript.SetupActionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29463    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
29464      res.setType(parseCoding(xpp));
29465    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
29466      res.setResourceElement(parseUri(xpp));
29467    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
29468      res.setLabelElement(parseString(xpp));
29469    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
29470      res.setDescriptionElement(parseString(xpp));
29471    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accept")) {
29472      res.setAcceptElement(parseCode(xpp));
29473    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
29474      res.setContentTypeElement(parseCode(xpp));
29475    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
29476      res.setDestinationElement(parseInteger(xpp));
29477    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encodeRequestUrl")) {
29478      res.setEncodeRequestUrlElement(parseBoolean(xpp));
29479    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
29480      res.setMethodElement(parseEnumeration(xpp, TestScript.TestScriptRequestMethodCode.NULL, new TestScript.TestScriptRequestMethodCodeEnumFactory()));
29481    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
29482      res.setOriginElement(parseInteger(xpp));
29483    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("params")) {
29484      res.setParamsElement(parseString(xpp));
29485    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestHeader")) {
29486      res.getRequestHeader().add(parseTestScriptSetupActionOperationRequestHeaderComponent(xpp));
29487    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestId")) {
29488      res.setRequestIdElement(parseId(xpp));
29489    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseId")) {
29490      res.setResponseIdElement(parseId(xpp));
29491    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
29492      res.setSourceIdElement(parseId(xpp));
29493    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetId")) {
29494      res.setTargetIdElement(parseId(xpp));
29495    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
29496      res.setUrlElement(parseString(xpp));
29497    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29498      return false;
29499    }
29500    return true;
29501  }
29502
29503  protected TestScript.SetupActionOperationRequestHeaderComponent parseTestScriptSetupActionOperationRequestHeaderComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29504    TestScript.SetupActionOperationRequestHeaderComponent res = new TestScript.SetupActionOperationRequestHeaderComponent();
29505    parseElementAttributes(xpp, res);
29506    next(xpp);
29507    int eventType = nextNoWhitespace(xpp);
29508    while (eventType != XmlPullParser.END_TAG) {
29509    if (!parseTestScriptSetupActionOperationRequestHeaderComponentContent(eventType, xpp, res))
29510        unknownContent(xpp);
29511      eventType = nextNoWhitespace(xpp);
29512    }
29513    next(xpp);
29514    parseElementClose(res);
29515    return res;
29516  }
29517
29518  protected boolean parseTestScriptSetupActionOperationRequestHeaderComponentContent(int eventType, XmlPullParser xpp, TestScript.SetupActionOperationRequestHeaderComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29519    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("field")) {
29520      res.setFieldElement(parseString(xpp));
29521    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
29522      res.setValueElement(parseString(xpp));
29523    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29524      return false;
29525    }
29526    return true;
29527  }
29528
29529  protected TestScript.SetupActionAssertComponent parseTestScriptSetupActionAssertComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29530    TestScript.SetupActionAssertComponent res = new TestScript.SetupActionAssertComponent();
29531    parseElementAttributes(xpp, res);
29532    next(xpp);
29533    int eventType = nextNoWhitespace(xpp);
29534    while (eventType != XmlPullParser.END_TAG) {
29535    if (!parseTestScriptSetupActionAssertComponentContent(eventType, xpp, res))
29536        unknownContent(xpp);
29537      eventType = nextNoWhitespace(xpp);
29538    }
29539    next(xpp);
29540    parseElementClose(res);
29541    return res;
29542  }
29543
29544  protected boolean parseTestScriptSetupActionAssertComponentContent(int eventType, XmlPullParser xpp, TestScript.SetupActionAssertComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29545    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
29546      res.setLabelElement(parseString(xpp));
29547    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
29548      res.setDescriptionElement(parseString(xpp));
29549    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("direction")) {
29550      res.setDirectionElement(parseEnumeration(xpp, TestScript.AssertionDirectionType.NULL, new TestScript.AssertionDirectionTypeEnumFactory()));
29551    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceId")) {
29552      res.setCompareToSourceIdElement(parseString(xpp));
29553    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceExpression")) {
29554      res.setCompareToSourceExpressionElement(parseString(xpp));
29555    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourcePath")) {
29556      res.setCompareToSourcePathElement(parseString(xpp));
29557    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
29558      res.setContentTypeElement(parseCode(xpp));
29559    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("defaultManualCompletion")) {
29560      res.setDefaultManualCompletionElement(parseEnumeration(xpp, TestScript.AssertionManualCompletionType.NULL, new TestScript.AssertionManualCompletionTypeEnumFactory()));
29561    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
29562      res.setExpressionElement(parseString(xpp));
29563    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
29564      res.setHeaderFieldElement(parseString(xpp));
29565    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minimumId")) {
29566      res.setMinimumIdElement(parseString(xpp));
29567    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("navigationLinks")) {
29568      res.setNavigationLinksElement(parseBoolean(xpp));
29569    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
29570      res.setOperatorElement(parseEnumeration(xpp, TestScript.AssertionOperatorType.NULL, new TestScript.AssertionOperatorTypeEnumFactory()));
29571    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
29572      res.setPathElement(parseString(xpp));
29573    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestMethod")) {
29574      res.setRequestMethodElement(parseEnumeration(xpp, TestScript.TestScriptRequestMethodCode.NULL, new TestScript.TestScriptRequestMethodCodeEnumFactory()));
29575    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestURL")) {
29576      res.setRequestURLElement(parseString(xpp));
29577    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
29578      res.setResourceElement(parseUri(xpp));
29579    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
29580      res.setResponseElement(parseEnumeration(xpp, TestScript.AssertionResponseTypes.NULL, new TestScript.AssertionResponseTypesEnumFactory()));
29581    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseCode")) {
29582      res.setResponseCodeElement(parseString(xpp));
29583    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
29584      res.setSourceIdElement(parseId(xpp));
29585    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stopTestOnFail")) {
29586      res.setStopTestOnFailElement(parseBoolean(xpp));
29587    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validateProfileId")) {
29588      res.setValidateProfileIdElement(parseId(xpp));
29589    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
29590      res.setValueElement(parseString(xpp));
29591    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("warningOnly")) {
29592      res.setWarningOnlyElement(parseBoolean(xpp));
29593    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
29594      res.getRequirement().add(parseTestScriptSetupActionAssertRequirementComponent(xpp));
29595    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29596      return false;
29597    }
29598    return true;
29599  }
29600
29601  protected TestScript.SetupActionAssertRequirementComponent parseTestScriptSetupActionAssertRequirementComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29602    TestScript.SetupActionAssertRequirementComponent res = new TestScript.SetupActionAssertRequirementComponent();
29603    parseElementAttributes(xpp, res);
29604    next(xpp);
29605    int eventType = nextNoWhitespace(xpp);
29606    while (eventType != XmlPullParser.END_TAG) {
29607    if (!parseTestScriptSetupActionAssertRequirementComponentContent(eventType, xpp, res))
29608        unknownContent(xpp);
29609      eventType = nextNoWhitespace(xpp);
29610    }
29611    next(xpp);
29612    parseElementClose(res);
29613    return res;
29614  }
29615
29616  protected boolean parseTestScriptSetupActionAssertRequirementComponentContent(int eventType, XmlPullParser xpp, TestScript.SetupActionAssertRequirementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29617    if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "link")) {
29618      res.setLink(parseType("link", xpp));
29619    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29620      return false;
29621    }
29622    return true;
29623  }
29624
29625  protected TestScript.TestScriptTestComponent parseTestScriptTestComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29626    TestScript.TestScriptTestComponent res = new TestScript.TestScriptTestComponent();
29627    parseElementAttributes(xpp, res);
29628    next(xpp);
29629    int eventType = nextNoWhitespace(xpp);
29630    while (eventType != XmlPullParser.END_TAG) {
29631    if (!parseTestScriptTestComponentContent(eventType, xpp, res))
29632        unknownContent(xpp);
29633      eventType = nextNoWhitespace(xpp);
29634    }
29635    next(xpp);
29636    parseElementClose(res);
29637    return res;
29638  }
29639
29640  protected boolean parseTestScriptTestComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptTestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29641    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
29642      res.setNameElement(parseString(xpp));
29643    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
29644      res.setDescriptionElement(parseString(xpp));
29645    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
29646      res.getAction().add(parseTestScriptTestActionComponent(xpp));
29647    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29648      return false;
29649    }
29650    return true;
29651  }
29652
29653  protected TestScript.TestActionComponent parseTestScriptTestActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29654    TestScript.TestActionComponent res = new TestScript.TestActionComponent();
29655    parseElementAttributes(xpp, res);
29656    next(xpp);
29657    int eventType = nextNoWhitespace(xpp);
29658    while (eventType != XmlPullParser.END_TAG) {
29659    if (!parseTestScriptTestActionComponentContent(eventType, xpp, res))
29660        unknownContent(xpp);
29661      eventType = nextNoWhitespace(xpp);
29662    }
29663    next(xpp);
29664    parseElementClose(res);
29665    return res;
29666  }
29667
29668  protected boolean parseTestScriptTestActionComponentContent(int eventType, XmlPullParser xpp, TestScript.TestActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29669    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
29670      res.setOperation(parseTestScriptSetupActionOperationComponent(xpp));
29671    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
29672      res.setAssert(parseTestScriptSetupActionAssertComponent(xpp));
29673    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29674      return false;
29675    }
29676    return true;
29677  }
29678
29679  protected TestScript.TestScriptTeardownComponent parseTestScriptTeardownComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29680    TestScript.TestScriptTeardownComponent res = new TestScript.TestScriptTeardownComponent();
29681    parseElementAttributes(xpp, res);
29682    next(xpp);
29683    int eventType = nextNoWhitespace(xpp);
29684    while (eventType != XmlPullParser.END_TAG) {
29685    if (!parseTestScriptTeardownComponentContent(eventType, xpp, res))
29686        unknownContent(xpp);
29687      eventType = nextNoWhitespace(xpp);
29688    }
29689    next(xpp);
29690    parseElementClose(res);
29691    return res;
29692  }
29693
29694  protected boolean parseTestScriptTeardownComponentContent(int eventType, XmlPullParser xpp, TestScript.TestScriptTeardownComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29695    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
29696      res.getAction().add(parseTestScriptTeardownActionComponent(xpp));
29697    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29698      return false;
29699    }
29700    return true;
29701  }
29702
29703  protected TestScript.TeardownActionComponent parseTestScriptTeardownActionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29704    TestScript.TeardownActionComponent res = new TestScript.TeardownActionComponent();
29705    parseElementAttributes(xpp, res);
29706    next(xpp);
29707    int eventType = nextNoWhitespace(xpp);
29708    while (eventType != XmlPullParser.END_TAG) {
29709    if (!parseTestScriptTeardownActionComponentContent(eventType, xpp, res))
29710        unknownContent(xpp);
29711      eventType = nextNoWhitespace(xpp);
29712    }
29713    next(xpp);
29714    parseElementClose(res);
29715    return res;
29716  }
29717
29718  protected boolean parseTestScriptTeardownActionComponentContent(int eventType, XmlPullParser xpp, TestScript.TeardownActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29719    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
29720      res.setOperation(parseTestScriptSetupActionOperationComponent(xpp));
29721    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29722      return false;
29723    }
29724    return true;
29725  }
29726
29727  protected Transport parseTransport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29728    Transport res = new Transport();
29729    parseResourceAttributes(xpp, res);
29730    next(xpp);
29731    int eventType = nextNoWhitespace(xpp);
29732    while (eventType != XmlPullParser.END_TAG) {
29733    if (!parseTransportContent(eventType, xpp, res))
29734        unknownContent(xpp);
29735      eventType = nextNoWhitespace(xpp);
29736    }
29737    next(xpp);
29738    parseElementClose(res);
29739    return res;
29740  }
29741
29742  protected boolean parseTransportContent(int eventType, XmlPullParser xpp, Transport res) throws XmlPullParserException, IOException, FHIRFormatError {
29743    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
29744      res.getIdentifier().add(parseIdentifier(xpp));
29745    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
29746      res.setInstantiatesCanonicalElement(parseCanonical(xpp));
29747    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
29748      res.setInstantiatesUriElement(parseUri(xpp));
29749    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
29750      res.getBasedOn().add(parseReference(xpp));
29751    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
29752      res.setGroupIdentifier(parseIdentifier(xpp));
29753    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
29754      res.getPartOf().add(parseReference(xpp));
29755    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
29756      res.setStatusElement(parseEnumeration(xpp, Transport.TransportStatus.NULL, new Transport.TransportStatusEnumFactory()));
29757    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
29758      res.setStatusReason(parseCodeableConcept(xpp));
29759    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
29760      res.setIntentElement(parseEnumeration(xpp, Transport.TransportIntent.NULL, new Transport.TransportIntentEnumFactory()));
29761    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
29762      res.setPriorityElement(parseEnumeration(xpp, Enumerations.RequestPriority.NULL, new Enumerations.RequestPriorityEnumFactory()));
29763    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
29764      res.setCode(parseCodeableConcept(xpp));
29765    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
29766      res.setDescriptionElement(parseString(xpp));
29767    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
29768      res.setFocus(parseReference(xpp));
29769    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("for")) {
29770      res.setFor(parseReference(xpp));
29771    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
29772      res.setEncounter(parseReference(xpp));
29773    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("completionTime")) {
29774      res.setCompletionTimeElement(parseDateTime(xpp));
29775    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
29776      res.setAuthoredOnElement(parseDateTime(xpp));
29777    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
29778      res.setLastModifiedElement(parseDateTime(xpp));
29779    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
29780      res.setRequester(parseReference(xpp));
29781    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
29782      res.getPerformerType().add(parseCodeableConcept(xpp));
29783    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
29784      res.setOwner(parseReference(xpp));
29785    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
29786      res.setLocation(parseReference(xpp));
29787    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
29788      res.getInsurance().add(parseReference(xpp));
29789    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
29790      res.getNote().add(parseAnnotation(xpp));
29791    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
29792      res.getRelevantHistory().add(parseReference(xpp));
29793    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restriction")) {
29794      res.setRestriction(parseTransportRestrictionComponent(xpp));
29795    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
29796      res.getInput().add(parseTransportParameterComponent(xpp));
29797    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
29798      res.getOutput().add(parseTransportOutputComponent(xpp));
29799    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestedLocation")) {
29800      res.setRequestedLocation(parseReference(xpp));
29801    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("currentLocation")) {
29802      res.setCurrentLocation(parseReference(xpp));
29803    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
29804      res.setReason(parseCodeableReference(xpp));
29805    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("history")) {
29806      res.setHistory(parseReference(xpp));
29807    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
29808      return false;
29809    }
29810    return true;
29811  }
29812
29813  protected Transport.TransportRestrictionComponent parseTransportRestrictionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29814    Transport.TransportRestrictionComponent res = new Transport.TransportRestrictionComponent();
29815    parseElementAttributes(xpp, res);
29816    next(xpp);
29817    int eventType = nextNoWhitespace(xpp);
29818    while (eventType != XmlPullParser.END_TAG) {
29819    if (!parseTransportRestrictionComponentContent(eventType, xpp, res))
29820        unknownContent(xpp);
29821      eventType = nextNoWhitespace(xpp);
29822    }
29823    next(xpp);
29824    parseElementClose(res);
29825    return res;
29826  }
29827
29828  protected boolean parseTransportRestrictionComponentContent(int eventType, XmlPullParser xpp, Transport.TransportRestrictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29829    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repetitions")) {
29830      res.setRepetitionsElement(parsePositiveInt(xpp));
29831    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
29832      res.setPeriod(parsePeriod(xpp));
29833    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
29834      res.getRecipient().add(parseReference(xpp));
29835    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29836      return false;
29837    }
29838    return true;
29839  }
29840
29841  protected Transport.ParameterComponent parseTransportParameterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29842    Transport.ParameterComponent res = new Transport.ParameterComponent();
29843    parseElementAttributes(xpp, res);
29844    next(xpp);
29845    int eventType = nextNoWhitespace(xpp);
29846    while (eventType != XmlPullParser.END_TAG) {
29847    if (!parseTransportParameterComponentContent(eventType, xpp, res))
29848        unknownContent(xpp);
29849      eventType = nextNoWhitespace(xpp);
29850    }
29851    next(xpp);
29852    parseElementClose(res);
29853    return res;
29854  }
29855
29856  protected boolean parseTransportParameterComponentContent(int eventType, XmlPullParser xpp, Transport.ParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29857    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
29858      res.setType(parseCodeableConcept(xpp));
29859    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
29860      res.setValue(parseType("value", xpp));
29861    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29862      return false;
29863    }
29864    return true;
29865  }
29866
29867  protected Transport.TransportOutputComponent parseTransportOutputComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29868    Transport.TransportOutputComponent res = new Transport.TransportOutputComponent();
29869    parseElementAttributes(xpp, res);
29870    next(xpp);
29871    int eventType = nextNoWhitespace(xpp);
29872    while (eventType != XmlPullParser.END_TAG) {
29873    if (!parseTransportOutputComponentContent(eventType, xpp, res))
29874        unknownContent(xpp);
29875      eventType = nextNoWhitespace(xpp);
29876    }
29877    next(xpp);
29878    parseElementClose(res);
29879    return res;
29880  }
29881
29882  protected boolean parseTransportOutputComponentContent(int eventType, XmlPullParser xpp, Transport.TransportOutputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29883    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
29884      res.setType(parseCodeableConcept(xpp));
29885    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
29886      res.setValue(parseType("value", xpp));
29887    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
29888      return false;
29889    }
29890    return true;
29891  }
29892
29893  protected ValueSet parseValueSet(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29894    ValueSet res = new ValueSet();
29895    parseResourceAttributes(xpp, res);
29896    next(xpp);
29897    int eventType = nextNoWhitespace(xpp);
29898    while (eventType != XmlPullParser.END_TAG) {
29899    if (!parseValueSetContent(eventType, xpp, res))
29900        unknownContent(xpp);
29901      eventType = nextNoWhitespace(xpp);
29902    }
29903    next(xpp);
29904    parseElementClose(res);
29905    return res;
29906  }
29907
29908  protected boolean parseValueSetContent(int eventType, XmlPullParser xpp, ValueSet res) throws XmlPullParserException, IOException, FHIRFormatError {
29909    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
29910      res.setUrlElement(parseUri(xpp));
29911    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
29912      res.getIdentifier().add(parseIdentifier(xpp));
29913    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
29914      res.setVersionElement(parseString(xpp));
29915    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "versionAlgorithm")) {
29916      res.setVersionAlgorithm(parseType("versionAlgorithm", xpp));
29917    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
29918      res.setNameElement(parseString(xpp));
29919    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
29920      res.setTitleElement(parseString(xpp));
29921    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
29922      res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
29923    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
29924      res.setExperimentalElement(parseBoolean(xpp));
29925    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
29926      res.setDateElement(parseDateTime(xpp));
29927    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
29928      res.setPublisherElement(parseString(xpp));
29929    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
29930      res.getContact().add(parseContactDetail(xpp));
29931    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
29932      res.setDescriptionElement(parseMarkdown(xpp));
29933    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
29934      res.getUseContext().add(parseUsageContext(xpp));
29935    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
29936      res.getJurisdiction().add(parseCodeableConcept(xpp));
29937    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immutable")) {
29938      res.setImmutableElement(parseBoolean(xpp));
29939    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
29940      res.setPurposeElement(parseMarkdown(xpp));
29941    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
29942      res.setCopyrightElement(parseMarkdown(xpp));
29943    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyrightLabel")) {
29944      res.setCopyrightLabelElement(parseString(xpp));
29945    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
29946      res.setApprovalDateElement(parseDate(xpp));
29947    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
29948      res.setLastReviewDateElement(parseDate(xpp));
29949    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
29950      res.setEffectivePeriod(parsePeriod(xpp));
29951    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
29952      res.getTopic().add(parseCodeableConcept(xpp));
29953    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
29954      res.getAuthor().add(parseContactDetail(xpp));
29955    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
29956      res.getEditor().add(parseContactDetail(xpp));
29957    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
29958      res.getReviewer().add(parseContactDetail(xpp));
29959    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
29960      res.getEndorser().add(parseContactDetail(xpp));
29961    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
29962      res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
29963    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compose")) {
29964      res.setCompose(parseValueSetComposeComponent(xpp));
29965    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expansion")) {
29966      res.setExpansion(parseValueSetExpansionComponent(xpp));
29967    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
29968      res.setScope(parseValueSetScopeComponent(xpp));
29969    } else if (!parseMetadataResourceContent(eventType, xpp, res)){ 
29970      return false;
29971    }
29972    return true;
29973  }
29974
29975  protected ValueSet.ValueSetComposeComponent parseValueSetComposeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
29976    ValueSet.ValueSetComposeComponent res = new ValueSet.ValueSetComposeComponent();
29977    parseElementAttributes(xpp, res);
29978    next(xpp);
29979    int eventType = nextNoWhitespace(xpp);
29980    while (eventType != XmlPullParser.END_TAG) {
29981    if (!parseValueSetComposeComponentContent(eventType, xpp, res))
29982        unknownContent(xpp);
29983      eventType = nextNoWhitespace(xpp);
29984    }
29985    next(xpp);
29986    parseElementClose(res);
29987    return res;
29988  }
29989
29990  protected boolean parseValueSetComposeComponentContent(int eventType, XmlPullParser xpp, ValueSet.ValueSetComposeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
29991    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lockedDate")) {
29992      res.setLockedDateElement(parseDate(xpp));
29993    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
29994      res.setInactiveElement(parseBoolean(xpp));
29995    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
29996      res.getInclude().add(parseValueSetConceptSetComponent(xpp));
29997    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
29998      res.getExclude().add(parseValueSetConceptSetComponent(xpp));
29999    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
30000      res.getProperty().add(parseString(xpp));
30001    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
30002      return false;
30003    }
30004    return true;
30005  }
30006
30007  protected ValueSet.ConceptSetComponent parseValueSetConceptSetComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30008    ValueSet.ConceptSetComponent res = new ValueSet.ConceptSetComponent();
30009    parseElementAttributes(xpp, res);
30010    next(xpp);
30011    int eventType = nextNoWhitespace(xpp);
30012    while (eventType != XmlPullParser.END_TAG) {
30013    if (!parseValueSetConceptSetComponentContent(eventType, xpp, res))
30014        unknownContent(xpp);
30015      eventType = nextNoWhitespace(xpp);
30016    }
30017    next(xpp);
30018    parseElementClose(res);
30019    return res;
30020  }
30021
30022  protected boolean parseValueSetConceptSetComponentContent(int eventType, XmlPullParser xpp, ValueSet.ConceptSetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
30023    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
30024      res.setSystemElement(parseUri(xpp));
30025    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
30026      res.setVersionElement(parseString(xpp));
30027    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
30028      res.getConcept().add(parseValueSetConceptReferenceComponent(xpp));
30029    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
30030      res.getFilter().add(parseValueSetConceptSetFilterComponent(xpp));
30031    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
30032      res.getValueSet().add(parseCanonical(xpp));
30033    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
30034      res.setCopyrightElement(parseString(xpp));
30035    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
30036      return false;
30037    }
30038    return true;
30039  }
30040
30041  protected ValueSet.ConceptReferenceComponent parseValueSetConceptReferenceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30042    ValueSet.ConceptReferenceComponent res = new ValueSet.ConceptReferenceComponent();
30043    parseElementAttributes(xpp, res);
30044    next(xpp);
30045    int eventType = nextNoWhitespace(xpp);
30046    while (eventType != XmlPullParser.END_TAG) {
30047    if (!parseValueSetConceptReferenceComponentContent(eventType, xpp, res))
30048        unknownContent(xpp);
30049      eventType = nextNoWhitespace(xpp);
30050    }
30051    next(xpp);
30052    parseElementClose(res);
30053    return res;
30054  }
30055
30056  protected boolean parseValueSetConceptReferenceComponentContent(int eventType, XmlPullParser xpp, ValueSet.ConceptReferenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
30057    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
30058      res.setCodeElement(parseCode(xpp));
30059    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
30060      res.setDisplayElement(parseString(xpp));
30061    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
30062      res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp));
30063    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
30064      return false;
30065    }
30066    return true;
30067  }
30068
30069  protected ValueSet.ConceptReferenceDesignationComponent parseValueSetConceptReferenceDesignationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30070    ValueSet.ConceptReferenceDesignationComponent res = new ValueSet.ConceptReferenceDesignationComponent();
30071    parseElementAttributes(xpp, res);
30072    next(xpp);
30073    int eventType = nextNoWhitespace(xpp);
30074    while (eventType != XmlPullParser.END_TAG) {
30075    if (!parseValueSetConceptReferenceDesignationComponentContent(eventType, xpp, res))
30076        unknownContent(xpp);
30077      eventType = nextNoWhitespace(xpp);
30078    }
30079    next(xpp);
30080    parseElementClose(res);
30081    return res;
30082  }
30083
30084  protected boolean parseValueSetConceptReferenceDesignationComponentContent(int eventType, XmlPullParser xpp, ValueSet.ConceptReferenceDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
30085    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
30086      res.setLanguageElement(parseCode(xpp));
30087    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
30088      res.setUse(parseCoding(xpp));
30089    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalUse")) {
30090      res.getAdditionalUse().add(parseCoding(xpp));
30091    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
30092      res.setValueElement(parseString(xpp));
30093    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
30094      return false;
30095    }
30096    return true;
30097  }
30098
30099  protected ValueSet.ConceptSetFilterComponent parseValueSetConceptSetFilterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30100    ValueSet.ConceptSetFilterComponent res = new ValueSet.ConceptSetFilterComponent();
30101    parseElementAttributes(xpp, res);
30102    next(xpp);
30103    int eventType = nextNoWhitespace(xpp);
30104    while (eventType != XmlPullParser.END_TAG) {
30105    if (!parseValueSetConceptSetFilterComponentContent(eventType, xpp, res))
30106        unknownContent(xpp);
30107      eventType = nextNoWhitespace(xpp);
30108    }
30109    next(xpp);
30110    parseElementClose(res);
30111    return res;
30112  }
30113
30114  protected boolean parseValueSetConceptSetFilterComponentContent(int eventType, XmlPullParser xpp, ValueSet.ConceptSetFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
30115    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
30116      res.setPropertyElement(parseCode(xpp));
30117    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("op")) {
30118      res.setOpElement(parseEnumeration(xpp, Enumerations.FilterOperator.NULL, new Enumerations.FilterOperatorEnumFactory()));
30119    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
30120      res.setValueElement(parseString(xpp));
30121    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
30122      return false;
30123    }
30124    return true;
30125  }
30126
30127  protected ValueSet.ValueSetExpansionComponent parseValueSetExpansionComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30128    ValueSet.ValueSetExpansionComponent res = new ValueSet.ValueSetExpansionComponent();
30129    parseElementAttributes(xpp, res);
30130    next(xpp);
30131    int eventType = nextNoWhitespace(xpp);
30132    while (eventType != XmlPullParser.END_TAG) {
30133    if (!parseValueSetExpansionComponentContent(eventType, xpp, res))
30134        unknownContent(xpp);
30135      eventType = nextNoWhitespace(xpp);
30136    }
30137    next(xpp);
30138    parseElementClose(res);
30139    return res;
30140  }
30141
30142  protected boolean parseValueSetExpansionComponentContent(int eventType, XmlPullParser xpp, ValueSet.ValueSetExpansionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
30143    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
30144      res.setIdentifierElement(parseUri(xpp));
30145    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("next")) {
30146      res.setNextElement(parseUri(xpp));
30147    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
30148      res.setTimestampElement(parseDateTime(xpp));
30149    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
30150      res.setTotalElement(parseInteger(xpp));
30151    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
30152      res.setOffsetElement(parseInteger(xpp));
30153    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
30154      res.getParameter().add(parseValueSetExpansionParameterComponent(xpp));
30155    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
30156      res.getProperty().add(parseValueSetExpansionPropertyComponent(xpp));
30157    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
30158      res.getContains().add(parseValueSetExpansionContainsComponent(xpp));
30159    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
30160      return false;
30161    }
30162    return true;
30163  }
30164
30165  protected ValueSet.ValueSetExpansionParameterComponent parseValueSetExpansionParameterComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30166    ValueSet.ValueSetExpansionParameterComponent res = new ValueSet.ValueSetExpansionParameterComponent();
30167    parseElementAttributes(xpp, res);
30168    next(xpp);
30169    int eventType = nextNoWhitespace(xpp);
30170    while (eventType != XmlPullParser.END_TAG) {
30171    if (!parseValueSetExpansionParameterComponentContent(eventType, xpp, res))
30172        unknownContent(xpp);
30173      eventType = nextNoWhitespace(xpp);
30174    }
30175    next(xpp);
30176    parseElementClose(res);
30177    return res;
30178  }
30179
30180  protected boolean parseValueSetExpansionParameterComponentContent(int eventType, XmlPullParser xpp, ValueSet.ValueSetExpansionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
30181    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
30182      res.setNameElement(parseString(xpp));
30183    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
30184      res.setValue(parseType("value", xpp));
30185    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
30186      return false;
30187    }
30188    return true;
30189  }
30190
30191  protected ValueSet.ValueSetExpansionPropertyComponent parseValueSetExpansionPropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30192    ValueSet.ValueSetExpansionPropertyComponent res = new ValueSet.ValueSetExpansionPropertyComponent();
30193    parseElementAttributes(xpp, res);
30194    next(xpp);
30195    int eventType = nextNoWhitespace(xpp);
30196    while (eventType != XmlPullParser.END_TAG) {
30197    if (!parseValueSetExpansionPropertyComponentContent(eventType, xpp, res))
30198        unknownContent(xpp);
30199      eventType = nextNoWhitespace(xpp);
30200    }
30201    next(xpp);
30202    parseElementClose(res);
30203    return res;
30204  }
30205
30206  protected boolean parseValueSetExpansionPropertyComponentContent(int eventType, XmlPullParser xpp, ValueSet.ValueSetExpansionPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
30207    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
30208      res.setCodeElement(parseCode(xpp));
30209    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
30210      res.setUriElement(parseUri(xpp));
30211    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
30212      return false;
30213    }
30214    return true;
30215  }
30216
30217  protected ValueSet.ValueSetExpansionContainsComponent parseValueSetExpansionContainsComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30218    ValueSet.ValueSetExpansionContainsComponent res = new ValueSet.ValueSetExpansionContainsComponent();
30219    parseElementAttributes(xpp, res);
30220    next(xpp);
30221    int eventType = nextNoWhitespace(xpp);
30222    while (eventType != XmlPullParser.END_TAG) {
30223    if (!parseValueSetExpansionContainsComponentContent(eventType, xpp, res))
30224        unknownContent(xpp);
30225      eventType = nextNoWhitespace(xpp);
30226    }
30227    next(xpp);
30228    parseElementClose(res);
30229    return res;
30230  }
30231
30232  protected boolean parseValueSetExpansionContainsComponentContent(int eventType, XmlPullParser xpp, ValueSet.ValueSetExpansionContainsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
30233    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
30234      res.setSystemElement(parseUri(xpp));
30235    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
30236      res.setAbstractElement(parseBoolean(xpp));
30237    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
30238      res.setInactiveElement(parseBoolean(xpp));
30239    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
30240      res.setVersionElement(parseString(xpp));
30241    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
30242      res.setCodeElement(parseCode(xpp));
30243    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
30244      res.setDisplayElement(parseString(xpp));
30245    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
30246      res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp));
30247    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
30248      res.getProperty().add(parseValueSetConceptPropertyComponent(xpp));
30249    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
30250      res.getContains().add(parseValueSetExpansionContainsComponent(xpp));
30251    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
30252      return false;
30253    }
30254    return true;
30255  }
30256
30257  protected ValueSet.ConceptPropertyComponent parseValueSetConceptPropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30258    ValueSet.ConceptPropertyComponent res = new ValueSet.ConceptPropertyComponent();
30259    parseElementAttributes(xpp, res);
30260    next(xpp);
30261    int eventType = nextNoWhitespace(xpp);
30262    while (eventType != XmlPullParser.END_TAG) {
30263    if (!parseValueSetConceptPropertyComponentContent(eventType, xpp, res))
30264        unknownContent(xpp);
30265      eventType = nextNoWhitespace(xpp);
30266    }
30267    next(xpp);
30268    parseElementClose(res);
30269    return res;
30270  }
30271
30272  protected boolean parseValueSetConceptPropertyComponentContent(int eventType, XmlPullParser xpp, ValueSet.ConceptPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
30273    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
30274      res.setCodeElement(parseCode(xpp));
30275    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
30276      res.setValue(parseType("value", xpp));
30277    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subProperty")) {
30278      res.getSubProperty().add(parseValueSetConceptSubPropertyComponent(xpp));
30279    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
30280      return false;
30281    }
30282    return true;
30283  }
30284
30285  protected ValueSet.ConceptSubPropertyComponent parseValueSetConceptSubPropertyComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30286    ValueSet.ConceptSubPropertyComponent res = new ValueSet.ConceptSubPropertyComponent();
30287    parseElementAttributes(xpp, res);
30288    next(xpp);
30289    int eventType = nextNoWhitespace(xpp);
30290    while (eventType != XmlPullParser.END_TAG) {
30291    if (!parseValueSetConceptSubPropertyComponentContent(eventType, xpp, res))
30292        unknownContent(xpp);
30293      eventType = nextNoWhitespace(xpp);
30294    }
30295    next(xpp);
30296    parseElementClose(res);
30297    return res;
30298  }
30299
30300  protected boolean parseValueSetConceptSubPropertyComponentContent(int eventType, XmlPullParser xpp, ValueSet.ConceptSubPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
30301    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
30302      res.setCodeElement(parseCode(xpp));
30303    } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
30304      res.setValue(parseType("value", xpp));
30305    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
30306      return false;
30307    }
30308    return true;
30309  }
30310
30311  protected ValueSet.ValueSetScopeComponent parseValueSetScopeComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30312    ValueSet.ValueSetScopeComponent res = new ValueSet.ValueSetScopeComponent();
30313    parseElementAttributes(xpp, res);
30314    next(xpp);
30315    int eventType = nextNoWhitespace(xpp);
30316    while (eventType != XmlPullParser.END_TAG) {
30317    if (!parseValueSetScopeComponentContent(eventType, xpp, res))
30318        unknownContent(xpp);
30319      eventType = nextNoWhitespace(xpp);
30320    }
30321    next(xpp);
30322    parseElementClose(res);
30323    return res;
30324  }
30325
30326  protected boolean parseValueSetScopeComponentContent(int eventType, XmlPullParser xpp, ValueSet.ValueSetScopeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
30327    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inclusionCriteria")) {
30328      res.setInclusionCriteriaElement(parseString(xpp));
30329    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclusionCriteria")) {
30330      res.setExclusionCriteriaElement(parseString(xpp));
30331    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
30332      return false;
30333    }
30334    return true;
30335  }
30336
30337  protected VerificationResult parseVerificationResult(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30338    VerificationResult res = new VerificationResult();
30339    parseResourceAttributes(xpp, res);
30340    next(xpp);
30341    int eventType = nextNoWhitespace(xpp);
30342    while (eventType != XmlPullParser.END_TAG) {
30343    if (!parseVerificationResultContent(eventType, xpp, res))
30344        unknownContent(xpp);
30345      eventType = nextNoWhitespace(xpp);
30346    }
30347    next(xpp);
30348    parseElementClose(res);
30349    return res;
30350  }
30351
30352  protected boolean parseVerificationResultContent(int eventType, XmlPullParser xpp, VerificationResult res) throws XmlPullParserException, IOException, FHIRFormatError {
30353    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
30354      res.getTarget().add(parseReference(xpp));
30355    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetLocation")) {
30356      res.getTargetLocation().add(parseString(xpp));
30357    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("need")) {
30358      res.setNeed(parseCodeableConcept(xpp));
30359    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
30360      res.setStatusElement(parseEnumeration(xpp, VerificationResult.VerificationResultStatus.NULL, new VerificationResult.VerificationResultStatusEnumFactory()));
30361    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
30362      res.setStatusDateElement(parseDateTime(xpp));
30363    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationType")) {
30364      res.setValidationType(parseCodeableConcept(xpp));
30365    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationProcess")) {
30366      res.getValidationProcess().add(parseCodeableConcept(xpp));
30367    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequency")) {
30368      res.setFrequency(parseTiming(xpp));
30369    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastPerformed")) {
30370      res.setLastPerformedElement(parseDateTime(xpp));
30371    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nextScheduled")) {
30372      res.setNextScheduledElement(parseDate(xpp));
30373    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("failureAction")) {
30374      res.setFailureAction(parseCodeableConcept(xpp));
30375    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primarySource")) {
30376      res.getPrimarySource().add(parseVerificationResultPrimarySourceComponent(xpp));
30377    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attestation")) {
30378      res.setAttestation(parseVerificationResultAttestationComponent(xpp));
30379    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validator")) {
30380      res.getValidator().add(parseVerificationResultValidatorComponent(xpp));
30381    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
30382      return false;
30383    }
30384    return true;
30385  }
30386
30387  protected VerificationResult.VerificationResultPrimarySourceComponent parseVerificationResultPrimarySourceComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30388    VerificationResult.VerificationResultPrimarySourceComponent res = new VerificationResult.VerificationResultPrimarySourceComponent();
30389    parseElementAttributes(xpp, res);
30390    next(xpp);
30391    int eventType = nextNoWhitespace(xpp);
30392    while (eventType != XmlPullParser.END_TAG) {
30393    if (!parseVerificationResultPrimarySourceComponentContent(eventType, xpp, res))
30394        unknownContent(xpp);
30395      eventType = nextNoWhitespace(xpp);
30396    }
30397    next(xpp);
30398    parseElementClose(res);
30399    return res;
30400  }
30401
30402  protected boolean parseVerificationResultPrimarySourceComponentContent(int eventType, XmlPullParser xpp, VerificationResult.VerificationResultPrimarySourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
30403    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
30404      res.setWho(parseReference(xpp));
30405    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
30406      res.getType().add(parseCodeableConcept(xpp));
30407    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationMethod")) {
30408      res.getCommunicationMethod().add(parseCodeableConcept(xpp));
30409    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationStatus")) {
30410      res.setValidationStatus(parseCodeableConcept(xpp));
30411    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationDate")) {
30412      res.setValidationDateElement(parseDateTime(xpp));
30413    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("canPushUpdates")) {
30414      res.setCanPushUpdates(parseCodeableConcept(xpp));
30415    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pushTypeAvailable")) {
30416      res.getPushTypeAvailable().add(parseCodeableConcept(xpp));
30417    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
30418      return false;
30419    }
30420    return true;
30421  }
30422
30423  protected VerificationResult.VerificationResultAttestationComponent parseVerificationResultAttestationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30424    VerificationResult.VerificationResultAttestationComponent res = new VerificationResult.VerificationResultAttestationComponent();
30425    parseElementAttributes(xpp, res);
30426    next(xpp);
30427    int eventType = nextNoWhitespace(xpp);
30428    while (eventType != XmlPullParser.END_TAG) {
30429    if (!parseVerificationResultAttestationComponentContent(eventType, xpp, res))
30430        unknownContent(xpp);
30431      eventType = nextNoWhitespace(xpp);
30432    }
30433    next(xpp);
30434    parseElementClose(res);
30435    return res;
30436  }
30437
30438  protected boolean parseVerificationResultAttestationComponentContent(int eventType, XmlPullParser xpp, VerificationResult.VerificationResultAttestationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
30439    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
30440      res.setWho(parseReference(xpp));
30441    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
30442      res.setOnBehalfOf(parseReference(xpp));
30443    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationMethod")) {
30444      res.setCommunicationMethod(parseCodeableConcept(xpp));
30445    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
30446      res.setDateElement(parseDate(xpp));
30447    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceIdentityCertificate")) {
30448      res.setSourceIdentityCertificateElement(parseString(xpp));
30449    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("proxyIdentityCertificate")) {
30450      res.setProxyIdentityCertificateElement(parseString(xpp));
30451    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("proxySignature")) {
30452      res.setProxySignature(parseSignature(xpp));
30453    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceSignature")) {
30454      res.setSourceSignature(parseSignature(xpp));
30455    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
30456      return false;
30457    }
30458    return true;
30459  }
30460
30461  protected VerificationResult.VerificationResultValidatorComponent parseVerificationResultValidatorComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30462    VerificationResult.VerificationResultValidatorComponent res = new VerificationResult.VerificationResultValidatorComponent();
30463    parseElementAttributes(xpp, res);
30464    next(xpp);
30465    int eventType = nextNoWhitespace(xpp);
30466    while (eventType != XmlPullParser.END_TAG) {
30467    if (!parseVerificationResultValidatorComponentContent(eventType, xpp, res))
30468        unknownContent(xpp);
30469      eventType = nextNoWhitespace(xpp);
30470    }
30471    next(xpp);
30472    parseElementClose(res);
30473    return res;
30474  }
30475
30476  protected boolean parseVerificationResultValidatorComponentContent(int eventType, XmlPullParser xpp, VerificationResult.VerificationResultValidatorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
30477    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
30478      res.setOrganization(parseReference(xpp));
30479    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identityCertificate")) {
30480      res.setIdentityCertificateElement(parseString(xpp));
30481    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attestationSignature")) {
30482      res.setAttestationSignature(parseSignature(xpp));
30483    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
30484      return false;
30485    }
30486    return true;
30487  }
30488
30489  protected VisionPrescription parseVisionPrescription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30490    VisionPrescription res = new VisionPrescription();
30491    parseResourceAttributes(xpp, res);
30492    next(xpp);
30493    int eventType = nextNoWhitespace(xpp);
30494    while (eventType != XmlPullParser.END_TAG) {
30495    if (!parseVisionPrescriptionContent(eventType, xpp, res))
30496        unknownContent(xpp);
30497      eventType = nextNoWhitespace(xpp);
30498    }
30499    next(xpp);
30500    parseElementClose(res);
30501    return res;
30502  }
30503
30504  protected boolean parseVisionPrescriptionContent(int eventType, XmlPullParser xpp, VisionPrescription res) throws XmlPullParserException, IOException, FHIRFormatError {
30505    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
30506      res.getIdentifier().add(parseIdentifier(xpp));
30507    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
30508      res.setStatusElement(parseEnumeration(xpp, Enumerations.FinancialResourceStatusCodes.NULL, new Enumerations.FinancialResourceStatusCodesEnumFactory()));
30509    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
30510      res.setCreatedElement(parseDateTime(xpp));
30511    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
30512      res.setPatient(parseReference(xpp));
30513    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
30514      res.setEncounter(parseReference(xpp));
30515    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateWritten")) {
30516      res.setDateWrittenElement(parseDateTime(xpp));
30517    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescriber")) {
30518      res.setPrescriber(parseReference(xpp));
30519    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lensSpecification")) {
30520      res.getLensSpecification().add(parseVisionPrescriptionLensSpecificationComponent(xpp));
30521    } else if (!parseDomainResourceContent(eventType, xpp, res)){ 
30522      return false;
30523    }
30524    return true;
30525  }
30526
30527  protected VisionPrescription.VisionPrescriptionLensSpecificationComponent parseVisionPrescriptionLensSpecificationComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30528    VisionPrescription.VisionPrescriptionLensSpecificationComponent res = new VisionPrescription.VisionPrescriptionLensSpecificationComponent();
30529    parseElementAttributes(xpp, res);
30530    next(xpp);
30531    int eventType = nextNoWhitespace(xpp);
30532    while (eventType != XmlPullParser.END_TAG) {
30533    if (!parseVisionPrescriptionLensSpecificationComponentContent(eventType, xpp, res))
30534        unknownContent(xpp);
30535      eventType = nextNoWhitespace(xpp);
30536    }
30537    next(xpp);
30538    parseElementClose(res);
30539    return res;
30540  }
30541
30542  protected boolean parseVisionPrescriptionLensSpecificationComponentContent(int eventType, XmlPullParser xpp, VisionPrescription.VisionPrescriptionLensSpecificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
30543    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
30544      res.setProduct(parseCodeableConcept(xpp));
30545    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eye")) {
30546      res.setEyeElement(parseEnumeration(xpp, VisionPrescription.VisionEyes.NULL, new VisionPrescription.VisionEyesEnumFactory()));
30547    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sphere")) {
30548      res.setSphereElement(parseDecimal(xpp));
30549    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cylinder")) {
30550      res.setCylinderElement(parseDecimal(xpp));
30551    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("axis")) {
30552      res.setAxisElement(parseInteger(xpp));
30553    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prism")) {
30554      res.getPrism().add(parseVisionPrescriptionPrismComponent(xpp));
30555    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("add")) {
30556      res.setAddElement(parseDecimal(xpp));
30557    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("power")) {
30558      res.setPowerElement(parseDecimal(xpp));
30559    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("backCurve")) {
30560      res.setBackCurveElement(parseDecimal(xpp));
30561    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diameter")) {
30562      res.setDiameterElement(parseDecimal(xpp));
30563    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
30564      res.setDuration(parseQuantity(xpp));
30565    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
30566      res.setColorElement(parseString(xpp));
30567    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("brand")) {
30568      res.setBrandElement(parseString(xpp));
30569    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
30570      res.getNote().add(parseAnnotation(xpp));
30571    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
30572      return false;
30573    }
30574    return true;
30575  }
30576
30577  protected VisionPrescription.PrismComponent parseVisionPrescriptionPrismComponent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30578    VisionPrescription.PrismComponent res = new VisionPrescription.PrismComponent();
30579    parseElementAttributes(xpp, res);
30580    next(xpp);
30581    int eventType = nextNoWhitespace(xpp);
30582    while (eventType != XmlPullParser.END_TAG) {
30583    if (!parseVisionPrescriptionPrismComponentContent(eventType, xpp, res))
30584        unknownContent(xpp);
30585      eventType = nextNoWhitespace(xpp);
30586    }
30587    next(xpp);
30588    parseElementClose(res);
30589    return res;
30590  }
30591
30592  protected boolean parseVisionPrescriptionPrismComponentContent(int eventType, XmlPullParser xpp, VisionPrescription.PrismComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
30593    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
30594      res.setAmountElement(parseDecimal(xpp));
30595    } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
30596      res.setBaseElement(parseEnumeration(xpp, VisionPrescription.VisionBase.NULL, new VisionPrescription.VisionBaseEnumFactory()));
30597    } else if (!parseBackboneElementContent(eventType, xpp, res)){ 
30598      return false;
30599    }
30600    return true;
30601  }
30602
30603
30604  
30605  @Override
30606  protected Resource parseResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30607    if (xpp == null) {
30608      throw new IOException("xpp == null!");
30609    } else if (xpp.getName().equals("Account")) {
30610      return parseAccount(xpp);
30611    } else if (xpp.getName().equals("ActivityDefinition")) {
30612      return parseActivityDefinition(xpp);
30613    } else if (xpp.getName().equals("ActorDefinition")) {
30614      return parseActorDefinition(xpp);
30615    } else if (xpp.getName().equals("AdministrableProductDefinition")) {
30616      return parseAdministrableProductDefinition(xpp);
30617    } else if (xpp.getName().equals("AdverseEvent")) {
30618      return parseAdverseEvent(xpp);
30619    } else if (xpp.getName().equals("AllergyIntolerance")) {
30620      return parseAllergyIntolerance(xpp);
30621    } else if (xpp.getName().equals("Appointment")) {
30622      return parseAppointment(xpp);
30623    } else if (xpp.getName().equals("AppointmentResponse")) {
30624      return parseAppointmentResponse(xpp);
30625    } else if (xpp.getName().equals("ArtifactAssessment")) {
30626      return parseArtifactAssessment(xpp);
30627    } else if (xpp.getName().equals("AuditEvent")) {
30628      return parseAuditEvent(xpp);
30629    } else if (xpp.getName().equals("Basic")) {
30630      return parseBasic(xpp);
30631    } else if (xpp.getName().equals("Binary")) {
30632      return parseBinary(xpp);
30633    } else if (xpp.getName().equals("BiologicallyDerivedProduct")) {
30634      return parseBiologicallyDerivedProduct(xpp);
30635    } else if (xpp.getName().equals("BiologicallyDerivedProductDispense")) {
30636      return parseBiologicallyDerivedProductDispense(xpp);
30637    } else if (xpp.getName().equals("BodyStructure")) {
30638      return parseBodyStructure(xpp);
30639    } else if (xpp.getName().equals("Bundle")) {
30640      return parseBundle(xpp);
30641    } else if (xpp.getName().equals("CapabilityStatement")) {
30642      return parseCapabilityStatement(xpp);
30643    } else if (xpp.getName().equals("CarePlan")) {
30644      return parseCarePlan(xpp);
30645    } else if (xpp.getName().equals("CareTeam")) {
30646      return parseCareTeam(xpp);
30647    } else if (xpp.getName().equals("ChargeItem")) {
30648      return parseChargeItem(xpp);
30649    } else if (xpp.getName().equals("ChargeItemDefinition")) {
30650      return parseChargeItemDefinition(xpp);
30651    } else if (xpp.getName().equals("Citation")) {
30652      return parseCitation(xpp);
30653    } else if (xpp.getName().equals("Claim")) {
30654      return parseClaim(xpp);
30655    } else if (xpp.getName().equals("ClaimResponse")) {
30656      return parseClaimResponse(xpp);
30657    } else if (xpp.getName().equals("ClinicalImpression")) {
30658      return parseClinicalImpression(xpp);
30659    } else if (xpp.getName().equals("ClinicalUseDefinition")) {
30660      return parseClinicalUseDefinition(xpp);
30661    } else if (xpp.getName().equals("CodeSystem")) {
30662      return parseCodeSystem(xpp);
30663    } else if (xpp.getName().equals("Communication")) {
30664      return parseCommunication(xpp);
30665    } else if (xpp.getName().equals("CommunicationRequest")) {
30666      return parseCommunicationRequest(xpp);
30667    } else if (xpp.getName().equals("CompartmentDefinition")) {
30668      return parseCompartmentDefinition(xpp);
30669    } else if (xpp.getName().equals("Composition")) {
30670      return parseComposition(xpp);
30671    } else if (xpp.getName().equals("ConceptMap")) {
30672      return parseConceptMap(xpp);
30673    } else if (xpp.getName().equals("Condition")) {
30674      return parseCondition(xpp);
30675    } else if (xpp.getName().equals("ConditionDefinition")) {
30676      return parseConditionDefinition(xpp);
30677    } else if (xpp.getName().equals("Consent")) {
30678      return parseConsent(xpp);
30679    } else if (xpp.getName().equals("Contract")) {
30680      return parseContract(xpp);
30681    } else if (xpp.getName().equals("Coverage")) {
30682      return parseCoverage(xpp);
30683    } else if (xpp.getName().equals("CoverageEligibilityRequest")) {
30684      return parseCoverageEligibilityRequest(xpp);
30685    } else if (xpp.getName().equals("CoverageEligibilityResponse")) {
30686      return parseCoverageEligibilityResponse(xpp);
30687    } else if (xpp.getName().equals("DetectedIssue")) {
30688      return parseDetectedIssue(xpp);
30689    } else if (xpp.getName().equals("Device")) {
30690      return parseDevice(xpp);
30691    } else if (xpp.getName().equals("DeviceAssociation")) {
30692      return parseDeviceAssociation(xpp);
30693    } else if (xpp.getName().equals("DeviceDefinition")) {
30694      return parseDeviceDefinition(xpp);
30695    } else if (xpp.getName().equals("DeviceDispense")) {
30696      return parseDeviceDispense(xpp);
30697    } else if (xpp.getName().equals("DeviceMetric")) {
30698      return parseDeviceMetric(xpp);
30699    } else if (xpp.getName().equals("DeviceRequest")) {
30700      return parseDeviceRequest(xpp);
30701    } else if (xpp.getName().equals("DeviceUsage")) {
30702      return parseDeviceUsage(xpp);
30703    } else if (xpp.getName().equals("DiagnosticReport")) {
30704      return parseDiagnosticReport(xpp);
30705    } else if (xpp.getName().equals("DocumentReference")) {
30706      return parseDocumentReference(xpp);
30707    } else if (xpp.getName().equals("Encounter")) {
30708      return parseEncounter(xpp);
30709    } else if (xpp.getName().equals("EncounterHistory")) {
30710      return parseEncounterHistory(xpp);
30711    } else if (xpp.getName().equals("Endpoint")) {
30712      return parseEndpoint(xpp);
30713    } else if (xpp.getName().equals("EnrollmentRequest")) {
30714      return parseEnrollmentRequest(xpp);
30715    } else if (xpp.getName().equals("EnrollmentResponse")) {
30716      return parseEnrollmentResponse(xpp);
30717    } else if (xpp.getName().equals("EpisodeOfCare")) {
30718      return parseEpisodeOfCare(xpp);
30719    } else if (xpp.getName().equals("EventDefinition")) {
30720      return parseEventDefinition(xpp);
30721    } else if (xpp.getName().equals("Evidence")) {
30722      return parseEvidence(xpp);
30723    } else if (xpp.getName().equals("EvidenceReport")) {
30724      return parseEvidenceReport(xpp);
30725    } else if (xpp.getName().equals("EvidenceVariable")) {
30726      return parseEvidenceVariable(xpp);
30727    } else if (xpp.getName().equals("ExampleScenario")) {
30728      return parseExampleScenario(xpp);
30729    } else if (xpp.getName().equals("ExplanationOfBenefit")) {
30730      return parseExplanationOfBenefit(xpp);
30731    } else if (xpp.getName().equals("FamilyMemberHistory")) {
30732      return parseFamilyMemberHistory(xpp);
30733    } else if (xpp.getName().equals("Flag")) {
30734      return parseFlag(xpp);
30735    } else if (xpp.getName().equals("FormularyItem")) {
30736      return parseFormularyItem(xpp);
30737    } else if (xpp.getName().equals("GenomicStudy")) {
30738      return parseGenomicStudy(xpp);
30739    } else if (xpp.getName().equals("Goal")) {
30740      return parseGoal(xpp);
30741    } else if (xpp.getName().equals("GraphDefinition")) {
30742      return parseGraphDefinition(xpp);
30743    } else if (xpp.getName().equals("Group")) {
30744      return parseGroup(xpp);
30745    } else if (xpp.getName().equals("GuidanceResponse")) {
30746      return parseGuidanceResponse(xpp);
30747    } else if (xpp.getName().equals("HealthcareService")) {
30748      return parseHealthcareService(xpp);
30749    } else if (xpp.getName().equals("ImagingSelection")) {
30750      return parseImagingSelection(xpp);
30751    } else if (xpp.getName().equals("ImagingStudy")) {
30752      return parseImagingStudy(xpp);
30753    } else if (xpp.getName().equals("Immunization")) {
30754      return parseImmunization(xpp);
30755    } else if (xpp.getName().equals("ImmunizationEvaluation")) {
30756      return parseImmunizationEvaluation(xpp);
30757    } else if (xpp.getName().equals("ImmunizationRecommendation")) {
30758      return parseImmunizationRecommendation(xpp);
30759    } else if (xpp.getName().equals("ImplementationGuide")) {
30760      return parseImplementationGuide(xpp);
30761    } else if (xpp.getName().equals("Ingredient")) {
30762      return parseIngredient(xpp);
30763    } else if (xpp.getName().equals("InsurancePlan")) {
30764      return parseInsurancePlan(xpp);
30765    } else if (xpp.getName().equals("InventoryItem")) {
30766      return parseInventoryItem(xpp);
30767    } else if (xpp.getName().equals("InventoryReport")) {
30768      return parseInventoryReport(xpp);
30769    } else if (xpp.getName().equals("Invoice")) {
30770      return parseInvoice(xpp);
30771    } else if (xpp.getName().equals("Library")) {
30772      return parseLibrary(xpp);
30773    } else if (xpp.getName().equals("Linkage")) {
30774      return parseLinkage(xpp);
30775    } else if (xpp.getName().equals("List")) {
30776      return parseListResource(xpp);
30777    } else if (xpp.getName().equals("Location")) {
30778      return parseLocation(xpp);
30779    } else if (xpp.getName().equals("ManufacturedItemDefinition")) {
30780      return parseManufacturedItemDefinition(xpp);
30781    } else if (xpp.getName().equals("Measure")) {
30782      return parseMeasure(xpp);
30783    } else if (xpp.getName().equals("MeasureReport")) {
30784      return parseMeasureReport(xpp);
30785    } else if (xpp.getName().equals("Medication")) {
30786      return parseMedication(xpp);
30787    } else if (xpp.getName().equals("MedicationAdministration")) {
30788      return parseMedicationAdministration(xpp);
30789    } else if (xpp.getName().equals("MedicationDispense")) {
30790      return parseMedicationDispense(xpp);
30791    } else if (xpp.getName().equals("MedicationKnowledge")) {
30792      return parseMedicationKnowledge(xpp);
30793    } else if (xpp.getName().equals("MedicationRequest")) {
30794      return parseMedicationRequest(xpp);
30795    } else if (xpp.getName().equals("MedicationStatement")) {
30796      return parseMedicationStatement(xpp);
30797    } else if (xpp.getName().equals("MedicinalProductDefinition")) {
30798      return parseMedicinalProductDefinition(xpp);
30799    } else if (xpp.getName().equals("MessageDefinition")) {
30800      return parseMessageDefinition(xpp);
30801    } else if (xpp.getName().equals("MessageHeader")) {
30802      return parseMessageHeader(xpp);
30803    } else if (xpp.getName().equals("MolecularSequence")) {
30804      return parseMolecularSequence(xpp);
30805    } else if (xpp.getName().equals("NamingSystem")) {
30806      return parseNamingSystem(xpp);
30807    } else if (xpp.getName().equals("NutritionIntake")) {
30808      return parseNutritionIntake(xpp);
30809    } else if (xpp.getName().equals("NutritionOrder")) {
30810      return parseNutritionOrder(xpp);
30811    } else if (xpp.getName().equals("NutritionProduct")) {
30812      return parseNutritionProduct(xpp);
30813    } else if (xpp.getName().equals("Observation")) {
30814      return parseObservation(xpp);
30815    } else if (xpp.getName().equals("ObservationDefinition")) {
30816      return parseObservationDefinition(xpp);
30817    } else if (xpp.getName().equals("OperationDefinition")) {
30818      return parseOperationDefinition(xpp);
30819    } else if (xpp.getName().equals("OperationOutcome")) {
30820      return parseOperationOutcome(xpp);
30821    } else if (xpp.getName().equals("Organization")) {
30822      return parseOrganization(xpp);
30823    } else if (xpp.getName().equals("OrganizationAffiliation")) {
30824      return parseOrganizationAffiliation(xpp);
30825    } else if (xpp.getName().equals("PackagedProductDefinition")) {
30826      return parsePackagedProductDefinition(xpp);
30827    } else if (xpp.getName().equals("Parameters")) {
30828      return parseParameters(xpp);
30829    } else if (xpp.getName().equals("Patient")) {
30830      return parsePatient(xpp);
30831    } else if (xpp.getName().equals("PaymentNotice")) {
30832      return parsePaymentNotice(xpp);
30833    } else if (xpp.getName().equals("PaymentReconciliation")) {
30834      return parsePaymentReconciliation(xpp);
30835    } else if (xpp.getName().equals("Permission")) {
30836      return parsePermission(xpp);
30837    } else if (xpp.getName().equals("Person")) {
30838      return parsePerson(xpp);
30839    } else if (xpp.getName().equals("PlanDefinition")) {
30840      return parsePlanDefinition(xpp);
30841    } else if (xpp.getName().equals("Practitioner")) {
30842      return parsePractitioner(xpp);
30843    } else if (xpp.getName().equals("PractitionerRole")) {
30844      return parsePractitionerRole(xpp);
30845    } else if (xpp.getName().equals("Procedure")) {
30846      return parseProcedure(xpp);
30847    } else if (xpp.getName().equals("Provenance")) {
30848      return parseProvenance(xpp);
30849    } else if (xpp.getName().equals("Questionnaire")) {
30850      return parseQuestionnaire(xpp);
30851    } else if (xpp.getName().equals("QuestionnaireResponse")) {
30852      return parseQuestionnaireResponse(xpp);
30853    } else if (xpp.getName().equals("RegulatedAuthorization")) {
30854      return parseRegulatedAuthorization(xpp);
30855    } else if (xpp.getName().equals("RelatedPerson")) {
30856      return parseRelatedPerson(xpp);
30857    } else if (xpp.getName().equals("RequestOrchestration")) {
30858      return parseRequestOrchestration(xpp);
30859    } else if (xpp.getName().equals("Requirements")) {
30860      return parseRequirements(xpp);
30861    } else if (xpp.getName().equals("ResearchStudy")) {
30862      return parseResearchStudy(xpp);
30863    } else if (xpp.getName().equals("ResearchSubject")) {
30864      return parseResearchSubject(xpp);
30865    } else if (xpp.getName().equals("RiskAssessment")) {
30866      return parseRiskAssessment(xpp);
30867    } else if (xpp.getName().equals("Schedule")) {
30868      return parseSchedule(xpp);
30869    } else if (xpp.getName().equals("SearchParameter")) {
30870      return parseSearchParameter(xpp);
30871    } else if (xpp.getName().equals("ServiceRequest")) {
30872      return parseServiceRequest(xpp);
30873    } else if (xpp.getName().equals("Slot")) {
30874      return parseSlot(xpp);
30875    } else if (xpp.getName().equals("Specimen")) {
30876      return parseSpecimen(xpp);
30877    } else if (xpp.getName().equals("SpecimenDefinition")) {
30878      return parseSpecimenDefinition(xpp);
30879    } else if (xpp.getName().equals("StructureDefinition")) {
30880      return parseStructureDefinition(xpp);
30881    } else if (xpp.getName().equals("StructureMap")) {
30882      return parseStructureMap(xpp);
30883    } else if (xpp.getName().equals("Subscription")) {
30884      return parseSubscription(xpp);
30885    } else if (xpp.getName().equals("SubscriptionStatus")) {
30886      return parseSubscriptionStatus(xpp);
30887    } else if (xpp.getName().equals("SubscriptionTopic")) {
30888      return parseSubscriptionTopic(xpp);
30889    } else if (xpp.getName().equals("Substance")) {
30890      return parseSubstance(xpp);
30891    } else if (xpp.getName().equals("SubstanceDefinition")) {
30892      return parseSubstanceDefinition(xpp);
30893    } else if (xpp.getName().equals("SubstanceNucleicAcid")) {
30894      return parseSubstanceNucleicAcid(xpp);
30895    } else if (xpp.getName().equals("SubstancePolymer")) {
30896      return parseSubstancePolymer(xpp);
30897    } else if (xpp.getName().equals("SubstanceProtein")) {
30898      return parseSubstanceProtein(xpp);
30899    } else if (xpp.getName().equals("SubstanceReferenceInformation")) {
30900      return parseSubstanceReferenceInformation(xpp);
30901    } else if (xpp.getName().equals("SubstanceSourceMaterial")) {
30902      return parseSubstanceSourceMaterial(xpp);
30903    } else if (xpp.getName().equals("SupplyDelivery")) {
30904      return parseSupplyDelivery(xpp);
30905    } else if (xpp.getName().equals("SupplyRequest")) {
30906      return parseSupplyRequest(xpp);
30907    } else if (xpp.getName().equals("Task")) {
30908      return parseTask(xpp);
30909    } else if (xpp.getName().equals("TerminologyCapabilities")) {
30910      return parseTerminologyCapabilities(xpp);
30911    } else if (xpp.getName().equals("TestPlan")) {
30912      return parseTestPlan(xpp);
30913    } else if (xpp.getName().equals("TestReport")) {
30914      return parseTestReport(xpp);
30915    } else if (xpp.getName().equals("TestScript")) {
30916      return parseTestScript(xpp);
30917    } else if (xpp.getName().equals("Transport")) {
30918      return parseTransport(xpp);
30919    } else if (xpp.getName().equals("ValueSet")) {
30920      return parseValueSet(xpp);
30921    } else if (xpp.getName().equals("VerificationResult")) {
30922      return parseVerificationResult(xpp);
30923    } else if (xpp.getName().equals("VisionPrescription")) {
30924      return parseVisionPrescription(xpp);
30925
30926    } else {
30927      Resource resource = parseCustomResource(xpp);
30928      if (resource != null) {
30929        return resource;
30930      } else {
30931        throw new FHIRFormatError("Unknown resource type "+xpp.getName()+"");
30932      }
30933    }
30934  }
30935
30936  protected DataType parseType(String prefix, XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30937    if (prefix == null) {
30938      throw new IOException("prefix == null!");
30939    } else if (xpp == null) {
30940      throw new IOException("xpp == null!");
30941    } else if (xpp.getName().equals(prefix+"Date")) {
30942      return parseDate(xpp);
30943    } else if (xpp.getName().equals(prefix+"DateTime")) {
30944      return parseDateTime(xpp);
30945    } else if (xpp.getName().equals(prefix+"Code")) {
30946      return parseCode(xpp);
30947    } else if (xpp.getName().equals(prefix+"String")) {
30948      return parseString(xpp);
30949    } else if (xpp.getName().equals(prefix+"Integer")) {
30950      return parseInteger(xpp);
30951    } else if (xpp.getName().equals(prefix+"Integer64")) {
30952      return parseInteger64(xpp);
30953    } else if (xpp.getName().equals(prefix+"Oid")) {
30954      return parseOid(xpp);
30955    } else if (xpp.getName().equals(prefix+"Canonical")) {
30956      return parseCanonical(xpp);
30957    } else if (xpp.getName().equals(prefix+"Uri")) {
30958      return parseUri(xpp);
30959    } else if (xpp.getName().equals(prefix+"Uuid")) {
30960      return parseUuid(xpp);
30961    } else if (xpp.getName().equals(prefix+"Url")) {
30962      return parseUrl(xpp);
30963    } else if (xpp.getName().equals(prefix+"Instant")) {
30964      return parseInstant(xpp);
30965    } else if (xpp.getName().equals(prefix+"Boolean")) {
30966      return parseBoolean(xpp);
30967    } else if (xpp.getName().equals(prefix+"Base64Binary")) {
30968      return parseBase64Binary(xpp);
30969    } else if (xpp.getName().equals(prefix+"UnsignedInt")) {
30970      return parseUnsignedInt(xpp);
30971    } else if (xpp.getName().equals(prefix+"Markdown")) {
30972      return parseMarkdown(xpp);
30973    } else if (xpp.getName().equals(prefix+"Time")) {
30974      return parseTime(xpp);
30975    } else if (xpp.getName().equals(prefix+"Id")) {
30976      return parseId(xpp);
30977    } else if (xpp.getName().equals(prefix+"PositiveInt")) {
30978      return parsePositiveInt(xpp);
30979    } else if (xpp.getName().equals(prefix+"Decimal")) {
30980      return parseDecimal(xpp);
30981    } else if (xpp.getName().equals(prefix+"Address")) {
30982      return parseAddress(xpp);
30983    } else if (xpp.getName().equals(prefix+"Age")) {
30984      return parseAge(xpp);
30985    } else if (xpp.getName().equals(prefix+"Annotation")) {
30986      return parseAnnotation(xpp);
30987    } else if (xpp.getName().equals(prefix+"Attachment")) {
30988      return parseAttachment(xpp);
30989    } else if (xpp.getName().equals(prefix+"Availability")) {
30990      return parseAvailability(xpp);
30991    } else if (xpp.getName().equals(prefix+"CodeableConcept")) {
30992      return parseCodeableConcept(xpp);
30993    } else if (xpp.getName().equals(prefix+"CodeableReference")) {
30994      return parseCodeableReference(xpp);
30995    } else if (xpp.getName().equals(prefix+"Coding")) {
30996      return parseCoding(xpp);
30997    } else if (xpp.getName().equals(prefix+"ContactDetail")) {
30998      return parseContactDetail(xpp);
30999    } else if (xpp.getName().equals(prefix+"ContactPoint")) {
31000      return parseContactPoint(xpp);
31001    } else if (xpp.getName().equals(prefix+"Contributor")) {
31002      return parseContributor(xpp);
31003    } else if (xpp.getName().equals(prefix+"Count")) {
31004      return parseCount(xpp);
31005    } else if (xpp.getName().equals(prefix+"DataRequirement")) {
31006      return parseDataRequirement(xpp);
31007    } else if (xpp.getName().equals(prefix+"Distance")) {
31008      return parseDistance(xpp);
31009    } else if (xpp.getName().equals(prefix+"Dosage")) {
31010      return parseDosage(xpp);
31011    } else if (xpp.getName().equals(prefix+"Duration")) {
31012      return parseDuration(xpp);
31013    } else if (xpp.getName().equals(prefix+"ElementDefinition")) {
31014      return parseElementDefinition(xpp);
31015    } else if (xpp.getName().equals(prefix+"Expression")) {
31016      return parseExpression(xpp);
31017    } else if (xpp.getName().equals(prefix+"ExtendedContactDetail")) {
31018      return parseExtendedContactDetail(xpp);
31019    } else if (xpp.getName().equals(prefix+"Extension")) {
31020      return parseExtension(xpp);
31021    } else if (xpp.getName().equals(prefix+"HumanName")) {
31022      return parseHumanName(xpp);
31023    } else if (xpp.getName().equals(prefix+"Identifier")) {
31024      return parseIdentifier(xpp);
31025    } else if (xpp.getName().equals(prefix+"MarketingStatus")) {
31026      return parseMarketingStatus(xpp);
31027    } else if (xpp.getName().equals(prefix+"Meta")) {
31028      return parseMeta(xpp);
31029    } else if (xpp.getName().equals(prefix+"MonetaryComponent")) {
31030      return parseMonetaryComponent(xpp);
31031    } else if (xpp.getName().equals(prefix+"Money")) {
31032      return parseMoney(xpp);
31033    } else if (xpp.getName().equals(prefix+"Narrative")) {
31034      return parseNarrative(xpp);
31035    } else if (xpp.getName().equals(prefix+"ParameterDefinition")) {
31036      return parseParameterDefinition(xpp);
31037    } else if (xpp.getName().equals(prefix+"Period")) {
31038      return parsePeriod(xpp);
31039    } else if (xpp.getName().equals(prefix+"ProductShelfLife")) {
31040      return parseProductShelfLife(xpp);
31041    } else if (xpp.getName().equals(prefix+"Quantity")) {
31042      return parseQuantity(xpp);
31043    } else if (xpp.getName().equals(prefix+"Range")) {
31044      return parseRange(xpp);
31045    } else if (xpp.getName().equals(prefix+"Ratio")) {
31046      return parseRatio(xpp);
31047    } else if (xpp.getName().equals(prefix+"RatioRange")) {
31048      return parseRatioRange(xpp);
31049    } else if (xpp.getName().equals(prefix+"Reference")) {
31050      return parseReference(xpp);
31051    } else if (xpp.getName().equals(prefix+"RelatedArtifact")) {
31052      return parseRelatedArtifact(xpp);
31053    } else if (xpp.getName().equals(prefix+"SampledData")) {
31054      return parseSampledData(xpp);
31055    } else if (xpp.getName().equals(prefix+"Signature")) {
31056      return parseSignature(xpp);
31057    } else if (xpp.getName().equals(prefix+"Timing")) {
31058      return parseTiming(xpp);
31059    } else if (xpp.getName().equals(prefix+"TriggerDefinition")) {
31060      return parseTriggerDefinition(xpp);
31061    } else if (xpp.getName().equals(prefix+"UsageContext")) {
31062      return parseUsageContext(xpp);
31063    } else if (xpp.getName().equals(prefix+"VirtualServiceDetail")) {
31064      return parseVirtualServiceDetail(xpp);
31065
31066    } else {
31067      throw new FHIRFormatError("Unknown type "+xpp.getName());
31068    }
31069  }
31070
31071  protected DataType parseType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
31072    if (type == null) {
31073      throw new IOException("type == null!");
31074    } else if (xpp == null) {
31075      throw new IOException("xpp == null!");
31076    } else if (type.equals("date")) {
31077      return parseDate(xpp);
31078    } else if (type.equals("dateTime")) {
31079      return parseDateTime(xpp);
31080    } else if (type.equals("code")) {
31081      return parseCode(xpp);
31082    } else if (type.equals("string")) {
31083      return parseString(xpp);
31084    } else if (type.equals("integer")) {
31085      return parseInteger(xpp);
31086    } else if (type.equals("integer64")) {
31087      return parseInteger64(xpp);
31088    } else if (type.equals("oid")) {
31089      return parseOid(xpp);
31090    } else if (type.equals("canonical")) {
31091      return parseCanonical(xpp);
31092    } else if (type.equals("uri")) {
31093      return parseUri(xpp);
31094    } else if (type.equals("uuid")) {
31095      return parseUuid(xpp);
31096    } else if (type.equals("url")) {
31097      return parseUrl(xpp);
31098    } else if (type.equals("instant")) {
31099      return parseInstant(xpp);
31100    } else if (type.equals("boolean")) {
31101      return parseBoolean(xpp);
31102    } else if (type.equals("base64Binary")) {
31103      return parseBase64Binary(xpp);
31104    } else if (type.equals("unsignedInt")) {
31105      return parseUnsignedInt(xpp);
31106    } else if (type.equals("markdown")) {
31107      return parseMarkdown(xpp);
31108    } else if (type.equals("time")) {
31109      return parseTime(xpp);
31110    } else if (type.equals("id")) {
31111      return parseId(xpp);
31112    } else if (type.equals("positiveInt")) {
31113      return parsePositiveInt(xpp);
31114    } else if (type.equals("decimal")) {
31115      return parseDecimal(xpp);
31116    } else if (type.equals("Address")) {
31117      return parseAddress(xpp);
31118    } else if (type.equals("Age")) {
31119      return parseAge(xpp);
31120    } else if (type.equals("Annotation")) {
31121      return parseAnnotation(xpp);
31122    } else if (type.equals("Attachment")) {
31123      return parseAttachment(xpp);
31124    } else if (type.equals("Availability")) {
31125      return parseAvailability(xpp);
31126    } else if (type.equals("CodeableConcept")) {
31127      return parseCodeableConcept(xpp);
31128    } else if (type.equals("CodeableReference")) {
31129      return parseCodeableReference(xpp);
31130    } else if (type.equals("Coding")) {
31131      return parseCoding(xpp);
31132    } else if (type.equals("ContactDetail")) {
31133      return parseContactDetail(xpp);
31134    } else if (type.equals("ContactPoint")) {
31135      return parseContactPoint(xpp);
31136    } else if (type.equals("Contributor")) {
31137      return parseContributor(xpp);
31138    } else if (type.equals("Count")) {
31139      return parseCount(xpp);
31140    } else if (type.equals("DataRequirement")) {
31141      return parseDataRequirement(xpp);
31142    } else if (type.equals("Distance")) {
31143      return parseDistance(xpp);
31144    } else if (type.equals("Dosage")) {
31145      return parseDosage(xpp);
31146    } else if (type.equals("Duration")) {
31147      return parseDuration(xpp);
31148    } else if (type.equals("ElementDefinition")) {
31149      return parseElementDefinition(xpp);
31150    } else if (type.equals("Expression")) {
31151      return parseExpression(xpp);
31152    } else if (type.equals("ExtendedContactDetail")) {
31153      return parseExtendedContactDetail(xpp);
31154    } else if (type.equals("Extension")) {
31155      return parseExtension(xpp);
31156    } else if (type.equals("HumanName")) {
31157      return parseHumanName(xpp);
31158    } else if (type.equals("Identifier")) {
31159      return parseIdentifier(xpp);
31160    } else if (type.equals("MarketingStatus")) {
31161      return parseMarketingStatus(xpp);
31162    } else if (type.equals("Meta")) {
31163      return parseMeta(xpp);
31164    } else if (type.equals("MonetaryComponent")) {
31165      return parseMonetaryComponent(xpp);
31166    } else if (type.equals("Money")) {
31167      return parseMoney(xpp);
31168    } else if (type.equals("Narrative")) {
31169      return parseNarrative(xpp);
31170    } else if (type.equals("ParameterDefinition")) {
31171      return parseParameterDefinition(xpp);
31172    } else if (type.equals("Period")) {
31173      return parsePeriod(xpp);
31174    } else if (type.equals("ProductShelfLife")) {
31175      return parseProductShelfLife(xpp);
31176    } else if (type.equals("Quantity")) {
31177      return parseQuantity(xpp);
31178    } else if (type.equals("Range")) {
31179      return parseRange(xpp);
31180    } else if (type.equals("Ratio")) {
31181      return parseRatio(xpp);
31182    } else if (type.equals("RatioRange")) {
31183      return parseRatioRange(xpp);
31184    } else if (type.equals("Reference")) {
31185      return parseReference(xpp);
31186    } else if (type.equals("RelatedArtifact")) {
31187      return parseRelatedArtifact(xpp);
31188    } else if (type.equals("SampledData")) {
31189      return parseSampledData(xpp);
31190    } else if (type.equals("Signature")) {
31191      return parseSignature(xpp);
31192    } else if (type.equals("Timing")) {
31193      return parseTiming(xpp);
31194    } else if (type.equals("TriggerDefinition")) {
31195      return parseTriggerDefinition(xpp);
31196    } else if (type.equals("UsageContext")) {
31197      return parseUsageContext(xpp);
31198    } else if (type.equals("VirtualServiceDetail")) {
31199      return parseVirtualServiceDetail(xpp);
31200
31201    } else {
31202      throw new FHIRFormatError("Unknown type "+type);
31203    }
31204  }
31205
31206  public Base parseFragment(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
31207    if (type == null) {
31208      throw new IOException("type == null!");
31209    } else if (xpp == null) {
31210      throw new IOException("xpp == null!");
31211    } else if (type.equals("Address")) {
31212      return parseAddress(xpp);
31213    } else if (type.equals("Age")) {
31214      return parseAge(xpp);
31215    } else if (type.equals("Annotation")) {
31216      return parseAnnotation(xpp);
31217    } else if (type.equals("Attachment")) {
31218      return parseAttachment(xpp);
31219    } else if (type.equals("Availability")) {
31220      return parseAvailability(xpp);
31221    } else if (type.equals("CodeableConcept")) {
31222      return parseCodeableConcept(xpp);
31223    } else if (type.equals("CodeableReference")) {
31224      return parseCodeableReference(xpp);
31225    } else if (type.equals("Coding")) {
31226      return parseCoding(xpp);
31227    } else if (type.equals("ContactDetail")) {
31228      return parseContactDetail(xpp);
31229    } else if (type.equals("ContactPoint")) {
31230      return parseContactPoint(xpp);
31231    } else if (type.equals("Contributor")) {
31232      return parseContributor(xpp);
31233    } else if (type.equals("Count")) {
31234      return parseCount(xpp);
31235    } else if (type.equals("DataRequirement")) {
31236      return parseDataRequirement(xpp);
31237    } else if (type.equals("Distance")) {
31238      return parseDistance(xpp);
31239    } else if (type.equals("Dosage")) {
31240      return parseDosage(xpp);
31241    } else if (type.equals("Duration")) {
31242      return parseDuration(xpp);
31243    } else if (type.equals("ElementDefinition")) {
31244      return parseElementDefinition(xpp);
31245    } else if (type.equals("Expression")) {
31246      return parseExpression(xpp);
31247    } else if (type.equals("ExtendedContactDetail")) {
31248      return parseExtendedContactDetail(xpp);
31249    } else if (type.equals("Extension")) {
31250      return parseExtension(xpp);
31251    } else if (type.equals("HumanName")) {
31252      return parseHumanName(xpp);
31253    } else if (type.equals("Identifier")) {
31254      return parseIdentifier(xpp);
31255    } else if (type.equals("MarketingStatus")) {
31256      return parseMarketingStatus(xpp);
31257    } else if (type.equals("Meta")) {
31258      return parseMeta(xpp);
31259    } else if (type.equals("MonetaryComponent")) {
31260      return parseMonetaryComponent(xpp);
31261    } else if (type.equals("Money")) {
31262      return parseMoney(xpp);
31263    } else if (type.equals("Narrative")) {
31264      return parseNarrative(xpp);
31265    } else if (type.equals("ParameterDefinition")) {
31266      return parseParameterDefinition(xpp);
31267    } else if (type.equals("Period")) {
31268      return parsePeriod(xpp);
31269    } else if (type.equals("ProductShelfLife")) {
31270      return parseProductShelfLife(xpp);
31271    } else if (type.equals("Quantity")) {
31272      return parseQuantity(xpp);
31273    } else if (type.equals("Range")) {
31274      return parseRange(xpp);
31275    } else if (type.equals("Ratio")) {
31276      return parseRatio(xpp);
31277    } else if (type.equals("RatioRange")) {
31278      return parseRatioRange(xpp);
31279    } else if (type.equals("Reference")) {
31280      return parseReference(xpp);
31281    } else if (type.equals("RelatedArtifact")) {
31282      return parseRelatedArtifact(xpp);
31283    } else if (type.equals("SampledData")) {
31284      return parseSampledData(xpp);
31285    } else if (type.equals("Signature")) {
31286      return parseSignature(xpp);
31287    } else if (type.equals("Timing")) {
31288      return parseTiming(xpp);
31289    } else if (type.equals("TriggerDefinition")) {
31290      return parseTriggerDefinition(xpp);
31291    } else if (type.equals("UsageContext")) {
31292      return parseUsageContext(xpp);
31293    } else if (type.equals("VirtualServiceDetail")) {
31294      return parseVirtualServiceDetail(xpp);
31295    } else if (type.equals("Account")) {
31296      return parseAccount(xpp);
31297    } else if (type.equals("ActivityDefinition")) {
31298      return parseActivityDefinition(xpp);
31299    } else if (type.equals("ActorDefinition")) {
31300      return parseActorDefinition(xpp);
31301    } else if (type.equals("AdministrableProductDefinition")) {
31302      return parseAdministrableProductDefinition(xpp);
31303    } else if (type.equals("AdverseEvent")) {
31304      return parseAdverseEvent(xpp);
31305    } else if (type.equals("AllergyIntolerance")) {
31306      return parseAllergyIntolerance(xpp);
31307    } else if (type.equals("Appointment")) {
31308      return parseAppointment(xpp);
31309    } else if (type.equals("AppointmentResponse")) {
31310      return parseAppointmentResponse(xpp);
31311    } else if (type.equals("ArtifactAssessment")) {
31312      return parseArtifactAssessment(xpp);
31313    } else if (type.equals("AuditEvent")) {
31314      return parseAuditEvent(xpp);
31315    } else if (type.equals("Basic")) {
31316      return parseBasic(xpp);
31317    } else if (type.equals("Binary")) {
31318      return parseBinary(xpp);
31319    } else if (type.equals("BiologicallyDerivedProduct")) {
31320      return parseBiologicallyDerivedProduct(xpp);
31321    } else if (type.equals("BiologicallyDerivedProductDispense")) {
31322      return parseBiologicallyDerivedProductDispense(xpp);
31323    } else if (type.equals("BodyStructure")) {
31324      return parseBodyStructure(xpp);
31325    } else if (type.equals("Bundle")) {
31326      return parseBundle(xpp);
31327    } else if (type.equals("CapabilityStatement")) {
31328      return parseCapabilityStatement(xpp);
31329    } else if (type.equals("CarePlan")) {
31330      return parseCarePlan(xpp);
31331    } else if (type.equals("CareTeam")) {
31332      return parseCareTeam(xpp);
31333    } else if (type.equals("ChargeItem")) {
31334      return parseChargeItem(xpp);
31335    } else if (type.equals("ChargeItemDefinition")) {
31336      return parseChargeItemDefinition(xpp);
31337    } else if (type.equals("Citation")) {
31338      return parseCitation(xpp);
31339    } else if (type.equals("Claim")) {
31340      return parseClaim(xpp);
31341    } else if (type.equals("ClaimResponse")) {
31342      return parseClaimResponse(xpp);
31343    } else if (type.equals("ClinicalImpression")) {
31344      return parseClinicalImpression(xpp);
31345    } else if (type.equals("ClinicalUseDefinition")) {
31346      return parseClinicalUseDefinition(xpp);
31347    } else if (type.equals("CodeSystem")) {
31348      return parseCodeSystem(xpp);
31349    } else if (type.equals("Communication")) {
31350      return parseCommunication(xpp);
31351    } else if (type.equals("CommunicationRequest")) {
31352      return parseCommunicationRequest(xpp);
31353    } else if (type.equals("CompartmentDefinition")) {
31354      return parseCompartmentDefinition(xpp);
31355    } else if (type.equals("Composition")) {
31356      return parseComposition(xpp);
31357    } else if (type.equals("ConceptMap")) {
31358      return parseConceptMap(xpp);
31359    } else if (type.equals("Condition")) {
31360      return parseCondition(xpp);
31361    } else if (type.equals("ConditionDefinition")) {
31362      return parseConditionDefinition(xpp);
31363    } else if (type.equals("Consent")) {
31364      return parseConsent(xpp);
31365    } else if (type.equals("Contract")) {
31366      return parseContract(xpp);
31367    } else if (type.equals("Coverage")) {
31368      return parseCoverage(xpp);
31369    } else if (type.equals("CoverageEligibilityRequest")) {
31370      return parseCoverageEligibilityRequest(xpp);
31371    } else if (type.equals("CoverageEligibilityResponse")) {
31372      return parseCoverageEligibilityResponse(xpp);
31373    } else if (type.equals("DetectedIssue")) {
31374      return parseDetectedIssue(xpp);
31375    } else if (type.equals("Device")) {
31376      return parseDevice(xpp);
31377    } else if (type.equals("DeviceAssociation")) {
31378      return parseDeviceAssociation(xpp);
31379    } else if (type.equals("DeviceDefinition")) {
31380      return parseDeviceDefinition(xpp);
31381    } else if (type.equals("DeviceDispense")) {
31382      return parseDeviceDispense(xpp);
31383    } else if (type.equals("DeviceMetric")) {
31384      return parseDeviceMetric(xpp);
31385    } else if (type.equals("DeviceRequest")) {
31386      return parseDeviceRequest(xpp);
31387    } else if (type.equals("DeviceUsage")) {
31388      return parseDeviceUsage(xpp);
31389    } else if (type.equals("DiagnosticReport")) {
31390      return parseDiagnosticReport(xpp);
31391    } else if (type.equals("DocumentReference")) {
31392      return parseDocumentReference(xpp);
31393    } else if (type.equals("Encounter")) {
31394      return parseEncounter(xpp);
31395    } else if (type.equals("EncounterHistory")) {
31396      return parseEncounterHistory(xpp);
31397    } else if (type.equals("Endpoint")) {
31398      return parseEndpoint(xpp);
31399    } else if (type.equals("EnrollmentRequest")) {
31400      return parseEnrollmentRequest(xpp);
31401    } else if (type.equals("EnrollmentResponse")) {
31402      return parseEnrollmentResponse(xpp);
31403    } else if (type.equals("EpisodeOfCare")) {
31404      return parseEpisodeOfCare(xpp);
31405    } else if (type.equals("EventDefinition")) {
31406      return parseEventDefinition(xpp);
31407    } else if (type.equals("Evidence")) {
31408      return parseEvidence(xpp);
31409    } else if (type.equals("EvidenceReport")) {
31410      return parseEvidenceReport(xpp);
31411    } else if (type.equals("EvidenceVariable")) {
31412      return parseEvidenceVariable(xpp);
31413    } else if (type.equals("ExampleScenario")) {
31414      return parseExampleScenario(xpp);
31415    } else if (type.equals("ExplanationOfBenefit")) {
31416      return parseExplanationOfBenefit(xpp);
31417    } else if (type.equals("FamilyMemberHistory")) {
31418      return parseFamilyMemberHistory(xpp);
31419    } else if (type.equals("Flag")) {
31420      return parseFlag(xpp);
31421    } else if (type.equals("FormularyItem")) {
31422      return parseFormularyItem(xpp);
31423    } else if (type.equals("GenomicStudy")) {
31424      return parseGenomicStudy(xpp);
31425    } else if (type.equals("Goal")) {
31426      return parseGoal(xpp);
31427    } else if (type.equals("GraphDefinition")) {
31428      return parseGraphDefinition(xpp);
31429    } else if (type.equals("Group")) {
31430      return parseGroup(xpp);
31431    } else if (type.equals("GuidanceResponse")) {
31432      return parseGuidanceResponse(xpp);
31433    } else if (type.equals("HealthcareService")) {
31434      return parseHealthcareService(xpp);
31435    } else if (type.equals("ImagingSelection")) {
31436      return parseImagingSelection(xpp);
31437    } else if (type.equals("ImagingStudy")) {
31438      return parseImagingStudy(xpp);
31439    } else if (type.equals("Immunization")) {
31440      return parseImmunization(xpp);
31441    } else if (type.equals("ImmunizationEvaluation")) {
31442      return parseImmunizationEvaluation(xpp);
31443    } else if (type.equals("ImmunizationRecommendation")) {
31444      return parseImmunizationRecommendation(xpp);
31445    } else if (type.equals("ImplementationGuide")) {
31446      return parseImplementationGuide(xpp);
31447    } else if (type.equals("Ingredient")) {
31448      return parseIngredient(xpp);
31449    } else if (type.equals("InsurancePlan")) {
31450      return parseInsurancePlan(xpp);
31451    } else if (type.equals("InventoryItem")) {
31452      return parseInventoryItem(xpp);
31453    } else if (type.equals("InventoryReport")) {
31454      return parseInventoryReport(xpp);
31455    } else if (type.equals("Invoice")) {
31456      return parseInvoice(xpp);
31457    } else if (type.equals("Library")) {
31458      return parseLibrary(xpp);
31459    } else if (type.equals("Linkage")) {
31460      return parseLinkage(xpp);
31461    } else if (type.equals("List")) {
31462      return parseListResource(xpp);
31463    } else if (type.equals("Location")) {
31464      return parseLocation(xpp);
31465    } else if (type.equals("ManufacturedItemDefinition")) {
31466      return parseManufacturedItemDefinition(xpp);
31467    } else if (type.equals("Measure")) {
31468      return parseMeasure(xpp);
31469    } else if (type.equals("MeasureReport")) {
31470      return parseMeasureReport(xpp);
31471    } else if (type.equals("Medication")) {
31472      return parseMedication(xpp);
31473    } else if (type.equals("MedicationAdministration")) {
31474      return parseMedicationAdministration(xpp);
31475    } else if (type.equals("MedicationDispense")) {
31476      return parseMedicationDispense(xpp);
31477    } else if (type.equals("MedicationKnowledge")) {
31478      return parseMedicationKnowledge(xpp);
31479    } else if (type.equals("MedicationRequest")) {
31480      return parseMedicationRequest(xpp);
31481    } else if (type.equals("MedicationStatement")) {
31482      return parseMedicationStatement(xpp);
31483    } else if (type.equals("MedicinalProductDefinition")) {
31484      return parseMedicinalProductDefinition(xpp);
31485    } else if (type.equals("MessageDefinition")) {
31486      return parseMessageDefinition(xpp);
31487    } else if (type.equals("MessageHeader")) {
31488      return parseMessageHeader(xpp);
31489    } else if (type.equals("MolecularSequence")) {
31490      return parseMolecularSequence(xpp);
31491    } else if (type.equals("NamingSystem")) {
31492      return parseNamingSystem(xpp);
31493    } else if (type.equals("NutritionIntake")) {
31494      return parseNutritionIntake(xpp);
31495    } else if (type.equals("NutritionOrder")) {
31496      return parseNutritionOrder(xpp);
31497    } else if (type.equals("NutritionProduct")) {
31498      return parseNutritionProduct(xpp);
31499    } else if (type.equals("Observation")) {
31500      return parseObservation(xpp);
31501    } else if (type.equals("ObservationDefinition")) {
31502      return parseObservationDefinition(xpp);
31503    } else if (type.equals("OperationDefinition")) {
31504      return parseOperationDefinition(xpp);
31505    } else if (type.equals("OperationOutcome")) {
31506      return parseOperationOutcome(xpp);
31507    } else if (type.equals("Organization")) {
31508      return parseOrganization(xpp);
31509    } else if (type.equals("OrganizationAffiliation")) {
31510      return parseOrganizationAffiliation(xpp);
31511    } else if (type.equals("PackagedProductDefinition")) {
31512      return parsePackagedProductDefinition(xpp);
31513    } else if (type.equals("Parameters")) {
31514      return parseParameters(xpp);
31515    } else if (type.equals("Patient")) {
31516      return parsePatient(xpp);
31517    } else if (type.equals("PaymentNotice")) {
31518      return parsePaymentNotice(xpp);
31519    } else if (type.equals("PaymentReconciliation")) {
31520      return parsePaymentReconciliation(xpp);
31521    } else if (type.equals("Permission")) {
31522      return parsePermission(xpp);
31523    } else if (type.equals("Person")) {
31524      return parsePerson(xpp);
31525    } else if (type.equals("PlanDefinition")) {
31526      return parsePlanDefinition(xpp);
31527    } else if (type.equals("Practitioner")) {
31528      return parsePractitioner(xpp);
31529    } else if (type.equals("PractitionerRole")) {
31530      return parsePractitionerRole(xpp);
31531    } else if (type.equals("Procedure")) {
31532      return parseProcedure(xpp);
31533    } else if (type.equals("Provenance")) {
31534      return parseProvenance(xpp);
31535    } else if (type.equals("Questionnaire")) {
31536      return parseQuestionnaire(xpp);
31537    } else if (type.equals("QuestionnaireResponse")) {
31538      return parseQuestionnaireResponse(xpp);
31539    } else if (type.equals("RegulatedAuthorization")) {
31540      return parseRegulatedAuthorization(xpp);
31541    } else if (type.equals("RelatedPerson")) {
31542      return parseRelatedPerson(xpp);
31543    } else if (type.equals("RequestOrchestration")) {
31544      return parseRequestOrchestration(xpp);
31545    } else if (type.equals("Requirements")) {
31546      return parseRequirements(xpp);
31547    } else if (type.equals("ResearchStudy")) {
31548      return parseResearchStudy(xpp);
31549    } else if (type.equals("ResearchSubject")) {
31550      return parseResearchSubject(xpp);
31551    } else if (type.equals("RiskAssessment")) {
31552      return parseRiskAssessment(xpp);
31553    } else if (type.equals("Schedule")) {
31554      return parseSchedule(xpp);
31555    } else if (type.equals("SearchParameter")) {
31556      return parseSearchParameter(xpp);
31557    } else if (type.equals("ServiceRequest")) {
31558      return parseServiceRequest(xpp);
31559    } else if (type.equals("Slot")) {
31560      return parseSlot(xpp);
31561    } else if (type.equals("Specimen")) {
31562      return parseSpecimen(xpp);
31563    } else if (type.equals("SpecimenDefinition")) {
31564      return parseSpecimenDefinition(xpp);
31565    } else if (type.equals("StructureDefinition")) {
31566      return parseStructureDefinition(xpp);
31567    } else if (type.equals("StructureMap")) {
31568      return parseStructureMap(xpp);
31569    } else if (type.equals("Subscription")) {
31570      return parseSubscription(xpp);
31571    } else if (type.equals("SubscriptionStatus")) {
31572      return parseSubscriptionStatus(xpp);
31573    } else if (type.equals("SubscriptionTopic")) {
31574      return parseSubscriptionTopic(xpp);
31575    } else if (type.equals("Substance")) {
31576      return parseSubstance(xpp);
31577    } else if (type.equals("SubstanceDefinition")) {
31578      return parseSubstanceDefinition(xpp);
31579    } else if (type.equals("SubstanceNucleicAcid")) {
31580      return parseSubstanceNucleicAcid(xpp);
31581    } else if (type.equals("SubstancePolymer")) {
31582      return parseSubstancePolymer(xpp);
31583    } else if (type.equals("SubstanceProtein")) {
31584      return parseSubstanceProtein(xpp);
31585    } else if (type.equals("SubstanceReferenceInformation")) {
31586      return parseSubstanceReferenceInformation(xpp);
31587    } else if (type.equals("SubstanceSourceMaterial")) {
31588      return parseSubstanceSourceMaterial(xpp);
31589    } else if (type.equals("SupplyDelivery")) {
31590      return parseSupplyDelivery(xpp);
31591    } else if (type.equals("SupplyRequest")) {
31592      return parseSupplyRequest(xpp);
31593    } else if (type.equals("Task")) {
31594      return parseTask(xpp);
31595    } else if (type.equals("TerminologyCapabilities")) {
31596      return parseTerminologyCapabilities(xpp);
31597    } else if (type.equals("TestPlan")) {
31598      return parseTestPlan(xpp);
31599    } else if (type.equals("TestReport")) {
31600      return parseTestReport(xpp);
31601    } else if (type.equals("TestScript")) {
31602      return parseTestScript(xpp);
31603    } else if (type.equals("Transport")) {
31604      return parseTransport(xpp);
31605    } else if (type.equals("ValueSet")) {
31606      return parseValueSet(xpp);
31607    } else if (type.equals("VerificationResult")) {
31608      return parseVerificationResult(xpp);
31609    } else if (type.equals("VisionPrescription")) {
31610      return parseVisionPrescription(xpp);
31611      
31612    } else if (type.equals("date")) {
31613      return parseDate(xpp);
31614    } else if (type.equals("dateTime")) {
31615      return parseDateTime(xpp);
31616    } else if (type.equals("code")) {
31617      return parseCode(xpp);
31618    } else if (type.equals("string")) {
31619      return parseString(xpp);
31620    } else if (type.equals("integer")) {
31621      return parseInteger(xpp);
31622    } else if (type.equals("integer64")) {
31623      return parseInteger64(xpp);
31624    } else if (type.equals("oid")) {
31625      return parseOid(xpp);
31626    } else if (type.equals("canonical")) {
31627      return parseCanonical(xpp);
31628    } else if (type.equals("uri")) {
31629      return parseUri(xpp);
31630    } else if (type.equals("uuid")) {
31631      return parseUuid(xpp);
31632    } else if (type.equals("url")) {
31633      return parseUrl(xpp);
31634    } else if (type.equals("instant")) {
31635      return parseInstant(xpp);
31636    } else if (type.equals("boolean")) {
31637      return parseBoolean(xpp);
31638    } else if (type.equals("base64Binary")) {
31639      return parseBase64Binary(xpp);
31640    } else if (type.equals("unsignedInt")) {
31641      return parseUnsignedInt(xpp);
31642    } else if (type.equals("markdown")) {
31643      return parseMarkdown(xpp);
31644    } else if (type.equals("time")) {
31645      return parseTime(xpp);
31646    } else if (type.equals("id")) {
31647      return parseId(xpp);
31648    } else if (type.equals("positiveInt")) {
31649      return parsePositiveInt(xpp);
31650    } else if (type.equals("decimal")) {
31651      return parseDecimal(xpp);
31652    } else {
31653      throw new FHIRFormatError("Unknown type "+type);
31654    }
31655  }
31656
31657  private boolean nameIsTypeName(XmlPullParser xpp, String prefix) throws IOException {  
31658    if (prefix == null) {
31659      throw new IOException("prefix == null!");
31660    } else if (xpp == null) {
31661      throw new IOException("xpp == null!");
31662    } else if (xpp.getName().equals(prefix+"Address")) {
31663      return true;
31664    } else if (xpp.getName().equals(prefix+"Age")) {
31665      return true;
31666    } else if (xpp.getName().equals(prefix+"Annotation")) {
31667      return true;
31668    } else if (xpp.getName().equals(prefix+"Attachment")) {
31669      return true;
31670    } else if (xpp.getName().equals(prefix+"Availability")) {
31671      return true;
31672    } else if (xpp.getName().equals(prefix+"CodeableConcept")) {
31673      return true;
31674    } else if (xpp.getName().equals(prefix+"CodeableReference")) {
31675      return true;
31676    } else if (xpp.getName().equals(prefix+"Coding")) {
31677      return true;
31678    } else if (xpp.getName().equals(prefix+"ContactDetail")) {
31679      return true;
31680    } else if (xpp.getName().equals(prefix+"ContactPoint")) {
31681      return true;
31682    } else if (xpp.getName().equals(prefix+"Contributor")) {
31683      return true;
31684    } else if (xpp.getName().equals(prefix+"Count")) {
31685      return true;
31686    } else if (xpp.getName().equals(prefix+"DataRequirement")) {
31687      return true;
31688    } else if (xpp.getName().equals(prefix+"Distance")) {
31689      return true;
31690    } else if (xpp.getName().equals(prefix+"Dosage")) {
31691      return true;
31692    } else if (xpp.getName().equals(prefix+"Duration")) {
31693      return true;
31694    } else if (xpp.getName().equals(prefix+"ElementDefinition")) {
31695      return true;
31696    } else if (xpp.getName().equals(prefix+"Expression")) {
31697      return true;
31698    } else if (xpp.getName().equals(prefix+"ExtendedContactDetail")) {
31699      return true;
31700    } else if (xpp.getName().equals(prefix+"Extension")) {
31701      return true;
31702    } else if (xpp.getName().equals(prefix+"HumanName")) {
31703      return true;
31704    } else if (xpp.getName().equals(prefix+"Identifier")) {
31705      return true;
31706    } else if (xpp.getName().equals(prefix+"MarketingStatus")) {
31707      return true;
31708    } else if (xpp.getName().equals(prefix+"Meta")) {
31709      return true;
31710    } else if (xpp.getName().equals(prefix+"MonetaryComponent")) {
31711      return true;
31712    } else if (xpp.getName().equals(prefix+"Money")) {
31713      return true;
31714    } else if (xpp.getName().equals(prefix+"Narrative")) {
31715      return true;
31716    } else if (xpp.getName().equals(prefix+"ParameterDefinition")) {
31717      return true;
31718    } else if (xpp.getName().equals(prefix+"Period")) {
31719      return true;
31720    } else if (xpp.getName().equals(prefix+"ProductShelfLife")) {
31721      return true;
31722    } else if (xpp.getName().equals(prefix+"Quantity")) {
31723      return true;
31724    } else if (xpp.getName().equals(prefix+"Range")) {
31725      return true;
31726    } else if (xpp.getName().equals(prefix+"Ratio")) {
31727      return true;
31728    } else if (xpp.getName().equals(prefix+"RatioRange")) {
31729      return true;
31730    } else if (xpp.getName().equals(prefix+"Reference")) {
31731      return true;
31732    } else if (xpp.getName().equals(prefix+"RelatedArtifact")) {
31733      return true;
31734    } else if (xpp.getName().equals(prefix+"SampledData")) {
31735      return true;
31736    } else if (xpp.getName().equals(prefix+"Signature")) {
31737      return true;
31738    } else if (xpp.getName().equals(prefix+"Timing")) {
31739      return true;
31740    } else if (xpp.getName().equals(prefix+"TriggerDefinition")) {
31741      return true;
31742    } else if (xpp.getName().equals(prefix+"UsageContext")) {
31743      return true;
31744    } else if (xpp.getName().equals(prefix+"VirtualServiceDetail")) {
31745      return true;
31746    } else if (xpp.getName().equals(prefix+"Account")) {
31747      return true;
31748    } else if (xpp.getName().equals(prefix+"ActivityDefinition")) {
31749      return true;
31750    } else if (xpp.getName().equals(prefix+"ActorDefinition")) {
31751      return true;
31752    } else if (xpp.getName().equals(prefix+"AdministrableProductDefinition")) {
31753      return true;
31754    } else if (xpp.getName().equals(prefix+"AdverseEvent")) {
31755      return true;
31756    } else if (xpp.getName().equals(prefix+"AllergyIntolerance")) {
31757      return true;
31758    } else if (xpp.getName().equals(prefix+"Appointment")) {
31759      return true;
31760    } else if (xpp.getName().equals(prefix+"AppointmentResponse")) {
31761      return true;
31762    } else if (xpp.getName().equals(prefix+"ArtifactAssessment")) {
31763      return true;
31764    } else if (xpp.getName().equals(prefix+"AuditEvent")) {
31765      return true;
31766    } else if (xpp.getName().equals(prefix+"Basic")) {
31767      return true;
31768    } else if (xpp.getName().equals(prefix+"Binary")) {
31769      return true;
31770    } else if (xpp.getName().equals(prefix+"BiologicallyDerivedProduct")) {
31771      return true;
31772    } else if (xpp.getName().equals(prefix+"BiologicallyDerivedProductDispense")) {
31773      return true;
31774    } else if (xpp.getName().equals(prefix+"BodyStructure")) {
31775      return true;
31776    } else if (xpp.getName().equals(prefix+"Bundle")) {
31777      return true;
31778    } else if (xpp.getName().equals(prefix+"CapabilityStatement")) {
31779      return true;
31780    } else if (xpp.getName().equals(prefix+"CarePlan")) {
31781      return true;
31782    } else if (xpp.getName().equals(prefix+"CareTeam")) {
31783      return true;
31784    } else if (xpp.getName().equals(prefix+"ChargeItem")) {
31785      return true;
31786    } else if (xpp.getName().equals(prefix+"ChargeItemDefinition")) {
31787      return true;
31788    } else if (xpp.getName().equals(prefix+"Citation")) {
31789      return true;
31790    } else if (xpp.getName().equals(prefix+"Claim")) {
31791      return true;
31792    } else if (xpp.getName().equals(prefix+"ClaimResponse")) {
31793      return true;
31794    } else if (xpp.getName().equals(prefix+"ClinicalImpression")) {
31795      return true;
31796    } else if (xpp.getName().equals(prefix+"ClinicalUseDefinition")) {
31797      return true;
31798    } else if (xpp.getName().equals(prefix+"CodeSystem")) {
31799      return true;
31800    } else if (xpp.getName().equals(prefix+"Communication")) {
31801      return true;
31802    } else if (xpp.getName().equals(prefix+"CommunicationRequest")) {
31803      return true;
31804    } else if (xpp.getName().equals(prefix+"CompartmentDefinition")) {
31805      return true;
31806    } else if (xpp.getName().equals(prefix+"Composition")) {
31807      return true;
31808    } else if (xpp.getName().equals(prefix+"ConceptMap")) {
31809      return true;
31810    } else if (xpp.getName().equals(prefix+"Condition")) {
31811      return true;
31812    } else if (xpp.getName().equals(prefix+"ConditionDefinition")) {
31813      return true;
31814    } else if (xpp.getName().equals(prefix+"Consent")) {
31815      return true;
31816    } else if (xpp.getName().equals(prefix+"Contract")) {
31817      return true;
31818    } else if (xpp.getName().equals(prefix+"Coverage")) {
31819      return true;
31820    } else if (xpp.getName().equals(prefix+"CoverageEligibilityRequest")) {
31821      return true;
31822    } else if (xpp.getName().equals(prefix+"CoverageEligibilityResponse")) {
31823      return true;
31824    } else if (xpp.getName().equals(prefix+"DetectedIssue")) {
31825      return true;
31826    } else if (xpp.getName().equals(prefix+"Device")) {
31827      return true;
31828    } else if (xpp.getName().equals(prefix+"DeviceAssociation")) {
31829      return true;
31830    } else if (xpp.getName().equals(prefix+"DeviceDefinition")) {
31831      return true;
31832    } else if (xpp.getName().equals(prefix+"DeviceDispense")) {
31833      return true;
31834    } else if (xpp.getName().equals(prefix+"DeviceMetric")) {
31835      return true;
31836    } else if (xpp.getName().equals(prefix+"DeviceRequest")) {
31837      return true;
31838    } else if (xpp.getName().equals(prefix+"DeviceUsage")) {
31839      return true;
31840    } else if (xpp.getName().equals(prefix+"DiagnosticReport")) {
31841      return true;
31842    } else if (xpp.getName().equals(prefix+"DocumentReference")) {
31843      return true;
31844    } else if (xpp.getName().equals(prefix+"Encounter")) {
31845      return true;
31846    } else if (xpp.getName().equals(prefix+"EncounterHistory")) {
31847      return true;
31848    } else if (xpp.getName().equals(prefix+"Endpoint")) {
31849      return true;
31850    } else if (xpp.getName().equals(prefix+"EnrollmentRequest")) {
31851      return true;
31852    } else if (xpp.getName().equals(prefix+"EnrollmentResponse")) {
31853      return true;
31854    } else if (xpp.getName().equals(prefix+"EpisodeOfCare")) {
31855      return true;
31856    } else if (xpp.getName().equals(prefix+"EventDefinition")) {
31857      return true;
31858    } else if (xpp.getName().equals(prefix+"Evidence")) {
31859      return true;
31860    } else if (xpp.getName().equals(prefix+"EvidenceReport")) {
31861      return true;
31862    } else if (xpp.getName().equals(prefix+"EvidenceVariable")) {
31863      return true;
31864    } else if (xpp.getName().equals(prefix+"ExampleScenario")) {
31865      return true;
31866    } else if (xpp.getName().equals(prefix+"ExplanationOfBenefit")) {
31867      return true;
31868    } else if (xpp.getName().equals(prefix+"FamilyMemberHistory")) {
31869      return true;
31870    } else if (xpp.getName().equals(prefix+"Flag")) {
31871      return true;
31872    } else if (xpp.getName().equals(prefix+"FormularyItem")) {
31873      return true;
31874    } else if (xpp.getName().equals(prefix+"GenomicStudy")) {
31875      return true;
31876    } else if (xpp.getName().equals(prefix+"Goal")) {
31877      return true;
31878    } else if (xpp.getName().equals(prefix+"GraphDefinition")) {
31879      return true;
31880    } else if (xpp.getName().equals(prefix+"Group")) {
31881      return true;
31882    } else if (xpp.getName().equals(prefix+"GuidanceResponse")) {
31883      return true;
31884    } else if (xpp.getName().equals(prefix+"HealthcareService")) {
31885      return true;
31886    } else if (xpp.getName().equals(prefix+"ImagingSelection")) {
31887      return true;
31888    } else if (xpp.getName().equals(prefix+"ImagingStudy")) {
31889      return true;
31890    } else if (xpp.getName().equals(prefix+"Immunization")) {
31891      return true;
31892    } else if (xpp.getName().equals(prefix+"ImmunizationEvaluation")) {
31893      return true;
31894    } else if (xpp.getName().equals(prefix+"ImmunizationRecommendation")) {
31895      return true;
31896    } else if (xpp.getName().equals(prefix+"ImplementationGuide")) {
31897      return true;
31898    } else if (xpp.getName().equals(prefix+"Ingredient")) {
31899      return true;
31900    } else if (xpp.getName().equals(prefix+"InsurancePlan")) {
31901      return true;
31902    } else if (xpp.getName().equals(prefix+"InventoryItem")) {
31903      return true;
31904    } else if (xpp.getName().equals(prefix+"InventoryReport")) {
31905      return true;
31906    } else if (xpp.getName().equals(prefix+"Invoice")) {
31907      return true;
31908    } else if (xpp.getName().equals(prefix+"Library")) {
31909      return true;
31910    } else if (xpp.getName().equals(prefix+"Linkage")) {
31911      return true;
31912    } else if (xpp.getName().equals(prefix+"List")) {
31913      return true;
31914    } else if (xpp.getName().equals(prefix+"Location")) {
31915      return true;
31916    } else if (xpp.getName().equals(prefix+"ManufacturedItemDefinition")) {
31917      return true;
31918    } else if (xpp.getName().equals(prefix+"Measure")) {
31919      return true;
31920    } else if (xpp.getName().equals(prefix+"MeasureReport")) {
31921      return true;
31922    } else if (xpp.getName().equals(prefix+"Medication")) {
31923      return true;
31924    } else if (xpp.getName().equals(prefix+"MedicationAdministration")) {
31925      return true;
31926    } else if (xpp.getName().equals(prefix+"MedicationDispense")) {
31927      return true;
31928    } else if (xpp.getName().equals(prefix+"MedicationKnowledge")) {
31929      return true;
31930    } else if (xpp.getName().equals(prefix+"MedicationRequest")) {
31931      return true;
31932    } else if (xpp.getName().equals(prefix+"MedicationStatement")) {
31933      return true;
31934    } else if (xpp.getName().equals(prefix+"MedicinalProductDefinition")) {
31935      return true;
31936    } else if (xpp.getName().equals(prefix+"MessageDefinition")) {
31937      return true;
31938    } else if (xpp.getName().equals(prefix+"MessageHeader")) {
31939      return true;
31940    } else if (xpp.getName().equals(prefix+"MolecularSequence")) {
31941      return true;
31942    } else if (xpp.getName().equals(prefix+"NamingSystem")) {
31943      return true;
31944    } else if (xpp.getName().equals(prefix+"NutritionIntake")) {
31945      return true;
31946    } else if (xpp.getName().equals(prefix+"NutritionOrder")) {
31947      return true;
31948    } else if (xpp.getName().equals(prefix+"NutritionProduct")) {
31949      return true;
31950    } else if (xpp.getName().equals(prefix+"Observation")) {
31951      return true;
31952    } else if (xpp.getName().equals(prefix+"ObservationDefinition")) {
31953      return true;
31954    } else if (xpp.getName().equals(prefix+"OperationDefinition")) {
31955      return true;
31956    } else if (xpp.getName().equals(prefix+"OperationOutcome")) {
31957      return true;
31958    } else if (xpp.getName().equals(prefix+"Organization")) {
31959      return true;
31960    } else if (xpp.getName().equals(prefix+"OrganizationAffiliation")) {
31961      return true;
31962    } else if (xpp.getName().equals(prefix+"PackagedProductDefinition")) {
31963      return true;
31964    } else if (xpp.getName().equals(prefix+"Parameters")) {
31965      return true;
31966    } else if (xpp.getName().equals(prefix+"Patient")) {
31967      return true;
31968    } else if (xpp.getName().equals(prefix+"PaymentNotice")) {
31969      return true;
31970    } else if (xpp.getName().equals(prefix+"PaymentReconciliation")) {
31971      return true;
31972    } else if (xpp.getName().equals(prefix+"Permission")) {
31973      return true;
31974    } else if (xpp.getName().equals(prefix+"Person")) {
31975      return true;
31976    } else if (xpp.getName().equals(prefix+"PlanDefinition")) {
31977      return true;
31978    } else if (xpp.getName().equals(prefix+"Practitioner")) {
31979      return true;
31980    } else if (xpp.getName().equals(prefix+"PractitionerRole")) {
31981      return true;
31982    } else if (xpp.getName().equals(prefix+"Procedure")) {
31983      return true;
31984    } else if (xpp.getName().equals(prefix+"Provenance")) {
31985      return true;
31986    } else if (xpp.getName().equals(prefix+"Questionnaire")) {
31987      return true;
31988    } else if (xpp.getName().equals(prefix+"QuestionnaireResponse")) {
31989      return true;
31990    } else if (xpp.getName().equals(prefix+"RegulatedAuthorization")) {
31991      return true;
31992    } else if (xpp.getName().equals(prefix+"RelatedPerson")) {
31993      return true;
31994    } else if (xpp.getName().equals(prefix+"RequestOrchestration")) {
31995      return true;
31996    } else if (xpp.getName().equals(prefix+"Requirements")) {
31997      return true;
31998    } else if (xpp.getName().equals(prefix+"ResearchStudy")) {
31999      return true;
32000    } else if (xpp.getName().equals(prefix+"ResearchSubject")) {
32001      return true;
32002    } else if (xpp.getName().equals(prefix+"RiskAssessment")) {
32003      return true;
32004    } else if (xpp.getName().equals(prefix+"Schedule")) {
32005      return true;
32006    } else if (xpp.getName().equals(prefix+"SearchParameter")) {
32007      return true;
32008    } else if (xpp.getName().equals(prefix+"ServiceRequest")) {
32009      return true;
32010    } else if (xpp.getName().equals(prefix+"Slot")) {
32011      return true;
32012    } else if (xpp.getName().equals(prefix+"Specimen")) {
32013      return true;
32014    } else if (xpp.getName().equals(prefix+"SpecimenDefinition")) {
32015      return true;
32016    } else if (xpp.getName().equals(prefix+"StructureDefinition")) {
32017      return true;
32018    } else if (xpp.getName().equals(prefix+"StructureMap")) {
32019      return true;
32020    } else if (xpp.getName().equals(prefix+"Subscription")) {
32021      return true;
32022    } else if (xpp.getName().equals(prefix+"SubscriptionStatus")) {
32023      return true;
32024    } else if (xpp.getName().equals(prefix+"SubscriptionTopic")) {
32025      return true;
32026    } else if (xpp.getName().equals(prefix+"Substance")) {
32027      return true;
32028    } else if (xpp.getName().equals(prefix+"SubstanceDefinition")) {
32029      return true;
32030    } else if (xpp.getName().equals(prefix+"SubstanceNucleicAcid")) {
32031      return true;
32032    } else if (xpp.getName().equals(prefix+"SubstancePolymer")) {
32033      return true;
32034    } else if (xpp.getName().equals(prefix+"SubstanceProtein")) {
32035      return true;
32036    } else if (xpp.getName().equals(prefix+"SubstanceReferenceInformation")) {
32037      return true;
32038    } else if (xpp.getName().equals(prefix+"SubstanceSourceMaterial")) {
32039      return true;
32040    } else if (xpp.getName().equals(prefix+"SupplyDelivery")) {
32041      return true;
32042    } else if (xpp.getName().equals(prefix+"SupplyRequest")) {
32043      return true;
32044    } else if (xpp.getName().equals(prefix+"Task")) {
32045      return true;
32046    } else if (xpp.getName().equals(prefix+"TerminologyCapabilities")) {
32047      return true;
32048    } else if (xpp.getName().equals(prefix+"TestPlan")) {
32049      return true;
32050    } else if (xpp.getName().equals(prefix+"TestReport")) {
32051      return true;
32052    } else if (xpp.getName().equals(prefix+"TestScript")) {
32053      return true;
32054    } else if (xpp.getName().equals(prefix+"Transport")) {
32055      return true;
32056    } else if (xpp.getName().equals(prefix+"ValueSet")) {
32057      return true;
32058    } else if (xpp.getName().equals(prefix+"VerificationResult")) {
32059      return true;
32060    } else if (xpp.getName().equals(prefix+"VisionPrescription")) {
32061      return true;
32062
32063    } else if (xpp.getName().equals(prefix+"Date")) {
32064      return true;
32065    } else if (xpp.getName().equals(prefix+"DateTime")) {
32066      return true;
32067    } else if (xpp.getName().equals(prefix+"Code")) {
32068      return true;
32069    } else if (xpp.getName().equals(prefix+"String")) {
32070      return true;
32071    } else if (xpp.getName().equals(prefix+"Integer")) {
32072      return true;
32073    } else if (xpp.getName().equals(prefix+"Integer64")) {
32074      return true;
32075    } else if (xpp.getName().equals(prefix+"Oid")) {
32076      return true;
32077    } else if (xpp.getName().equals(prefix+"Canonical")) {
32078      return true;
32079    } else if (xpp.getName().equals(prefix+"Uri")) {
32080      return true;
32081    } else if (xpp.getName().equals(prefix+"Uuid")) {
32082      return true;
32083    } else if (xpp.getName().equals(prefix+"Url")) {
32084      return true;
32085    } else if (xpp.getName().equals(prefix+"Instant")) {
32086      return true;
32087    } else if (xpp.getName().equals(prefix+"Boolean")) {
32088      return true;
32089    } else if (xpp.getName().equals(prefix+"Base64Binary")) {
32090      return true;
32091    } else if (xpp.getName().equals(prefix+"UnsignedInt")) {
32092      return true;
32093    } else if (xpp.getName().equals(prefix+"Markdown")) {
32094      return true;
32095    } else if (xpp.getName().equals(prefix+"Time")) {
32096      return true;
32097    } else if (xpp.getName().equals(prefix+"Id")) {
32098      return true;
32099    } else if (xpp.getName().equals(prefix+"PositiveInt")) {
32100      return true;
32101    } else if (xpp.getName().equals(prefix+"Decimal")) {
32102      return true;
32103    } else {
32104      return false;
32105    }
32106  }
32107
32108  @Override
32109  protected DataType parseAnyType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
32110    return parseType(xpp, type);
32111  }
32112
32113
32114//----------------- Composer -------------------------------------------------------------------------------------------
32115
32116  protected <E extends Enum<E>> void composeEnumeration(String name, Enumeration<E> value, EnumFactory e) throws IOException {
32117    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {
32118      composeElementAttributes(value);
32119      if (value.getValue() != null) 
32120        xml.attribute("value", e.toCode(value.getValue()));
32121        
32122      xml.enter(FHIR_NS, name);
32123      composeElementElements(value);
32124      composeElementClose(value);
32125      xml.exit(FHIR_NS, name);
32126    }    
32127  }    
32128
32129  protected void composeDate(String name, DateType value) throws IOException  {
32130    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// date
32131      composeElementAttributes(value);
32132      if (value.asStringValue() != null) 
32133        xml.attribute("value", value.asStringValue());
32134        
32135      xml.enter(FHIR_NS, name);
32136      composeElementElements(value);
32137      composeElementClose(value);
32138      xml.exit(FHIR_NS, name);
32139    }    
32140  }    
32141
32142  protected void composeDateTime(String name, DateTimeType value) throws IOException  {
32143    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// dateTime
32144      composeElementAttributes(value);
32145      if (value.asStringValue() != null) 
32146        xml.attribute("value", value.asStringValue());
32147        
32148      xml.enter(FHIR_NS, name);
32149      composeElementElements(value);
32150      composeElementClose(value);
32151      xml.exit(FHIR_NS, name);
32152    }    
32153  }    
32154
32155  protected void composeCode(String name, CodeType value) throws IOException  {
32156    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// code
32157      composeElementAttributes(value);
32158      if (value.asStringValue() != null) 
32159        xml.attribute("value", value.asStringValue());
32160        
32161      xml.enter(FHIR_NS, name);
32162      composeElementElements(value);
32163      composeElementClose(value);
32164      xml.exit(FHIR_NS, name);
32165    }    
32166  }    
32167
32168  protected void composeString(String name, StringType value) throws IOException  {
32169    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// string
32170      composeElementAttributes(value);
32171      if (value.asStringValue() != null) 
32172        xml.attribute("value", value.asStringValue());
32173        
32174      xml.enter(FHIR_NS, name);
32175      composeElementElements(value);
32176      composeElementClose(value);
32177      xml.exit(FHIR_NS, name);
32178    }    
32179  }    
32180
32181  protected void composeInteger(String name, IntegerType value) throws IOException  {
32182    if (value != null) { // integer
32183      composeElementAttributes(value);
32184      if (value.asStringValue() != null) 
32185        xml.attribute("value", value.asStringValue());
32186        
32187      xml.enter(FHIR_NS, name);
32188      composeElementElements(value);
32189      composeElementClose(value);
32190      xml.exit(FHIR_NS, name);
32191    }    
32192  }    
32193
32194  protected void composeInteger64(String name, Integer64Type value) throws IOException  {
32195    if (value != null) { // integer
32196      composeElementAttributes(value);
32197      if (value.asStringValue() != null) 
32198        xml.attribute("value", value.asStringValue());
32199        
32200      xml.enter(FHIR_NS, name);
32201      composeElementElements(value);
32202      composeElementClose(value);
32203      xml.exit(FHIR_NS, name);
32204    }    
32205  }    
32206
32207  protected void composeOid(String name, OidType value) throws IOException  {
32208    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// oid
32209      composeElementAttributes(value);
32210      if (value.asStringValue() != null) 
32211        xml.attribute("value", value.asStringValue());
32212        
32213      xml.enter(FHIR_NS, name);
32214      composeElementElements(value);
32215      composeElementClose(value);
32216      xml.exit(FHIR_NS, name);
32217    }    
32218  }    
32219
32220  protected void composeCanonical(String name, CanonicalType value) throws IOException  {
32221    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// canonical
32222      composeElementAttributes(value);
32223      if (value.asStringValue() != null) 
32224        xml.attribute("value", value.asStringValue());
32225        
32226      xml.enter(FHIR_NS, name);
32227      composeElementElements(value);
32228      composeElementClose(value);
32229      xml.exit(FHIR_NS, name);
32230    }    
32231  }    
32232
32233  protected void composeUri(String name, UriType value) throws IOException  {
32234    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// uri
32235      composeElementAttributes(value);
32236      if (value.asStringValue() != null) 
32237        xml.attribute("value", value.asStringValue());
32238        
32239      xml.enter(FHIR_NS, name);
32240      composeElementElements(value);
32241      composeElementClose(value);
32242      xml.exit(FHIR_NS, name);
32243    }    
32244  }    
32245
32246  protected void composeUuid(String name, UuidType value) throws IOException  {
32247    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// uuid
32248      composeElementAttributes(value);
32249      if (value.asStringValue() != null) 
32250        xml.attribute("value", value.asStringValue());
32251        
32252      xml.enter(FHIR_NS, name);
32253      composeElementElements(value);
32254      composeElementClose(value);
32255      xml.exit(FHIR_NS, name);
32256    }    
32257  }    
32258
32259  protected void composeUrl(String name, UrlType value) throws IOException  {
32260    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// url
32261      composeElementAttributes(value);
32262      if (value.asStringValue() != null) 
32263        xml.attribute("value", value.asStringValue());
32264        
32265      xml.enter(FHIR_NS, name);
32266      composeElementElements(value);
32267      composeElementClose(value);
32268      xml.exit(FHIR_NS, name);
32269    }    
32270  }    
32271
32272  protected void composeInstant(String name, InstantType value) throws IOException  {
32273    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// instant
32274      composeElementAttributes(value);
32275      if (value.asStringValue() != null) 
32276        xml.attribute("value", value.asStringValue());
32277        
32278      xml.enter(FHIR_NS, name);
32279      composeElementElements(value);
32280      composeElementClose(value);
32281      xml.exit(FHIR_NS, name);
32282    }    
32283  }    
32284
32285  protected void composeBoolean(String name, BooleanType value) throws IOException  {
32286    if (value != null) { // boolean
32287      composeElementAttributes(value);
32288      if (value.asStringValue() != null) 
32289        xml.attribute("value", value.asStringValue());
32290        
32291      xml.enter(FHIR_NS, name);
32292      composeElementElements(value);
32293      composeElementClose(value);
32294      xml.exit(FHIR_NS, name);
32295    }    
32296  }    
32297
32298  protected void composeBase64Binary(String name, Base64BinaryType value) throws IOException  {
32299    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// base64Binary
32300      composeElementAttributes(value);
32301      if (value.asStringValue() != null) 
32302        xml.attribute("value", value.asStringValue());
32303        
32304      xml.enter(FHIR_NS, name);
32305      composeElementElements(value);
32306      composeElementClose(value);
32307      xml.exit(FHIR_NS, name);
32308    }    
32309  }    
32310
32311  protected void composeUnsignedInt(String name, UnsignedIntType value) throws IOException  {
32312    if (value != null) { // unsignedInt
32313      composeElementAttributes(value);
32314      if (value.asStringValue() != null) 
32315        xml.attribute("value", value.asStringValue());
32316        
32317      xml.enter(FHIR_NS, name);
32318      composeElementElements(value);
32319      composeElementClose(value);
32320      xml.exit(FHIR_NS, name);
32321    }    
32322  }    
32323
32324  protected void composeMarkdown(String name, MarkdownType value) throws IOException  {
32325    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// markdown
32326      composeElementAttributes(value);
32327      if (value.asStringValue() != null) 
32328        xml.attribute("value", value.asStringValue());
32329        
32330      xml.enter(FHIR_NS, name);
32331      composeElementElements(value);
32332      composeElementClose(value);
32333      xml.exit(FHIR_NS, name);
32334    }    
32335  }    
32336
32337  protected void composeTime(String name, TimeType value) throws IOException  {
32338    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// time
32339      composeElementAttributes(value);
32340      if (value.asStringValue() != null) 
32341        xml.attribute("value", value.asStringValue());
32342        
32343      xml.enter(FHIR_NS, name);
32344      composeElementElements(value);
32345      composeElementClose(value);
32346      xml.exit(FHIR_NS, name);
32347    }    
32348  }    
32349
32350  protected void composeId(String name, IdType value) throws IOException  {
32351    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// id
32352      composeElementAttributes(value);
32353      if (value.asStringValue() != null) 
32354        xml.attribute("value", value.asStringValue());
32355        
32356      xml.enter(FHIR_NS, name);
32357      composeElementElements(value);
32358      composeElementClose(value);
32359      xml.exit(FHIR_NS, name);
32360    }    
32361  }    
32362
32363  protected void composePositiveInt(String name, PositiveIntType value) throws IOException  {
32364    if (value != null) { // positiveInt
32365      composeElementAttributes(value);
32366      if (value.asStringValue() != null) 
32367        xml.attribute("value", value.asStringValue());
32368        
32369      xml.enter(FHIR_NS, name);
32370      composeElementElements(value);
32371      composeElementClose(value);
32372      xml.exit(FHIR_NS, name);
32373    }    
32374  }    
32375
32376  protected void composeDecimal(String name, DecimalType value) throws IOException  {
32377    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// decimal
32378      composeElementAttributes(value);
32379      if (value.asStringValue() != null) 
32380        xml.attribute("value", value.asStringValue());
32381        
32382      xml.enter(FHIR_NS, name);
32383      composeElementElements(value);
32384      composeElementClose(value);
32385      xml.exit(FHIR_NS, name);
32386    }    
32387  }    
32388
32389  protected void composeBackboneElementElements(BackboneElement element) throws IOException {
32390    composeElementElements(element);
32391    if (element.hasModifierExtension()) { 
32392      for (Extension e : element.getModifierExtension()) 
32393          composeExtension("modifierExtension", e);
32394    }
32395  }
32396
32397  protected void composeBackboneTypeElements(BackboneType element) throws IOException {
32398    composeDataTypeElements(element);
32399    if (element.hasModifierExtension()) { 
32400      for (Extension e : element.getModifierExtension()) 
32401          composeExtension("modifierExtension", e);
32402    }
32403  }
32404
32405  protected void composeDataTypeElements(DataType element) throws IOException {
32406    composeElementElements(element);
32407  }
32408
32409  protected void composeElementElements(Element element) throws IOException {
32410    composeBaseElements(element);
32411    if (element.hasExtension()) { 
32412      for (Extension e : element.getExtension()) 
32413          composeExtension("extension", e);
32414    }
32415  }
32416
32417  protected void composeAddress(String name, Address element) throws IOException {
32418    if (element != null) {
32419    composeElementAttributes(element);
32420      xml.enter(FHIR_NS, name);
32421      composeAddressElements(element);
32422      composeElementClose(element);
32423      xml.exit(FHIR_NS, name);
32424    }
32425  }
32426
32427  protected void composeAddressElements(Address element) throws IOException {
32428    composeDataTypeElements(element);
32429    if (element.hasUseElement())
32430      composeEnumeration("use", element.getUseElement(), new Address.AddressUseEnumFactory());
32431    if (element.hasTypeElement())
32432      composeEnumeration("type", element.getTypeElement(), new Address.AddressTypeEnumFactory());
32433    if (element.hasTextElement()) {
32434      composeString("text", element.getTextElement());
32435    }
32436    if (element.hasLine()) { 
32437      for (StringType e : element.getLine()) 
32438          composeString("line", e);
32439    }
32440    if (element.hasCityElement()) {
32441      composeString("city", element.getCityElement());
32442    }
32443    if (element.hasDistrictElement()) {
32444      composeString("district", element.getDistrictElement());
32445    }
32446    if (element.hasStateElement()) {
32447      composeString("state", element.getStateElement());
32448    }
32449    if (element.hasPostalCodeElement()) {
32450      composeString("postalCode", element.getPostalCodeElement());
32451    }
32452    if (element.hasCountryElement()) {
32453      composeString("country", element.getCountryElement());
32454    }
32455    if (element.hasPeriod()) {
32456      composePeriod("period", element.getPeriod());
32457    }
32458  }
32459
32460  protected void composeAge(String name, Age element) throws IOException {
32461    if (element != null) {
32462    composeElementAttributes(element);
32463      xml.enter(FHIR_NS, name);
32464      composeAgeElements(element);
32465      composeElementClose(element);
32466      xml.exit(FHIR_NS, name);
32467    }
32468  }
32469
32470  protected void composeAgeElements(Age element) throws IOException {
32471    composeQuantityElements(element);
32472  }
32473
32474  protected void composeAnnotation(String name, Annotation element) throws IOException {
32475    if (element != null) {
32476    composeElementAttributes(element);
32477      xml.enter(FHIR_NS, name);
32478      composeAnnotationElements(element);
32479      composeElementClose(element);
32480      xml.exit(FHIR_NS, name);
32481    }
32482  }
32483
32484  protected void composeAnnotationElements(Annotation element) throws IOException {
32485    composeDataTypeElements(element);
32486    if (element.hasAuthor()) {
32487      composeType("author", element.getAuthor());
32488    }    if (element.hasTimeElement()) {
32489      composeDateTime("time", element.getTimeElement());
32490    }
32491    if (element.hasTextElement()) {
32492      composeMarkdown("text", element.getTextElement());
32493    }
32494  }
32495
32496  protected void composeAttachment(String name, Attachment element) throws IOException {
32497    if (element != null) {
32498    composeElementAttributes(element);
32499      xml.enter(FHIR_NS, name);
32500      composeAttachmentElements(element);
32501      composeElementClose(element);
32502      xml.exit(FHIR_NS, name);
32503    }
32504  }
32505
32506  protected void composeAttachmentElements(Attachment element) throws IOException {
32507    composeDataTypeElements(element);
32508    if (element.hasContentTypeElement()) {
32509      composeCode("contentType", element.getContentTypeElement());
32510    }
32511    if (element.hasLanguageElement()) {
32512      composeCode("language", element.getLanguageElement());
32513    }
32514    if (element.hasDataElement()) {
32515      composeBase64Binary("data", element.getDataElement());
32516    }
32517    if (element.hasUrlElement()) {
32518      composeUrl("url", element.getUrlElement());
32519    }
32520    if (element.hasSizeElement()) {
32521      composeInteger64("size", element.getSizeElement());
32522    }
32523    if (element.hasHashElement()) {
32524      composeBase64Binary("hash", element.getHashElement());
32525    }
32526    if (element.hasTitleElement()) {
32527      composeString("title", element.getTitleElement());
32528    }
32529    if (element.hasCreationElement()) {
32530      composeDateTime("creation", element.getCreationElement());
32531    }
32532    if (element.hasHeightElement()) {
32533      composePositiveInt("height", element.getHeightElement());
32534    }
32535    if (element.hasWidthElement()) {
32536      composePositiveInt("width", element.getWidthElement());
32537    }
32538    if (element.hasFramesElement()) {
32539      composePositiveInt("frames", element.getFramesElement());
32540    }
32541    if (element.hasDurationElement()) {
32542      composeDecimal("duration", element.getDurationElement());
32543    }
32544    if (element.hasPagesElement()) {
32545      composePositiveInt("pages", element.getPagesElement());
32546    }
32547  }
32548
32549  protected void composeAvailability(String name, Availability element) throws IOException {
32550    if (element != null) {
32551    composeElementAttributes(element);
32552      xml.enter(FHIR_NS, name);
32553      composeAvailabilityElements(element);
32554      composeElementClose(element);
32555      xml.exit(FHIR_NS, name);
32556    }
32557  }
32558
32559  protected void composeAvailabilityElements(Availability element) throws IOException {
32560    composeDataTypeElements(element);
32561    if (element.hasAvailableTime()) { 
32562      for (Availability.AvailabilityAvailableTimeComponent e : element.getAvailableTime()) 
32563          composeAvailabilityAvailableTimeComponent("availableTime", e);
32564    }
32565    if (element.hasNotAvailableTime()) { 
32566      for (Availability.AvailabilityNotAvailableTimeComponent e : element.getNotAvailableTime()) 
32567          composeAvailabilityNotAvailableTimeComponent("notAvailableTime", e);
32568    }
32569  }
32570
32571  protected void composeAvailabilityAvailableTimeComponent(String name, Availability.AvailabilityAvailableTimeComponent element) throws IOException {
32572    if (element != null) {
32573    composeElementAttributes(element);
32574      xml.enter(FHIR_NS, name);
32575      composeAvailabilityAvailableTimeComponentElements(element);
32576      composeElementClose(element);
32577      xml.exit(FHIR_NS, name);
32578    }
32579  }
32580
32581  protected void composeAvailabilityAvailableTimeComponentElements(Availability.AvailabilityAvailableTimeComponent element) throws IOException {
32582    composeElementElements(element);
32583      if (element.hasDaysOfWeek()) 
32584        for (Enumeration<Enumerations.DaysOfWeek> e : element.getDaysOfWeek()) 
32585          composeEnumeration("daysOfWeek", e, new Enumerations.DaysOfWeekEnumFactory());
32586    if (element.hasAllDayElement()) {
32587      composeBoolean("allDay", element.getAllDayElement());
32588    }
32589    if (element.hasAvailableStartTimeElement()) {
32590      composeTime("availableStartTime", element.getAvailableStartTimeElement());
32591    }
32592    if (element.hasAvailableEndTimeElement()) {
32593      composeTime("availableEndTime", element.getAvailableEndTimeElement());
32594    }
32595  }
32596
32597  protected void composeAvailabilityNotAvailableTimeComponent(String name, Availability.AvailabilityNotAvailableTimeComponent element) throws IOException {
32598    if (element != null) {
32599    composeElementAttributes(element);
32600      xml.enter(FHIR_NS, name);
32601      composeAvailabilityNotAvailableTimeComponentElements(element);
32602      composeElementClose(element);
32603      xml.exit(FHIR_NS, name);
32604    }
32605  }
32606
32607  protected void composeAvailabilityNotAvailableTimeComponentElements(Availability.AvailabilityNotAvailableTimeComponent element) throws IOException {
32608    composeElementElements(element);
32609    if (element.hasDescriptionElement()) {
32610      composeString("description", element.getDescriptionElement());
32611    }
32612    if (element.hasDuring()) {
32613      composePeriod("during", element.getDuring());
32614    }
32615  }
32616
32617  protected void composeCodeableConcept(String name, CodeableConcept element) throws IOException {
32618    if (element != null) {
32619    composeElementAttributes(element);
32620      xml.enter(FHIR_NS, name);
32621      composeCodeableConceptElements(element);
32622      composeElementClose(element);
32623      xml.exit(FHIR_NS, name);
32624    }
32625  }
32626
32627  protected void composeCodeableConceptElements(CodeableConcept element) throws IOException {
32628    composeDataTypeElements(element);
32629    if (element.hasCoding()) { 
32630      for (Coding e : element.getCoding()) 
32631          composeCoding("coding", e);
32632    }
32633    if (element.hasTextElement()) {
32634      composeString("text", element.getTextElement());
32635    }
32636  }
32637
32638  protected void composeCodeableReference(String name, CodeableReference element) throws IOException {
32639    if (element != null) {
32640    composeElementAttributes(element);
32641      xml.enter(FHIR_NS, name);
32642      composeCodeableReferenceElements(element);
32643      composeElementClose(element);
32644      xml.exit(FHIR_NS, name);
32645    }
32646  }
32647
32648  protected void composeCodeableReferenceElements(CodeableReference element) throws IOException {
32649    composeDataTypeElements(element);
32650    if (element.hasConcept()) {
32651      composeCodeableConcept("concept", element.getConcept());
32652    }
32653    if (element.hasReference()) {
32654      composeReference("reference", element.getReference());
32655    }
32656  }
32657
32658  protected void composeCoding(String name, Coding element) throws IOException {
32659    if (element != null) {
32660    composeElementAttributes(element);
32661      xml.enter(FHIR_NS, name);
32662      composeCodingElements(element);
32663      composeElementClose(element);
32664      xml.exit(FHIR_NS, name);
32665    }
32666  }
32667
32668  protected void composeCodingElements(Coding element) throws IOException {
32669    composeDataTypeElements(element);
32670    if (element.hasSystemElement()) {
32671      composeUri("system", element.getSystemElement());
32672    }
32673    if (element.hasVersionElement()) {
32674      composeString("version", element.getVersionElement());
32675    }
32676    if (element.hasCodeElement()) {
32677      composeCode("code", element.getCodeElement());
32678    }
32679    if (element.hasDisplayElement()) {
32680      composeString("display", element.getDisplayElement());
32681    }
32682    if (element.hasUserSelectedElement()) {
32683      composeBoolean("userSelected", element.getUserSelectedElement());
32684    }
32685  }
32686
32687  protected void composeContactDetail(String name, ContactDetail element) throws IOException {
32688    if (element != null) {
32689    composeElementAttributes(element);
32690      xml.enter(FHIR_NS, name);
32691      composeContactDetailElements(element);
32692      composeElementClose(element);
32693      xml.exit(FHIR_NS, name);
32694    }
32695  }
32696
32697  protected void composeContactDetailElements(ContactDetail element) throws IOException {
32698    composeDataTypeElements(element);
32699    if (element.hasNameElement()) {
32700      composeString("name", element.getNameElement());
32701    }
32702    if (element.hasTelecom()) { 
32703      for (ContactPoint e : element.getTelecom()) 
32704          composeContactPoint("telecom", e);
32705    }
32706  }
32707
32708  protected void composeContactPoint(String name, ContactPoint element) throws IOException {
32709    if (element != null) {
32710    composeElementAttributes(element);
32711      xml.enter(FHIR_NS, name);
32712      composeContactPointElements(element);
32713      composeElementClose(element);
32714      xml.exit(FHIR_NS, name);
32715    }
32716  }
32717
32718  protected void composeContactPointElements(ContactPoint element) throws IOException {
32719    composeDataTypeElements(element);
32720    if (element.hasSystemElement())
32721      composeEnumeration("system", element.getSystemElement(), new ContactPoint.ContactPointSystemEnumFactory());
32722    if (element.hasValueElement()) {
32723      composeString("value", element.getValueElement());
32724    }
32725    if (element.hasUseElement())
32726      composeEnumeration("use", element.getUseElement(), new ContactPoint.ContactPointUseEnumFactory());
32727    if (element.hasRankElement()) {
32728      composePositiveInt("rank", element.getRankElement());
32729    }
32730    if (element.hasPeriod()) {
32731      composePeriod("period", element.getPeriod());
32732    }
32733  }
32734
32735  protected void composeContributor(String name, Contributor element) throws IOException {
32736    if (element != null) {
32737    composeElementAttributes(element);
32738      xml.enter(FHIR_NS, name);
32739      composeContributorElements(element);
32740      composeElementClose(element);
32741      xml.exit(FHIR_NS, name);
32742    }
32743  }
32744
32745  protected void composeContributorElements(Contributor element) throws IOException {
32746    composeDataTypeElements(element);
32747    if (element.hasTypeElement())
32748      composeEnumeration("type", element.getTypeElement(), new Contributor.ContributorTypeEnumFactory());
32749    if (element.hasNameElement()) {
32750      composeString("name", element.getNameElement());
32751    }
32752    if (element.hasContact()) { 
32753      for (ContactDetail e : element.getContact()) 
32754          composeContactDetail("contact", e);
32755    }
32756  }
32757
32758  protected void composeCount(String name, Count element) throws IOException {
32759    if (element != null) {
32760    composeElementAttributes(element);
32761      xml.enter(FHIR_NS, name);
32762      composeCountElements(element);
32763      composeElementClose(element);
32764      xml.exit(FHIR_NS, name);
32765    }
32766  }
32767
32768  protected void composeCountElements(Count element) throws IOException {
32769    composeQuantityElements(element);
32770  }
32771
32772  protected void composeDataRequirement(String name, DataRequirement element) throws IOException {
32773    if (element != null) {
32774    composeElementAttributes(element);
32775      xml.enter(FHIR_NS, name);
32776      composeDataRequirementElements(element);
32777      composeElementClose(element);
32778      xml.exit(FHIR_NS, name);
32779    }
32780  }
32781
32782  protected void composeDataRequirementElements(DataRequirement element) throws IOException {
32783    composeDataTypeElements(element);
32784    if (element.hasTypeElement())
32785      composeEnumeration("type", element.getTypeElement(), new Enumerations.FHIRTypesEnumFactory());
32786    if (element.hasProfile()) { 
32787      for (CanonicalType e : element.getProfile()) 
32788          composeCanonical("profile", e);
32789    }
32790    if (element.hasSubject()) {
32791      composeType("subject", element.getSubject());
32792    }    if (element.hasMustSupport()) { 
32793      for (StringType e : element.getMustSupport()) 
32794          composeString("mustSupport", e);
32795    }
32796    if (element.hasCodeFilter()) { 
32797      for (DataRequirement.DataRequirementCodeFilterComponent e : element.getCodeFilter()) 
32798          composeDataRequirementCodeFilterComponent("codeFilter", e);
32799    }
32800    if (element.hasDateFilter()) { 
32801      for (DataRequirement.DataRequirementDateFilterComponent e : element.getDateFilter()) 
32802          composeDataRequirementDateFilterComponent("dateFilter", e);
32803    }
32804    if (element.hasValueFilter()) { 
32805      for (DataRequirement.DataRequirementValueFilterComponent e : element.getValueFilter()) 
32806          composeDataRequirementValueFilterComponent("valueFilter", e);
32807    }
32808    if (element.hasLimitElement()) {
32809      composePositiveInt("limit", element.getLimitElement());
32810    }
32811    if (element.hasSort()) { 
32812      for (DataRequirement.DataRequirementSortComponent e : element.getSort()) 
32813          composeDataRequirementSortComponent("sort", e);
32814    }
32815  }
32816
32817  protected void composeDataRequirementCodeFilterComponent(String name, DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
32818    if (element != null) {
32819    composeElementAttributes(element);
32820      xml.enter(FHIR_NS, name);
32821      composeDataRequirementCodeFilterComponentElements(element);
32822      composeElementClose(element);
32823      xml.exit(FHIR_NS, name);
32824    }
32825  }
32826
32827  protected void composeDataRequirementCodeFilterComponentElements(DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
32828    composeElementElements(element);
32829    if (element.hasPathElement()) {
32830      composeString("path", element.getPathElement());
32831    }
32832    if (element.hasSearchParamElement()) {
32833      composeString("searchParam", element.getSearchParamElement());
32834    }
32835    if (element.hasValueSetElement()) {
32836      composeCanonical("valueSet", element.getValueSetElement());
32837    }
32838    if (element.hasCode()) { 
32839      for (Coding e : element.getCode()) 
32840          composeCoding("code", e);
32841    }
32842  }
32843
32844  protected void composeDataRequirementDateFilterComponent(String name, DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
32845    if (element != null) {
32846    composeElementAttributes(element);
32847      xml.enter(FHIR_NS, name);
32848      composeDataRequirementDateFilterComponentElements(element);
32849      composeElementClose(element);
32850      xml.exit(FHIR_NS, name);
32851    }
32852  }
32853
32854  protected void composeDataRequirementDateFilterComponentElements(DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
32855    composeElementElements(element);
32856    if (element.hasPathElement()) {
32857      composeString("path", element.getPathElement());
32858    }
32859    if (element.hasSearchParamElement()) {
32860      composeString("searchParam", element.getSearchParamElement());
32861    }
32862    if (element.hasValue()) {
32863      composeType("value", element.getValue());
32864    }  }
32865
32866  protected void composeDataRequirementValueFilterComponent(String name, DataRequirement.DataRequirementValueFilterComponent element) throws IOException {
32867    if (element != null) {
32868    composeElementAttributes(element);
32869      xml.enter(FHIR_NS, name);
32870      composeDataRequirementValueFilterComponentElements(element);
32871      composeElementClose(element);
32872      xml.exit(FHIR_NS, name);
32873    }
32874  }
32875
32876  protected void composeDataRequirementValueFilterComponentElements(DataRequirement.DataRequirementValueFilterComponent element) throws IOException {
32877    composeElementElements(element);
32878    if (element.hasPathElement()) {
32879      composeString("path", element.getPathElement());
32880    }
32881    if (element.hasSearchParamElement()) {
32882      composeString("searchParam", element.getSearchParamElement());
32883    }
32884    if (element.hasComparatorElement())
32885      composeEnumeration("comparator", element.getComparatorElement(), new DataRequirement.ValueFilterComparatorEnumFactory());
32886    if (element.hasValue()) {
32887      composeType("value", element.getValue());
32888    }  }
32889
32890  protected void composeDataRequirementSortComponent(String name, DataRequirement.DataRequirementSortComponent element) throws IOException {
32891    if (element != null) {
32892    composeElementAttributes(element);
32893      xml.enter(FHIR_NS, name);
32894      composeDataRequirementSortComponentElements(element);
32895      composeElementClose(element);
32896      xml.exit(FHIR_NS, name);
32897    }
32898  }
32899
32900  protected void composeDataRequirementSortComponentElements(DataRequirement.DataRequirementSortComponent element) throws IOException {
32901    composeElementElements(element);
32902    if (element.hasPathElement()) {
32903      composeString("path", element.getPathElement());
32904    }
32905    if (element.hasDirectionElement())
32906      composeEnumeration("direction", element.getDirectionElement(), new DataRequirement.SortDirectionEnumFactory());
32907  }
32908
32909  protected void composeDistance(String name, Distance element) throws IOException {
32910    if (element != null) {
32911    composeElementAttributes(element);
32912      xml.enter(FHIR_NS, name);
32913      composeDistanceElements(element);
32914      composeElementClose(element);
32915      xml.exit(FHIR_NS, name);
32916    }
32917  }
32918
32919  protected void composeDistanceElements(Distance element) throws IOException {
32920    composeQuantityElements(element);
32921  }
32922
32923  protected void composeDosage(String name, Dosage element) throws IOException {
32924    if (element != null) {
32925    composeElementAttributes(element);
32926      xml.enter(FHIR_NS, name);
32927      composeDosageElements(element);
32928      composeElementClose(element);
32929      xml.exit(FHIR_NS, name);
32930    }
32931  }
32932
32933  protected void composeDosageElements(Dosage element) throws IOException {
32934    composeBackboneTypeElements(element);
32935    if (element.hasSequenceElement()) {
32936      composeInteger("sequence", element.getSequenceElement());
32937    }
32938    if (element.hasTextElement()) {
32939      composeString("text", element.getTextElement());
32940    }
32941    if (element.hasAdditionalInstruction()) { 
32942      for (CodeableConcept e : element.getAdditionalInstruction()) 
32943          composeCodeableConcept("additionalInstruction", e);
32944    }
32945    if (element.hasPatientInstructionElement()) {
32946      composeString("patientInstruction", element.getPatientInstructionElement());
32947    }
32948    if (element.hasTiming()) {
32949      composeTiming("timing", element.getTiming());
32950    }
32951    if (element.hasAsNeededElement()) {
32952      composeBoolean("asNeeded", element.getAsNeededElement());
32953    }
32954    if (element.hasAsNeededFor()) { 
32955      for (CodeableConcept e : element.getAsNeededFor()) 
32956          composeCodeableConcept("asNeededFor", e);
32957    }
32958    if (element.hasSite()) {
32959      composeCodeableConcept("site", element.getSite());
32960    }
32961    if (element.hasRoute()) {
32962      composeCodeableConcept("route", element.getRoute());
32963    }
32964    if (element.hasMethod()) {
32965      composeCodeableConcept("method", element.getMethod());
32966    }
32967    if (element.hasDoseAndRate()) { 
32968      for (Dosage.DosageDoseAndRateComponent e : element.getDoseAndRate()) 
32969          composeDosageDoseAndRateComponent("doseAndRate", e);
32970    }
32971    if (element.hasMaxDosePerPeriod()) { 
32972      for (Ratio e : element.getMaxDosePerPeriod()) 
32973          composeRatio("maxDosePerPeriod", e);
32974    }
32975    if (element.hasMaxDosePerAdministration()) {
32976      composeQuantity("maxDosePerAdministration", element.getMaxDosePerAdministration());
32977    }
32978    if (element.hasMaxDosePerLifetime()) {
32979      composeQuantity("maxDosePerLifetime", element.getMaxDosePerLifetime());
32980    }
32981  }
32982
32983  protected void composeDosageDoseAndRateComponent(String name, Dosage.DosageDoseAndRateComponent element) throws IOException {
32984    if (element != null) {
32985    composeElementAttributes(element);
32986      xml.enter(FHIR_NS, name);
32987      composeDosageDoseAndRateComponentElements(element);
32988      composeElementClose(element);
32989      xml.exit(FHIR_NS, name);
32990    }
32991  }
32992
32993  protected void composeDosageDoseAndRateComponentElements(Dosage.DosageDoseAndRateComponent element) throws IOException {
32994    composeElementElements(element);
32995    if (element.hasType()) {
32996      composeCodeableConcept("type", element.getType());
32997    }
32998    if (element.hasDose()) {
32999      composeType("dose", element.getDose());
33000    }    if (element.hasRate()) {
33001      composeType("rate", element.getRate());
33002    }  }
33003
33004  protected void composeDuration(String name, Duration element) throws IOException {
33005    if (element != null) {
33006    composeElementAttributes(element);
33007      xml.enter(FHIR_NS, name);
33008      composeDurationElements(element);
33009      composeElementClose(element);
33010      xml.exit(FHIR_NS, name);
33011    }
33012  }
33013
33014  protected void composeDurationElements(Duration element) throws IOException {
33015    composeQuantityElements(element);
33016  }
33017
33018  protected void composeElementDefinition(String name, ElementDefinition element) throws IOException {
33019    if (element != null) {
33020    composeElementAttributes(element);
33021      xml.enter(FHIR_NS, name);
33022      composeElementDefinitionElements(element);
33023      composeElementClose(element);
33024      xml.exit(FHIR_NS, name);
33025    }
33026  }
33027
33028  protected void composeElementDefinitionElements(ElementDefinition element) throws IOException {
33029    composeBackboneTypeElements(element);
33030    if (element.hasPathElement()) {
33031      composeString("path", element.getPathElement());
33032    }
33033      if (element.hasRepresentation()) 
33034        for (Enumeration<ElementDefinition.PropertyRepresentation> e : element.getRepresentation()) 
33035          composeEnumeration("representation", e, new ElementDefinition.PropertyRepresentationEnumFactory());
33036    if (element.hasSliceNameElement()) {
33037      composeString("sliceName", element.getSliceNameElement());
33038    }
33039    if (element.hasSliceIsConstrainingElement()) {
33040      composeBoolean("sliceIsConstraining", element.getSliceIsConstrainingElement());
33041    }
33042    if (element.hasLabelElement()) {
33043      composeString("label", element.getLabelElement());
33044    }
33045    if (element.hasCode()) { 
33046      for (Coding e : element.getCode()) 
33047          composeCoding("code", e);
33048    }
33049    if (element.hasSlicing()) {
33050      composeElementDefinitionSlicingComponent("slicing", element.getSlicing());
33051    }
33052    if (element.hasShortElement()) {
33053      composeString("short", element.getShortElement());
33054    }
33055    if (element.hasDefinitionElement()) {
33056      composeMarkdown("definition", element.getDefinitionElement());
33057    }
33058    if (element.hasCommentElement()) {
33059      composeMarkdown("comment", element.getCommentElement());
33060    }
33061    if (element.hasRequirementsElement()) {
33062      composeMarkdown("requirements", element.getRequirementsElement());
33063    }
33064    if (element.hasAlias()) { 
33065      for (StringType e : element.getAlias()) 
33066          composeString("alias", e);
33067    }
33068    if (element.hasMinElement()) {
33069      composeUnsignedInt("min", element.getMinElement());
33070    }
33071    if (element.hasMaxElement()) {
33072      composeString("max", element.getMaxElement());
33073    }
33074    if (element.hasBase()) {
33075      composeElementDefinitionBaseComponent("base", element.getBase());
33076    }
33077    if (element.hasContentReferenceElement()) {
33078      composeUri("contentReference", element.getContentReferenceElement());
33079    }
33080    if (element.hasType()) { 
33081      for (ElementDefinition.TypeRefComponent e : element.getType()) 
33082          composeElementDefinitionTypeRefComponent("type", e);
33083    }
33084    if (element.hasDefaultValue()) {
33085      composeType("defaultValue", element.getDefaultValue());
33086    }    if (element.hasMeaningWhenMissingElement()) {
33087      composeMarkdown("meaningWhenMissing", element.getMeaningWhenMissingElement());
33088    }
33089    if (element.hasOrderMeaningElement()) {
33090      composeString("orderMeaning", element.getOrderMeaningElement());
33091    }
33092    if (element.hasFixed()) {
33093      composeType("fixed", element.getFixed());
33094    }    if (element.hasPattern()) {
33095      composeType("pattern", element.getPattern());
33096    }    if (element.hasExample()) { 
33097      for (ElementDefinition.ElementDefinitionExampleComponent e : element.getExample()) 
33098          composeElementDefinitionExampleComponent("example", e);
33099    }
33100    if (element.hasMinValue()) {
33101      composeType("minValue", element.getMinValue());
33102    }    if (element.hasMaxValue()) {
33103      composeType("maxValue", element.getMaxValue());
33104    }    if (element.hasMaxLengthElement()) {
33105      composeInteger("maxLength", element.getMaxLengthElement());
33106    }
33107    if (element.hasCondition()) { 
33108      for (IdType e : element.getCondition()) 
33109          composeId("condition", e);
33110    }
33111    if (element.hasConstraint()) { 
33112      for (ElementDefinition.ElementDefinitionConstraintComponent e : element.getConstraint()) 
33113          composeElementDefinitionConstraintComponent("constraint", e);
33114    }
33115    if (element.hasMustHaveValueElement()) {
33116      composeBoolean("mustHaveValue", element.getMustHaveValueElement());
33117    }
33118    if (element.hasValueAlternatives()) { 
33119      for (CanonicalType e : element.getValueAlternatives()) 
33120          composeCanonical("valueAlternatives", e);
33121    }
33122    if (element.hasMustSupportElement()) {
33123      composeBoolean("mustSupport", element.getMustSupportElement());
33124    }
33125    if (element.hasIsModifierElement()) {
33126      composeBoolean("isModifier", element.getIsModifierElement());
33127    }
33128    if (element.hasIsModifierReasonElement()) {
33129      composeString("isModifierReason", element.getIsModifierReasonElement());
33130    }
33131    if (element.hasIsSummaryElement()) {
33132      composeBoolean("isSummary", element.getIsSummaryElement());
33133    }
33134    if (element.hasBinding()) {
33135      composeElementDefinitionBindingComponent("binding", element.getBinding());
33136    }
33137    if (element.hasMapping()) { 
33138      for (ElementDefinition.ElementDefinitionMappingComponent e : element.getMapping()) 
33139          composeElementDefinitionMappingComponent("mapping", e);
33140    }
33141  }
33142
33143  protected void composeElementDefinitionSlicingComponent(String name, ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
33144    if (element != null) {
33145    composeElementAttributes(element);
33146      xml.enter(FHIR_NS, name);
33147      composeElementDefinitionSlicingComponentElements(element);
33148      composeElementClose(element);
33149      xml.exit(FHIR_NS, name);
33150    }
33151  }
33152
33153  protected void composeElementDefinitionSlicingComponentElements(ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
33154    composeElementElements(element);
33155    if (element.hasDiscriminator()) { 
33156      for (ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent e : element.getDiscriminator()) 
33157          composeElementDefinitionSlicingDiscriminatorComponent("discriminator", e);
33158    }
33159    if (element.hasDescriptionElement()) {
33160      composeString("description", element.getDescriptionElement());
33161    }
33162    if (element.hasOrderedElement()) {
33163      composeBoolean("ordered", element.getOrderedElement());
33164    }
33165    if (element.hasRulesElement())
33166      composeEnumeration("rules", element.getRulesElement(), new ElementDefinition.SlicingRulesEnumFactory());
33167  }
33168
33169  protected void composeElementDefinitionSlicingDiscriminatorComponent(String name, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
33170    if (element != null) {
33171    composeElementAttributes(element);
33172      xml.enter(FHIR_NS, name);
33173      composeElementDefinitionSlicingDiscriminatorComponentElements(element);
33174      composeElementClose(element);
33175      xml.exit(FHIR_NS, name);
33176    }
33177  }
33178
33179  protected void composeElementDefinitionSlicingDiscriminatorComponentElements(ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
33180    composeElementElements(element);
33181    if (element.hasTypeElement())
33182      composeEnumeration("type", element.getTypeElement(), new ElementDefinition.DiscriminatorTypeEnumFactory());
33183    if (element.hasPathElement()) {
33184      composeString("path", element.getPathElement());
33185    }
33186  }
33187
33188  protected void composeElementDefinitionBaseComponent(String name, ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
33189    if (element != null) {
33190    composeElementAttributes(element);
33191      xml.enter(FHIR_NS, name);
33192      composeElementDefinitionBaseComponentElements(element);
33193      composeElementClose(element);
33194      xml.exit(FHIR_NS, name);
33195    }
33196  }
33197
33198  protected void composeElementDefinitionBaseComponentElements(ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
33199    composeElementElements(element);
33200    if (element.hasPathElement()) {
33201      composeString("path", element.getPathElement());
33202    }
33203    if (element.hasMinElement()) {
33204      composeUnsignedInt("min", element.getMinElement());
33205    }
33206    if (element.hasMaxElement()) {
33207      composeString("max", element.getMaxElement());
33208    }
33209  }
33210
33211  protected void composeElementDefinitionTypeRefComponent(String name, ElementDefinition.TypeRefComponent element) throws IOException {
33212    if (element != null) {
33213    composeElementAttributes(element);
33214      xml.enter(FHIR_NS, name);
33215      composeElementDefinitionTypeRefComponentElements(element);
33216      composeElementClose(element);
33217      xml.exit(FHIR_NS, name);
33218    }
33219  }
33220
33221  protected void composeElementDefinitionTypeRefComponentElements(ElementDefinition.TypeRefComponent element) throws IOException {
33222    composeElementElements(element);
33223    if (element.hasCodeElement()) {
33224      composeUri("code", element.getCodeElement());
33225    }
33226    if (element.hasProfile()) { 
33227      for (CanonicalType e : element.getProfile()) 
33228          composeCanonical("profile", e);
33229    }
33230    if (element.hasTargetProfile()) { 
33231      for (CanonicalType e : element.getTargetProfile()) 
33232          composeCanonical("targetProfile", e);
33233    }
33234      if (element.hasAggregation()) 
33235        for (Enumeration<ElementDefinition.AggregationMode> e : element.getAggregation()) 
33236          composeEnumeration("aggregation", e, new ElementDefinition.AggregationModeEnumFactory());
33237    if (element.hasVersioningElement())
33238      composeEnumeration("versioning", element.getVersioningElement(), new ElementDefinition.ReferenceVersionRulesEnumFactory());
33239  }
33240
33241  protected void composeElementDefinitionExampleComponent(String name, ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
33242    if (element != null) {
33243    composeElementAttributes(element);
33244      xml.enter(FHIR_NS, name);
33245      composeElementDefinitionExampleComponentElements(element);
33246      composeElementClose(element);
33247      xml.exit(FHIR_NS, name);
33248    }
33249  }
33250
33251  protected void composeElementDefinitionExampleComponentElements(ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
33252    composeElementElements(element);
33253    if (element.hasLabelElement()) {
33254      composeString("label", element.getLabelElement());
33255    }
33256    if (element.hasValue()) {
33257      composeType("value", element.getValue());
33258    }  }
33259
33260  protected void composeElementDefinitionConstraintComponent(String name, ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
33261    if (element != null) {
33262    composeElementAttributes(element);
33263      xml.enter(FHIR_NS, name);
33264      composeElementDefinitionConstraintComponentElements(element);
33265      composeElementClose(element);
33266      xml.exit(FHIR_NS, name);
33267    }
33268  }
33269
33270  protected void composeElementDefinitionConstraintComponentElements(ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
33271    composeElementElements(element);
33272    if (element.hasKeyElement()) {
33273      composeId("key", element.getKeyElement());
33274    }
33275    if (element.hasRequirementsElement()) {
33276      composeMarkdown("requirements", element.getRequirementsElement());
33277    }
33278    if (element.hasSeverityElement())
33279      composeEnumeration("severity", element.getSeverityElement(), new ElementDefinition.ConstraintSeverityEnumFactory());
33280    if (element.hasSuppressElement()) {
33281      composeBoolean("suppress", element.getSuppressElement());
33282    }
33283    if (element.hasHumanElement()) {
33284      composeString("human", element.getHumanElement());
33285    }
33286    if (element.hasExpressionElement()) {
33287      composeString("expression", element.getExpressionElement());
33288    }
33289    if (element.hasSourceElement()) {
33290      composeCanonical("source", element.getSourceElement());
33291    }
33292  }
33293
33294  protected void composeElementDefinitionBindingComponent(String name, ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
33295    if (element != null) {
33296    composeElementAttributes(element);
33297      xml.enter(FHIR_NS, name);
33298      composeElementDefinitionBindingComponentElements(element);
33299      composeElementClose(element);
33300      xml.exit(FHIR_NS, name);
33301    }
33302  }
33303
33304  protected void composeElementDefinitionBindingComponentElements(ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
33305    composeElementElements(element);
33306    if (element.hasStrengthElement())
33307      composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
33308    if (element.hasDescriptionElement()) {
33309      composeMarkdown("description", element.getDescriptionElement());
33310    }
33311    if (element.hasValueSetElement()) {
33312      composeCanonical("valueSet", element.getValueSetElement());
33313    }
33314    if (element.hasAdditional()) { 
33315      for (ElementDefinition.ElementDefinitionBindingAdditionalComponent e : element.getAdditional()) 
33316          composeElementDefinitionBindingAdditionalComponent("additional", e);
33317    }
33318  }
33319
33320  protected void composeElementDefinitionBindingAdditionalComponent(String name, ElementDefinition.ElementDefinitionBindingAdditionalComponent element) throws IOException {
33321    if (element != null) {
33322    composeElementAttributes(element);
33323      xml.enter(FHIR_NS, name);
33324      composeElementDefinitionBindingAdditionalComponentElements(element);
33325      composeElementClose(element);
33326      xml.exit(FHIR_NS, name);
33327    }
33328  }
33329
33330  protected void composeElementDefinitionBindingAdditionalComponentElements(ElementDefinition.ElementDefinitionBindingAdditionalComponent element) throws IOException {
33331    composeElementElements(element);
33332    if (element.hasPurposeElement())
33333      composeEnumeration("purpose", element.getPurposeElement(), new ElementDefinition.AdditionalBindingPurposeVSEnumFactory());
33334    if (element.hasValueSetElement()) {
33335      composeCanonical("valueSet", element.getValueSetElement());
33336    }
33337    if (element.hasDocumentationElement()) {
33338      composeMarkdown("documentation", element.getDocumentationElement());
33339    }
33340    if (element.hasShortDocoElement()) {
33341      composeString("shortDoco", element.getShortDocoElement());
33342    }
33343    if (element.hasUsage()) { 
33344      for (UsageContext e : element.getUsage()) 
33345          composeUsageContext("usage", e);
33346    }
33347    if (element.hasAnyElement()) {
33348      composeBoolean("any", element.getAnyElement());
33349    }
33350  }
33351
33352  protected void composeElementDefinitionMappingComponent(String name, ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
33353    if (element != null) {
33354    composeElementAttributes(element);
33355      xml.enter(FHIR_NS, name);
33356      composeElementDefinitionMappingComponentElements(element);
33357      composeElementClose(element);
33358      xml.exit(FHIR_NS, name);
33359    }
33360  }
33361
33362  protected void composeElementDefinitionMappingComponentElements(ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
33363    composeElementElements(element);
33364    if (element.hasIdentityElement()) {
33365      composeId("identity", element.getIdentityElement());
33366    }
33367    if (element.hasLanguageElement()) {
33368      composeCode("language", element.getLanguageElement());
33369    }
33370    if (element.hasMapElement()) {
33371      composeString("map", element.getMapElement());
33372    }
33373    if (element.hasCommentElement()) {
33374      composeMarkdown("comment", element.getCommentElement());
33375    }
33376  }
33377
33378  protected void composeExpression(String name, Expression element) throws IOException {
33379    if (element != null) {
33380    composeElementAttributes(element);
33381      xml.enter(FHIR_NS, name);
33382      composeExpressionElements(element);
33383      composeElementClose(element);
33384      xml.exit(FHIR_NS, name);
33385    }
33386  }
33387
33388  protected void composeExpressionElements(Expression element) throws IOException {
33389    composeDataTypeElements(element);
33390    if (element.hasDescriptionElement()) {
33391      composeString("description", element.getDescriptionElement());
33392    }
33393    if (element.hasNameElement()) {
33394      composeCode("name", element.getNameElement());
33395    }
33396    if (element.hasLanguageElement()) {
33397      composeCode("language", element.getLanguageElement());
33398    }
33399    if (element.hasExpressionElement()) {
33400      composeString("expression", element.getExpressionElement());
33401    }
33402    if (element.hasReferenceElement()) {
33403      composeUri("reference", element.getReferenceElement());
33404    }
33405  }
33406
33407  protected void composeExtendedContactDetail(String name, ExtendedContactDetail element) throws IOException {
33408    if (element != null) {
33409    composeElementAttributes(element);
33410      xml.enter(FHIR_NS, name);
33411      composeExtendedContactDetailElements(element);
33412      composeElementClose(element);
33413      xml.exit(FHIR_NS, name);
33414    }
33415  }
33416
33417  protected void composeExtendedContactDetailElements(ExtendedContactDetail element) throws IOException {
33418    composeDataTypeElements(element);
33419    if (element.hasPurpose()) {
33420      composeCodeableConcept("purpose", element.getPurpose());
33421    }
33422    if (element.hasName()) { 
33423      for (HumanName e : element.getName()) 
33424          composeHumanName("name", e);
33425    }
33426    if (element.hasTelecom()) { 
33427      for (ContactPoint e : element.getTelecom()) 
33428          composeContactPoint("telecom", e);
33429    }
33430    if (element.hasAddress()) {
33431      composeAddress("address", element.getAddress());
33432    }
33433    if (element.hasOrganization()) {
33434      composeReference("organization", element.getOrganization());
33435    }
33436    if (element.hasPeriod()) {
33437      composePeriod("period", element.getPeriod());
33438    }
33439  }
33440
33441  protected void composeExtension(String name, Extension element) throws IOException {
33442    if (element != null) {
33443    composeElementAttributes(element);
33444      if (element.hasUrlElement())
33445        xml.attribute("url", element.getUrlElement().getValue());
33446      xml.enter(FHIR_NS, name);
33447      composeExtensionElements(element);
33448      composeElementClose(element);
33449      xml.exit(FHIR_NS, name);
33450    }
33451  }
33452
33453  protected void composeExtensionElements(Extension element) throws IOException {
33454    composeDataTypeElements(element);
33455    if (element.hasValue()) {
33456      composeType("value", element.getValue());
33457    }  }
33458
33459  protected void composeHumanName(String name, HumanName element) throws IOException {
33460    if (element != null) {
33461    composeElementAttributes(element);
33462      xml.enter(FHIR_NS, name);
33463      composeHumanNameElements(element);
33464      composeElementClose(element);
33465      xml.exit(FHIR_NS, name);
33466    }
33467  }
33468
33469  protected void composeHumanNameElements(HumanName element) throws IOException {
33470    composeDataTypeElements(element);
33471    if (element.hasUseElement())
33472      composeEnumeration("use", element.getUseElement(), new HumanName.NameUseEnumFactory());
33473    if (element.hasTextElement()) {
33474      composeString("text", element.getTextElement());
33475    }
33476    if (element.hasFamilyElement()) {
33477      composeString("family", element.getFamilyElement());
33478    }
33479    if (element.hasGiven()) { 
33480      for (StringType e : element.getGiven()) 
33481          composeString("given", e);
33482    }
33483    if (element.hasPrefix()) { 
33484      for (StringType e : element.getPrefix()) 
33485          composeString("prefix", e);
33486    }
33487    if (element.hasSuffix()) { 
33488      for (StringType e : element.getSuffix()) 
33489          composeString("suffix", e);
33490    }
33491    if (element.hasPeriod()) {
33492      composePeriod("period", element.getPeriod());
33493    }
33494  }
33495
33496  protected void composeIdentifier(String name, Identifier element) throws IOException {
33497    if (element != null) {
33498    composeElementAttributes(element);
33499      xml.enter(FHIR_NS, name);
33500      composeIdentifierElements(element);
33501      composeElementClose(element);
33502      xml.exit(FHIR_NS, name);
33503    }
33504  }
33505
33506  protected void composeIdentifierElements(Identifier element) throws IOException {
33507    composeDataTypeElements(element);
33508    if (element.hasUseElement())
33509      composeEnumeration("use", element.getUseElement(), new Identifier.IdentifierUseEnumFactory());
33510    if (element.hasType()) {
33511      composeCodeableConcept("type", element.getType());
33512    }
33513    if (element.hasSystemElement()) {
33514      composeUri("system", element.getSystemElement());
33515    }
33516    if (element.hasValueElement()) {
33517      composeString("value", element.getValueElement());
33518    }
33519    if (element.hasPeriod()) {
33520      composePeriod("period", element.getPeriod());
33521    }
33522    if (element.hasAssigner()) {
33523      composeReference("assigner", element.getAssigner());
33524    }
33525  }
33526
33527  protected void composeMarketingStatus(String name, MarketingStatus element) throws IOException {
33528    if (element != null) {
33529    composeElementAttributes(element);
33530      xml.enter(FHIR_NS, name);
33531      composeMarketingStatusElements(element);
33532      composeElementClose(element);
33533      xml.exit(FHIR_NS, name);
33534    }
33535  }
33536
33537  protected void composeMarketingStatusElements(MarketingStatus element) throws IOException {
33538    composeBackboneTypeElements(element);
33539    if (element.hasCountry()) {
33540      composeCodeableConcept("country", element.getCountry());
33541    }
33542    if (element.hasJurisdiction()) {
33543      composeCodeableConcept("jurisdiction", element.getJurisdiction());
33544    }
33545    if (element.hasStatus()) {
33546      composeCodeableConcept("status", element.getStatus());
33547    }
33548    if (element.hasDateRange()) {
33549      composePeriod("dateRange", element.getDateRange());
33550    }
33551    if (element.hasRestoreDateElement()) {
33552      composeDateTime("restoreDate", element.getRestoreDateElement());
33553    }
33554  }
33555
33556  protected void composeMeta(String name, Meta element) throws IOException {
33557    if (element != null) {
33558    composeElementAttributes(element);
33559      xml.enter(FHIR_NS, name);
33560      composeMetaElements(element);
33561      composeElementClose(element);
33562      xml.exit(FHIR_NS, name);
33563    }
33564  }
33565
33566  protected void composeMetaElements(Meta element) throws IOException {
33567    composeDataTypeElements(element);
33568    if (element.hasVersionIdElement()) {
33569      composeId("versionId", element.getVersionIdElement());
33570    }
33571    if (element.hasLastUpdatedElement()) {
33572      composeInstant("lastUpdated", element.getLastUpdatedElement());
33573    }
33574    if (element.hasSourceElement()) {
33575      composeUri("source", element.getSourceElement());
33576    }
33577    if (element.hasProfile()) { 
33578      for (CanonicalType e : element.getProfile()) 
33579          composeCanonical("profile", e);
33580    }
33581    if (element.hasSecurity()) { 
33582      for (Coding e : element.getSecurity()) 
33583          composeCoding("security", e);
33584    }
33585    if (element.hasTag()) { 
33586      for (Coding e : element.getTag()) 
33587          composeCoding("tag", e);
33588    }
33589  }
33590
33591  protected void composeMonetaryComponent(String name, MonetaryComponent element) throws IOException {
33592    if (element != null) {
33593    composeElementAttributes(element);
33594      xml.enter(FHIR_NS, name);
33595      composeMonetaryComponentElements(element);
33596      composeElementClose(element);
33597      xml.exit(FHIR_NS, name);
33598    }
33599  }
33600
33601  protected void composeMonetaryComponentElements(MonetaryComponent element) throws IOException {
33602    composeDataTypeElements(element);
33603    if (element.hasTypeElement())
33604      composeEnumeration("type", element.getTypeElement(), new MonetaryComponent.PriceComponentTypeEnumFactory());
33605    if (element.hasCode()) {
33606      composeCodeableConcept("code", element.getCode());
33607    }
33608    if (element.hasFactorElement()) {
33609      composeDecimal("factor", element.getFactorElement());
33610    }
33611    if (element.hasAmount()) {
33612      composeMoney("amount", element.getAmount());
33613    }
33614  }
33615
33616  protected void composeMoney(String name, Money element) throws IOException {
33617    if (element != null) {
33618    composeElementAttributes(element);
33619      xml.enter(FHIR_NS, name);
33620      composeMoneyElements(element);
33621      composeElementClose(element);
33622      xml.exit(FHIR_NS, name);
33623    }
33624  }
33625
33626  protected void composeMoneyElements(Money element) throws IOException {
33627    composeDataTypeElements(element);
33628    if (element.hasValueElement()) {
33629      composeDecimal("value", element.getValueElement());
33630    }
33631    if (element.hasCurrencyElement()) {
33632      composeCode("currency", element.getCurrencyElement());
33633    }
33634  }
33635
33636  protected void composeNarrative(String name, Narrative element) throws IOException {
33637    if (element != null) {
33638    composeElementAttributes(element);
33639      xml.enter(FHIR_NS, name);
33640      composeNarrativeElements(element);
33641      composeElementClose(element);
33642      xml.exit(FHIR_NS, name);
33643    }
33644  }
33645
33646  protected void composeNarrativeElements(Narrative element) throws IOException {
33647    composeDataTypeElements(element);
33648    if (element.hasStatusElement())
33649      composeEnumeration("status", element.getStatusElement(), new Narrative.NarrativeStatusEnumFactory());
33650    if (element.hasDiv()) {
33651      composeXhtml("div", element.getDiv());
33652    }
33653  }
33654
33655  protected void composeParameterDefinition(String name, ParameterDefinition element) throws IOException {
33656    if (element != null) {
33657    composeElementAttributes(element);
33658      xml.enter(FHIR_NS, name);
33659      composeParameterDefinitionElements(element);
33660      composeElementClose(element);
33661      xml.exit(FHIR_NS, name);
33662    }
33663  }
33664
33665  protected void composeParameterDefinitionElements(ParameterDefinition element) throws IOException {
33666    composeDataTypeElements(element);
33667    if (element.hasNameElement()) {
33668      composeCode("name", element.getNameElement());
33669    }
33670    if (element.hasUseElement())
33671      composeEnumeration("use", element.getUseElement(), new Enumerations.OperationParameterUseEnumFactory());
33672    if (element.hasMinElement()) {
33673      composeInteger("min", element.getMinElement());
33674    }
33675    if (element.hasMaxElement()) {
33676      composeString("max", element.getMaxElement());
33677    }
33678    if (element.hasDocumentationElement()) {
33679      composeString("documentation", element.getDocumentationElement());
33680    }
33681    if (element.hasTypeElement())
33682      composeEnumeration("type", element.getTypeElement(), new Enumerations.FHIRTypesEnumFactory());
33683    if (element.hasProfileElement()) {
33684      composeCanonical("profile", element.getProfileElement());
33685    }
33686  }
33687
33688  protected void composePeriod(String name, Period element) throws IOException {
33689    if (element != null) {
33690    composeElementAttributes(element);
33691      xml.enter(FHIR_NS, name);
33692      composePeriodElements(element);
33693      composeElementClose(element);
33694      xml.exit(FHIR_NS, name);
33695    }
33696  }
33697
33698  protected void composePeriodElements(Period element) throws IOException {
33699    composeDataTypeElements(element);
33700    if (element.hasStartElement()) {
33701      composeDateTime("start", element.getStartElement());
33702    }
33703    if (element.hasEndElement()) {
33704      composeDateTime("end", element.getEndElement());
33705    }
33706  }
33707
33708  protected void composeProductShelfLife(String name, ProductShelfLife element) throws IOException {
33709    if (element != null) {
33710    composeElementAttributes(element);
33711      xml.enter(FHIR_NS, name);
33712      composeProductShelfLifeElements(element);
33713      composeElementClose(element);
33714      xml.exit(FHIR_NS, name);
33715    }
33716  }
33717
33718  protected void composeProductShelfLifeElements(ProductShelfLife element) throws IOException {
33719    composeBackboneTypeElements(element);
33720    if (element.hasType()) {
33721      composeCodeableConcept("type", element.getType());
33722    }
33723    if (element.hasPeriod()) {
33724      composeType("period", element.getPeriod());
33725    }    if (element.hasSpecialPrecautionsForStorage()) { 
33726      for (CodeableConcept e : element.getSpecialPrecautionsForStorage()) 
33727          composeCodeableConcept("specialPrecautionsForStorage", e);
33728    }
33729  }
33730
33731  protected void composeQuantity(String name, Quantity element) throws IOException {
33732    if (element != null) {
33733    composeElementAttributes(element);
33734      xml.enter(FHIR_NS, name);
33735      composeQuantityElements(element);
33736      composeElementClose(element);
33737      xml.exit(FHIR_NS, name);
33738    }
33739  }
33740
33741  protected void composeQuantityElements(Quantity element) throws IOException {
33742    composeDataTypeElements(element);
33743    if (element.hasValueElement()) {
33744      composeDecimal("value", element.getValueElement());
33745    }
33746    if (element.hasComparatorElement())
33747      composeEnumeration("comparator", element.getComparatorElement(), new Enumerations.QuantityComparatorEnumFactory());
33748    if (element.hasUnitElement()) {
33749      composeString("unit", element.getUnitElement());
33750    }
33751    if (element.hasSystemElement()) {
33752      composeUri("system", element.getSystemElement());
33753    }
33754    if (element.hasCodeElement()) {
33755      composeCode("code", element.getCodeElement());
33756    }
33757  }
33758
33759  protected void composeRange(String name, Range element) throws IOException {
33760    if (element != null) {
33761    composeElementAttributes(element);
33762      xml.enter(FHIR_NS, name);
33763      composeRangeElements(element);
33764      composeElementClose(element);
33765      xml.exit(FHIR_NS, name);
33766    }
33767  }
33768
33769  protected void composeRangeElements(Range element) throws IOException {
33770    composeDataTypeElements(element);
33771    if (element.hasLow()) {
33772      composeQuantity("low", element.getLow());
33773    }
33774    if (element.hasHigh()) {
33775      composeQuantity("high", element.getHigh());
33776    }
33777  }
33778
33779  protected void composeRatio(String name, Ratio element) throws IOException {
33780    if (element != null) {
33781    composeElementAttributes(element);
33782      xml.enter(FHIR_NS, name);
33783      composeRatioElements(element);
33784      composeElementClose(element);
33785      xml.exit(FHIR_NS, name);
33786    }
33787  }
33788
33789  protected void composeRatioElements(Ratio element) throws IOException {
33790    composeDataTypeElements(element);
33791    if (element.hasNumerator()) {
33792      composeQuantity("numerator", element.getNumerator());
33793    }
33794    if (element.hasDenominator()) {
33795      composeQuantity("denominator", element.getDenominator());
33796    }
33797  }
33798
33799  protected void composeRatioRange(String name, RatioRange element) throws IOException {
33800    if (element != null) {
33801    composeElementAttributes(element);
33802      xml.enter(FHIR_NS, name);
33803      composeRatioRangeElements(element);
33804      composeElementClose(element);
33805      xml.exit(FHIR_NS, name);
33806    }
33807  }
33808
33809  protected void composeRatioRangeElements(RatioRange element) throws IOException {
33810    composeDataTypeElements(element);
33811    if (element.hasLowNumerator()) {
33812      composeQuantity("lowNumerator", element.getLowNumerator());
33813    }
33814    if (element.hasHighNumerator()) {
33815      composeQuantity("highNumerator", element.getHighNumerator());
33816    }
33817    if (element.hasDenominator()) {
33818      composeQuantity("denominator", element.getDenominator());
33819    }
33820  }
33821
33822  protected void composeReference(String name, Reference element) throws IOException {
33823    if (element != null) {
33824    composeElementAttributes(element);
33825      xml.enter(FHIR_NS, name);
33826      composeReferenceElements(element);
33827      composeElementClose(element);
33828      xml.exit(FHIR_NS, name);
33829    }
33830  }
33831
33832  protected void composeReferenceElements(Reference element) throws IOException {
33833    composeDataTypeElements(element);
33834    if (element.hasReferenceElement()) {
33835      composeString("reference", element.getReferenceElement());
33836    }
33837    if (element.hasTypeElement()) {
33838      composeUri("type", element.getTypeElement());
33839    }
33840    if (element.hasIdentifier()) {
33841      composeIdentifier("identifier", element.getIdentifier());
33842    }
33843    if (element.hasDisplayElement()) {
33844      composeString("display", element.getDisplayElement());
33845    }
33846  }
33847
33848  protected void composeRelatedArtifact(String name, RelatedArtifact element) throws IOException {
33849    if (element != null) {
33850    composeElementAttributes(element);
33851      xml.enter(FHIR_NS, name);
33852      composeRelatedArtifactElements(element);
33853      composeElementClose(element);
33854      xml.exit(FHIR_NS, name);
33855    }
33856  }
33857
33858  protected void composeRelatedArtifactElements(RelatedArtifact element) throws IOException {
33859    composeDataTypeElements(element);
33860    if (element.hasTypeElement())
33861      composeEnumeration("type", element.getTypeElement(), new RelatedArtifact.RelatedArtifactTypeEnumFactory());
33862    if (element.hasClassifier()) { 
33863      for (CodeableConcept e : element.getClassifier()) 
33864          composeCodeableConcept("classifier", e);
33865    }
33866    if (element.hasLabelElement()) {
33867      composeString("label", element.getLabelElement());
33868    }
33869    if (element.hasDisplayElement()) {
33870      composeString("display", element.getDisplayElement());
33871    }
33872    if (element.hasCitationElement()) {
33873      composeMarkdown("citation", element.getCitationElement());
33874    }
33875    if (element.hasDocument()) {
33876      composeAttachment("document", element.getDocument());
33877    }
33878    if (element.hasResourceElement()) {
33879      composeCanonical("resource", element.getResourceElement());
33880    }
33881    if (element.hasResourceReference()) {
33882      composeReference("resourceReference", element.getResourceReference());
33883    }
33884    if (element.hasPublicationStatusElement())
33885      composeEnumeration("publicationStatus", element.getPublicationStatusElement(), new Enumerations.PublicationStatusEnumFactory());
33886    if (element.hasPublicationDateElement()) {
33887      composeDate("publicationDate", element.getPublicationDateElement());
33888    }
33889  }
33890
33891  protected void composeSampledData(String name, SampledData element) throws IOException {
33892    if (element != null) {
33893    composeElementAttributes(element);
33894      xml.enter(FHIR_NS, name);
33895      composeSampledDataElements(element);
33896      composeElementClose(element);
33897      xml.exit(FHIR_NS, name);
33898    }
33899  }
33900
33901  protected void composeSampledDataElements(SampledData element) throws IOException {
33902    composeDataTypeElements(element);
33903    if (element.hasOrigin()) {
33904      composeQuantity("origin", element.getOrigin());
33905    }
33906    if (element.hasIntervalElement()) {
33907      composeDecimal("interval", element.getIntervalElement());
33908    }
33909    if (element.hasIntervalUnitElement()) {
33910      composeCode("intervalUnit", element.getIntervalUnitElement());
33911    }
33912    if (element.hasFactorElement()) {
33913      composeDecimal("factor", element.getFactorElement());
33914    }
33915    if (element.hasLowerLimitElement()) {
33916      composeDecimal("lowerLimit", element.getLowerLimitElement());
33917    }
33918    if (element.hasUpperLimitElement()) {
33919      composeDecimal("upperLimit", element.getUpperLimitElement());
33920    }
33921    if (element.hasDimensionsElement()) {
33922      composePositiveInt("dimensions", element.getDimensionsElement());
33923    }
33924    if (element.hasCodeMapElement()) {
33925      composeCanonical("codeMap", element.getCodeMapElement());
33926    }
33927    if (element.hasOffsetsElement()) {
33928      composeString("offsets", element.getOffsetsElement());
33929    }
33930    if (element.hasDataElement()) {
33931      composeString("data", element.getDataElement());
33932    }
33933  }
33934
33935  protected void composeSignature(String name, Signature element) throws IOException {
33936    if (element != null) {
33937    composeElementAttributes(element);
33938      xml.enter(FHIR_NS, name);
33939      composeSignatureElements(element);
33940      composeElementClose(element);
33941      xml.exit(FHIR_NS, name);
33942    }
33943  }
33944
33945  protected void composeSignatureElements(Signature element) throws IOException {
33946    composeDataTypeElements(element);
33947    if (element.hasType()) { 
33948      for (Coding e : element.getType()) 
33949          composeCoding("type", e);
33950    }
33951    if (element.hasWhenElement()) {
33952      composeInstant("when", element.getWhenElement());
33953    }
33954    if (element.hasWho()) {
33955      composeReference("who", element.getWho());
33956    }
33957    if (element.hasOnBehalfOf()) {
33958      composeReference("onBehalfOf", element.getOnBehalfOf());
33959    }
33960    if (element.hasTargetFormatElement()) {
33961      composeCode("targetFormat", element.getTargetFormatElement());
33962    }
33963    if (element.hasSigFormatElement()) {
33964      composeCode("sigFormat", element.getSigFormatElement());
33965    }
33966    if (element.hasDataElement()) {
33967      composeBase64Binary("data", element.getDataElement());
33968    }
33969  }
33970
33971  protected void composeTiming(String name, Timing element) throws IOException {
33972    if (element != null) {
33973    composeElementAttributes(element);
33974      xml.enter(FHIR_NS, name);
33975      composeTimingElements(element);
33976      composeElementClose(element);
33977      xml.exit(FHIR_NS, name);
33978    }
33979  }
33980
33981  protected void composeTimingElements(Timing element) throws IOException {
33982    composeBackboneTypeElements(element);
33983    if (element.hasEvent()) { 
33984      for (DateTimeType e : element.getEvent()) 
33985          composeDateTime("event", e);
33986    }
33987    if (element.hasRepeat()) {
33988      composeTimingRepeatComponent("repeat", element.getRepeat());
33989    }
33990    if (element.hasCode()) {
33991      composeCodeableConcept("code", element.getCode());
33992    }
33993  }
33994
33995  protected void composeTimingRepeatComponent(String name, Timing.TimingRepeatComponent element) throws IOException {
33996    if (element != null) {
33997    composeElementAttributes(element);
33998      xml.enter(FHIR_NS, name);
33999      composeTimingRepeatComponentElements(element);
34000      composeElementClose(element);
34001      xml.exit(FHIR_NS, name);
34002    }
34003  }
34004
34005  protected void composeTimingRepeatComponentElements(Timing.TimingRepeatComponent element) throws IOException {
34006    composeElementElements(element);
34007    if (element.hasBounds()) {
34008      composeType("bounds", element.getBounds());
34009    }    if (element.hasCountElement()) {
34010      composePositiveInt("count", element.getCountElement());
34011    }
34012    if (element.hasCountMaxElement()) {
34013      composePositiveInt("countMax", element.getCountMaxElement());
34014    }
34015    if (element.hasDurationElement()) {
34016      composeDecimal("duration", element.getDurationElement());
34017    }
34018    if (element.hasDurationMaxElement()) {
34019      composeDecimal("durationMax", element.getDurationMaxElement());
34020    }
34021    if (element.hasDurationUnitElement())
34022      composeEnumeration("durationUnit", element.getDurationUnitElement(), new Timing.UnitsOfTimeEnumFactory());
34023    if (element.hasFrequencyElement()) {
34024      composePositiveInt("frequency", element.getFrequencyElement());
34025    }
34026    if (element.hasFrequencyMaxElement()) {
34027      composePositiveInt("frequencyMax", element.getFrequencyMaxElement());
34028    }
34029    if (element.hasPeriodElement()) {
34030      composeDecimal("period", element.getPeriodElement());
34031    }
34032    if (element.hasPeriodMaxElement()) {
34033      composeDecimal("periodMax", element.getPeriodMaxElement());
34034    }
34035    if (element.hasPeriodUnitElement())
34036      composeEnumeration("periodUnit", element.getPeriodUnitElement(), new Timing.UnitsOfTimeEnumFactory());
34037      if (element.hasDayOfWeek()) 
34038        for (Enumeration<Enumerations.DaysOfWeek> e : element.getDayOfWeek()) 
34039          composeEnumeration("dayOfWeek", e, new Enumerations.DaysOfWeekEnumFactory());
34040    if (element.hasTimeOfDay()) { 
34041      for (TimeType e : element.getTimeOfDay()) 
34042          composeTime("timeOfDay", e);
34043    }
34044      if (element.hasWhen()) 
34045        for (Enumeration<Timing.EventTiming> e : element.getWhen()) 
34046          composeEnumeration("when", e, new Timing.EventTimingEnumFactory());
34047    if (element.hasOffsetElement()) {
34048      composeUnsignedInt("offset", element.getOffsetElement());
34049    }
34050  }
34051
34052  protected void composeTriggerDefinition(String name, TriggerDefinition element) throws IOException {
34053    if (element != null) {
34054    composeElementAttributes(element);
34055      xml.enter(FHIR_NS, name);
34056      composeTriggerDefinitionElements(element);
34057      composeElementClose(element);
34058      xml.exit(FHIR_NS, name);
34059    }
34060  }
34061
34062  protected void composeTriggerDefinitionElements(TriggerDefinition element) throws IOException {
34063    composeDataTypeElements(element);
34064    if (element.hasTypeElement())
34065      composeEnumeration("type", element.getTypeElement(), new TriggerDefinition.TriggerTypeEnumFactory());
34066    if (element.hasNameElement()) {
34067      composeString("name", element.getNameElement());
34068    }
34069    if (element.hasCode()) {
34070      composeCodeableConcept("code", element.getCode());
34071    }
34072    if (element.hasSubscriptionTopicElement()) {
34073      composeCanonical("subscriptionTopic", element.getSubscriptionTopicElement());
34074    }
34075    if (element.hasTiming()) {
34076      composeType("timing", element.getTiming());
34077    }    if (element.hasData()) { 
34078      for (DataRequirement e : element.getData()) 
34079          composeDataRequirement("data", e);
34080    }
34081    if (element.hasCondition()) {
34082      composeExpression("condition", element.getCondition());
34083    }
34084  }
34085
34086  protected void composeUsageContext(String name, UsageContext element) throws IOException {
34087    if (element != null) {
34088    composeElementAttributes(element);
34089      xml.enter(FHIR_NS, name);
34090      composeUsageContextElements(element);
34091      composeElementClose(element);
34092      xml.exit(FHIR_NS, name);
34093    }
34094  }
34095
34096  protected void composeUsageContextElements(UsageContext element) throws IOException {
34097    composeDataTypeElements(element);
34098    if (element.hasCode()) {
34099      composeCoding("code", element.getCode());
34100    }
34101    if (element.hasValue()) {
34102      composeType("value", element.getValue());
34103    }  }
34104
34105  protected void composeVirtualServiceDetail(String name, VirtualServiceDetail element) throws IOException {
34106    if (element != null) {
34107    composeElementAttributes(element);
34108      xml.enter(FHIR_NS, name);
34109      composeVirtualServiceDetailElements(element);
34110      composeElementClose(element);
34111      xml.exit(FHIR_NS, name);
34112    }
34113  }
34114
34115  protected void composeVirtualServiceDetailElements(VirtualServiceDetail element) throws IOException {
34116    composeDataTypeElements(element);
34117    if (element.hasChannelType()) {
34118      composeCoding("channelType", element.getChannelType());
34119    }
34120    if (element.hasAddress()) {
34121      composeType("address", element.getAddress());
34122    }    if (element.hasAdditionalInfo()) { 
34123      for (UrlType e : element.getAdditionalInfo()) 
34124          composeUrl("additionalInfo", e);
34125    }
34126    if (element.hasMaxParticipantsElement()) {
34127      composePositiveInt("maxParticipants", element.getMaxParticipantsElement());
34128    }
34129    if (element.hasSessionKeyElement()) {
34130      composeString("sessionKey", element.getSessionKeyElement());
34131    }
34132  }
34133
34134  protected void composeCanonicalResourceElements(CanonicalResource element) throws IOException {
34135    composeDomainResourceElements(element);
34136  }
34137
34138  protected void composeDomainResourceElements(DomainResource element) throws IOException {
34139    composeResourceElements(element);
34140    if (element.hasText()) {
34141      composeNarrative("text", element.getText());
34142    }
34143    if (element.hasContained()) { 
34144      for (Resource e : element.getContained()) 
34145        {
34146          xml.enter(FHIR_NS, "contained");
34147          composeResource(e);
34148          xml.exit(FHIR_NS, "contained");
34149        }
34150    }
34151    if (element.hasExtension()) { 
34152      for (Extension e : element.getExtension()) 
34153          composeExtension("extension", e);
34154    }
34155    if (element.hasModifierExtension()) { 
34156      for (Extension e : element.getModifierExtension()) 
34157          composeExtension("modifierExtension", e);
34158    }
34159  }
34160
34161  protected void composeMetadataResourceElements(MetadataResource element) throws IOException {
34162    composeCanonicalResourceElements(element);
34163  }
34164
34165  protected void composeResourceElements(Resource element) throws IOException {
34166    composeBaseElements(element);
34167    if (element.hasIdElement()) {
34168      composeId("id", element.getIdElement());
34169    }
34170    if (element.hasMeta()) {
34171      composeMeta("meta", element.getMeta());
34172    }
34173    if (element.hasImplicitRulesElement()) {
34174      composeUri("implicitRules", element.getImplicitRulesElement());
34175    }
34176    if (element.hasLanguageElement()) {
34177      composeCode("language", element.getLanguageElement());
34178    }
34179  }
34180
34181  protected void composeAccount(String name, Account element) throws IOException {
34182    if (element != null) {
34183    composeResourceAttributes(element);
34184      xml.enter(FHIR_NS, name);
34185      composeAccountElements(element);
34186      composeElementClose(element);
34187      xml.exit(FHIR_NS, name);
34188    }
34189  }
34190
34191  protected void composeAccountElements(Account element) throws IOException {
34192    composeDomainResourceElements(element);
34193    if (element.hasIdentifier()) { 
34194      for (Identifier e : element.getIdentifier()) 
34195          composeIdentifier("identifier", e);
34196    }
34197    if (element.hasStatusElement())
34198      composeEnumeration("status", element.getStatusElement(), new Account.AccountStatusEnumFactory());
34199    if (element.hasBillingStatus()) {
34200      composeCodeableConcept("billingStatus", element.getBillingStatus());
34201    }
34202    if (element.hasType()) {
34203      composeCodeableConcept("type", element.getType());
34204    }
34205    if (element.hasNameElement()) {
34206      composeString("name", element.getNameElement());
34207    }
34208    if (element.hasSubject()) { 
34209      for (Reference e : element.getSubject()) 
34210          composeReference("subject", e);
34211    }
34212    if (element.hasServicePeriod()) {
34213      composePeriod("servicePeriod", element.getServicePeriod());
34214    }
34215    if (element.hasCoverage()) { 
34216      for (Account.CoverageComponent e : element.getCoverage()) 
34217          composeAccountCoverageComponent("coverage", e);
34218    }
34219    if (element.hasOwner()) {
34220      composeReference("owner", element.getOwner());
34221    }
34222    if (element.hasDescriptionElement()) {
34223      composeMarkdown("description", element.getDescriptionElement());
34224    }
34225    if (element.hasGuarantor()) { 
34226      for (Account.GuarantorComponent e : element.getGuarantor()) 
34227          composeAccountGuarantorComponent("guarantor", e);
34228    }
34229    if (element.hasDiagnosis()) { 
34230      for (Account.AccountDiagnosisComponent e : element.getDiagnosis()) 
34231          composeAccountDiagnosisComponent("diagnosis", e);
34232    }
34233    if (element.hasProcedure()) { 
34234      for (Account.AccountProcedureComponent e : element.getProcedure()) 
34235          composeAccountProcedureComponent("procedure", e);
34236    }
34237    if (element.hasRelatedAccount()) { 
34238      for (Account.AccountRelatedAccountComponent e : element.getRelatedAccount()) 
34239          composeAccountRelatedAccountComponent("relatedAccount", e);
34240    }
34241    if (element.hasCurrency()) {
34242      composeCodeableConcept("currency", element.getCurrency());
34243    }
34244    if (element.hasBalance()) { 
34245      for (Account.AccountBalanceComponent e : element.getBalance()) 
34246          composeAccountBalanceComponent("balance", e);
34247    }
34248    if (element.hasCalculatedAtElement()) {
34249      composeInstant("calculatedAt", element.getCalculatedAtElement());
34250    }
34251  }
34252
34253  protected void composeAccountCoverageComponent(String name, Account.CoverageComponent element) throws IOException {
34254    if (element != null) {
34255    composeElementAttributes(element);
34256      xml.enter(FHIR_NS, name);
34257      composeAccountCoverageComponentElements(element);
34258      composeElementClose(element);
34259      xml.exit(FHIR_NS, name);
34260    }
34261  }
34262
34263  protected void composeAccountCoverageComponentElements(Account.CoverageComponent element) throws IOException {
34264    composeBackboneElementElements(element);
34265    if (element.hasCoverage()) {
34266      composeReference("coverage", element.getCoverage());
34267    }
34268    if (element.hasPriorityElement()) {
34269      composePositiveInt("priority", element.getPriorityElement());
34270    }
34271  }
34272
34273  protected void composeAccountGuarantorComponent(String name, Account.GuarantorComponent element) throws IOException {
34274    if (element != null) {
34275    composeElementAttributes(element);
34276      xml.enter(FHIR_NS, name);
34277      composeAccountGuarantorComponentElements(element);
34278      composeElementClose(element);
34279      xml.exit(FHIR_NS, name);
34280    }
34281  }
34282
34283  protected void composeAccountGuarantorComponentElements(Account.GuarantorComponent element) throws IOException {
34284    composeBackboneElementElements(element);
34285    if (element.hasParty()) {
34286      composeReference("party", element.getParty());
34287    }
34288    if (element.hasOnHoldElement()) {
34289      composeBoolean("onHold", element.getOnHoldElement());
34290    }
34291    if (element.hasPeriod()) {
34292      composePeriod("period", element.getPeriod());
34293    }
34294  }
34295
34296  protected void composeAccountDiagnosisComponent(String name, Account.AccountDiagnosisComponent element) throws IOException {
34297    if (element != null) {
34298    composeElementAttributes(element);
34299      xml.enter(FHIR_NS, name);
34300      composeAccountDiagnosisComponentElements(element);
34301      composeElementClose(element);
34302      xml.exit(FHIR_NS, name);
34303    }
34304  }
34305
34306  protected void composeAccountDiagnosisComponentElements(Account.AccountDiagnosisComponent element) throws IOException {
34307    composeBackboneElementElements(element);
34308    if (element.hasSequenceElement()) {
34309      composePositiveInt("sequence", element.getSequenceElement());
34310    }
34311    if (element.hasCondition()) {
34312      composeCodeableReference("condition", element.getCondition());
34313    }
34314    if (element.hasDateOfDiagnosisElement()) {
34315      composeDateTime("dateOfDiagnosis", element.getDateOfDiagnosisElement());
34316    }
34317    if (element.hasType()) { 
34318      for (CodeableConcept e : element.getType()) 
34319          composeCodeableConcept("type", e);
34320    }
34321    if (element.hasOnAdmissionElement()) {
34322      composeBoolean("onAdmission", element.getOnAdmissionElement());
34323    }
34324    if (element.hasPackageCode()) { 
34325      for (CodeableConcept e : element.getPackageCode()) 
34326          composeCodeableConcept("packageCode", e);
34327    }
34328  }
34329
34330  protected void composeAccountProcedureComponent(String name, Account.AccountProcedureComponent element) throws IOException {
34331    if (element != null) {
34332    composeElementAttributes(element);
34333      xml.enter(FHIR_NS, name);
34334      composeAccountProcedureComponentElements(element);
34335      composeElementClose(element);
34336      xml.exit(FHIR_NS, name);
34337    }
34338  }
34339
34340  protected void composeAccountProcedureComponentElements(Account.AccountProcedureComponent element) throws IOException {
34341    composeBackboneElementElements(element);
34342    if (element.hasSequenceElement()) {
34343      composePositiveInt("sequence", element.getSequenceElement());
34344    }
34345    if (element.hasCode()) {
34346      composeCodeableReference("code", element.getCode());
34347    }
34348    if (element.hasDateOfServiceElement()) {
34349      composeDateTime("dateOfService", element.getDateOfServiceElement());
34350    }
34351    if (element.hasType()) { 
34352      for (CodeableConcept e : element.getType()) 
34353          composeCodeableConcept("type", e);
34354    }
34355    if (element.hasPackageCode()) { 
34356      for (CodeableConcept e : element.getPackageCode()) 
34357          composeCodeableConcept("packageCode", e);
34358    }
34359    if (element.hasDevice()) { 
34360      for (Reference e : element.getDevice()) 
34361          composeReference("device", e);
34362    }
34363  }
34364
34365  protected void composeAccountRelatedAccountComponent(String name, Account.AccountRelatedAccountComponent element) throws IOException {
34366    if (element != null) {
34367    composeElementAttributes(element);
34368      xml.enter(FHIR_NS, name);
34369      composeAccountRelatedAccountComponentElements(element);
34370      composeElementClose(element);
34371      xml.exit(FHIR_NS, name);
34372    }
34373  }
34374
34375  protected void composeAccountRelatedAccountComponentElements(Account.AccountRelatedAccountComponent element) throws IOException {
34376    composeBackboneElementElements(element);
34377    if (element.hasRelationship()) {
34378      composeCodeableConcept("relationship", element.getRelationship());
34379    }
34380    if (element.hasAccount()) {
34381      composeReference("account", element.getAccount());
34382    }
34383  }
34384
34385  protected void composeAccountBalanceComponent(String name, Account.AccountBalanceComponent element) throws IOException {
34386    if (element != null) {
34387    composeElementAttributes(element);
34388      xml.enter(FHIR_NS, name);
34389      composeAccountBalanceComponentElements(element);
34390      composeElementClose(element);
34391      xml.exit(FHIR_NS, name);
34392    }
34393  }
34394
34395  protected void composeAccountBalanceComponentElements(Account.AccountBalanceComponent element) throws IOException {
34396    composeBackboneElementElements(element);
34397    if (element.hasAggregate()) {
34398      composeCodeableConcept("aggregate", element.getAggregate());
34399    }
34400    if (element.hasTerm()) {
34401      composeCodeableConcept("term", element.getTerm());
34402    }
34403    if (element.hasEstimateElement()) {
34404      composeBoolean("estimate", element.getEstimateElement());
34405    }
34406    if (element.hasAmount()) {
34407      composeMoney("amount", element.getAmount());
34408    }
34409  }
34410
34411  protected void composeActivityDefinition(String name, ActivityDefinition element) throws IOException {
34412    if (element != null) {
34413    composeResourceAttributes(element);
34414      xml.enter(FHIR_NS, name);
34415      composeActivityDefinitionElements(element);
34416      composeElementClose(element);
34417      xml.exit(FHIR_NS, name);
34418    }
34419  }
34420
34421  protected void composeActivityDefinitionElements(ActivityDefinition element) throws IOException {
34422    composeMetadataResourceElements(element);
34423    if (element.hasUrlElement()) {
34424      composeUri("url", element.getUrlElement());
34425    }
34426    if (element.hasIdentifier()) { 
34427      for (Identifier e : element.getIdentifier()) 
34428          composeIdentifier("identifier", e);
34429    }
34430    if (element.hasVersionElement()) {
34431      composeString("version", element.getVersionElement());
34432    }
34433    if (element.hasVersionAlgorithm()) {
34434      composeType("versionAlgorithm", element.getVersionAlgorithm());
34435    }    if (element.hasNameElement()) {
34436      composeString("name", element.getNameElement());
34437    }
34438    if (element.hasTitleElement()) {
34439      composeString("title", element.getTitleElement());
34440    }
34441    if (element.hasSubtitleElement()) {
34442      composeString("subtitle", element.getSubtitleElement());
34443    }
34444    if (element.hasStatusElement())
34445      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34446    if (element.hasExperimentalElement()) {
34447      composeBoolean("experimental", element.getExperimentalElement());
34448    }
34449    if (element.hasSubject()) {
34450      composeType("subject", element.getSubject());
34451    }    if (element.hasDateElement()) {
34452      composeDateTime("date", element.getDateElement());
34453    }
34454    if (element.hasPublisherElement()) {
34455      composeString("publisher", element.getPublisherElement());
34456    }
34457    if (element.hasContact()) { 
34458      for (ContactDetail e : element.getContact()) 
34459          composeContactDetail("contact", e);
34460    }
34461    if (element.hasDescriptionElement()) {
34462      composeMarkdown("description", element.getDescriptionElement());
34463    }
34464    if (element.hasUseContext()) { 
34465      for (UsageContext e : element.getUseContext()) 
34466          composeUsageContext("useContext", e);
34467    }
34468    if (element.hasJurisdiction()) { 
34469      for (CodeableConcept e : element.getJurisdiction()) 
34470          composeCodeableConcept("jurisdiction", e);
34471    }
34472    if (element.hasPurposeElement()) {
34473      composeMarkdown("purpose", element.getPurposeElement());
34474    }
34475    if (element.hasUsageElement()) {
34476      composeMarkdown("usage", element.getUsageElement());
34477    }
34478    if (element.hasCopyrightElement()) {
34479      composeMarkdown("copyright", element.getCopyrightElement());
34480    }
34481    if (element.hasCopyrightLabelElement()) {
34482      composeString("copyrightLabel", element.getCopyrightLabelElement());
34483    }
34484    if (element.hasApprovalDateElement()) {
34485      composeDate("approvalDate", element.getApprovalDateElement());
34486    }
34487    if (element.hasLastReviewDateElement()) {
34488      composeDate("lastReviewDate", element.getLastReviewDateElement());
34489    }
34490    if (element.hasEffectivePeriod()) {
34491      composePeriod("effectivePeriod", element.getEffectivePeriod());
34492    }
34493    if (element.hasTopic()) { 
34494      for (CodeableConcept e : element.getTopic()) 
34495          composeCodeableConcept("topic", e);
34496    }
34497    if (element.hasAuthor()) { 
34498      for (ContactDetail e : element.getAuthor()) 
34499          composeContactDetail("author", e);
34500    }
34501    if (element.hasEditor()) { 
34502      for (ContactDetail e : element.getEditor()) 
34503          composeContactDetail("editor", e);
34504    }
34505    if (element.hasReviewer()) { 
34506      for (ContactDetail e : element.getReviewer()) 
34507          composeContactDetail("reviewer", e);
34508    }
34509    if (element.hasEndorser()) { 
34510      for (ContactDetail e : element.getEndorser()) 
34511          composeContactDetail("endorser", e);
34512    }
34513    if (element.hasRelatedArtifact()) { 
34514      for (RelatedArtifact e : element.getRelatedArtifact()) 
34515          composeRelatedArtifact("relatedArtifact", e);
34516    }
34517    if (element.hasLibrary()) { 
34518      for (CanonicalType e : element.getLibrary()) 
34519          composeCanonical("library", e);
34520    }
34521    if (element.hasKindElement())
34522      composeEnumeration("kind", element.getKindElement(), new ActivityDefinition.RequestResourceTypesEnumFactory());
34523    if (element.hasProfileElement()) {
34524      composeCanonical("profile", element.getProfileElement());
34525    }
34526    if (element.hasCode()) {
34527      composeCodeableConcept("code", element.getCode());
34528    }
34529    if (element.hasIntentElement())
34530      composeEnumeration("intent", element.getIntentElement(), new Enumerations.RequestIntentEnumFactory());
34531    if (element.hasPriorityElement())
34532      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
34533    if (element.hasDoNotPerformElement()) {
34534      composeBoolean("doNotPerform", element.getDoNotPerformElement());
34535    }
34536    if (element.hasTiming()) {
34537      composeType("timing", element.getTiming());
34538    }    if (element.hasAsNeeded()) {
34539      composeType("asNeeded", element.getAsNeeded());
34540    }    if (element.hasLocation()) {
34541      composeCodeableReference("location", element.getLocation());
34542    }
34543    if (element.hasParticipant()) { 
34544      for (ActivityDefinition.ActivityDefinitionParticipantComponent e : element.getParticipant()) 
34545          composeActivityDefinitionParticipantComponent("participant", e);
34546    }
34547    if (element.hasProduct()) {
34548      composeType("product", element.getProduct());
34549    }    if (element.hasQuantity()) {
34550      composeQuantity("quantity", element.getQuantity());
34551    }
34552    if (element.hasDosage()) { 
34553      for (Dosage e : element.getDosage()) 
34554          composeDosage("dosage", e);
34555    }
34556    if (element.hasBodySite()) { 
34557      for (CodeableConcept e : element.getBodySite()) 
34558          composeCodeableConcept("bodySite", e);
34559    }
34560    if (element.hasSpecimenRequirement()) { 
34561      for (CanonicalType e : element.getSpecimenRequirement()) 
34562          composeCanonical("specimenRequirement", e);
34563    }
34564    if (element.hasObservationRequirement()) { 
34565      for (CanonicalType e : element.getObservationRequirement()) 
34566          composeCanonical("observationRequirement", e);
34567    }
34568    if (element.hasObservationResultRequirement()) { 
34569      for (CanonicalType e : element.getObservationResultRequirement()) 
34570          composeCanonical("observationResultRequirement", e);
34571    }
34572    if (element.hasTransformElement()) {
34573      composeCanonical("transform", element.getTransformElement());
34574    }
34575    if (element.hasDynamicValue()) { 
34576      for (ActivityDefinition.ActivityDefinitionDynamicValueComponent e : element.getDynamicValue()) 
34577          composeActivityDefinitionDynamicValueComponent("dynamicValue", e);
34578    }
34579  }
34580
34581  protected void composeActivityDefinitionParticipantComponent(String name, ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
34582    if (element != null) {
34583    composeElementAttributes(element);
34584      xml.enter(FHIR_NS, name);
34585      composeActivityDefinitionParticipantComponentElements(element);
34586      composeElementClose(element);
34587      xml.exit(FHIR_NS, name);
34588    }
34589  }
34590
34591  protected void composeActivityDefinitionParticipantComponentElements(ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
34592    composeBackboneElementElements(element);
34593    if (element.hasTypeElement())
34594      composeEnumeration("type", element.getTypeElement(), new Enumerations.ActionParticipantTypeEnumFactory());
34595    if (element.hasTypeCanonicalElement()) {
34596      composeCanonical("typeCanonical", element.getTypeCanonicalElement());
34597    }
34598    if (element.hasTypeReference()) {
34599      composeReference("typeReference", element.getTypeReference());
34600    }
34601    if (element.hasRole()) {
34602      composeCodeableConcept("role", element.getRole());
34603    }
34604    if (element.hasFunction()) {
34605      composeCodeableConcept("function", element.getFunction());
34606    }
34607  }
34608
34609  protected void composeActivityDefinitionDynamicValueComponent(String name, ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
34610    if (element != null) {
34611    composeElementAttributes(element);
34612      xml.enter(FHIR_NS, name);
34613      composeActivityDefinitionDynamicValueComponentElements(element);
34614      composeElementClose(element);
34615      xml.exit(FHIR_NS, name);
34616    }
34617  }
34618
34619  protected void composeActivityDefinitionDynamicValueComponentElements(ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
34620    composeBackboneElementElements(element);
34621    if (element.hasPathElement()) {
34622      composeString("path", element.getPathElement());
34623    }
34624    if (element.hasExpression()) {
34625      composeExpression("expression", element.getExpression());
34626    }
34627  }
34628
34629  protected void composeActorDefinition(String name, ActorDefinition element) throws IOException {
34630    if (element != null) {
34631    composeResourceAttributes(element);
34632      xml.enter(FHIR_NS, name);
34633      composeActorDefinitionElements(element);
34634      composeElementClose(element);
34635      xml.exit(FHIR_NS, name);
34636    }
34637  }
34638
34639  protected void composeActorDefinitionElements(ActorDefinition element) throws IOException {
34640    composeCanonicalResourceElements(element);
34641    if (element.hasUrlElement()) {
34642      composeUri("url", element.getUrlElement());
34643    }
34644    if (element.hasIdentifier()) { 
34645      for (Identifier e : element.getIdentifier()) 
34646          composeIdentifier("identifier", e);
34647    }
34648    if (element.hasVersionElement()) {
34649      composeString("version", element.getVersionElement());
34650    }
34651    if (element.hasVersionAlgorithm()) {
34652      composeType("versionAlgorithm", element.getVersionAlgorithm());
34653    }    if (element.hasNameElement()) {
34654      composeString("name", element.getNameElement());
34655    }
34656    if (element.hasTitleElement()) {
34657      composeString("title", element.getTitleElement());
34658    }
34659    if (element.hasStatusElement())
34660      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34661    if (element.hasExperimentalElement()) {
34662      composeBoolean("experimental", element.getExperimentalElement());
34663    }
34664    if (element.hasDateElement()) {
34665      composeDateTime("date", element.getDateElement());
34666    }
34667    if (element.hasPublisherElement()) {
34668      composeString("publisher", element.getPublisherElement());
34669    }
34670    if (element.hasContact()) { 
34671      for (ContactDetail e : element.getContact()) 
34672          composeContactDetail("contact", e);
34673    }
34674    if (element.hasDescriptionElement()) {
34675      composeMarkdown("description", element.getDescriptionElement());
34676    }
34677    if (element.hasUseContext()) { 
34678      for (UsageContext e : element.getUseContext()) 
34679          composeUsageContext("useContext", e);
34680    }
34681    if (element.hasJurisdiction()) { 
34682      for (CodeableConcept e : element.getJurisdiction()) 
34683          composeCodeableConcept("jurisdiction", e);
34684    }
34685    if (element.hasPurposeElement()) {
34686      composeMarkdown("purpose", element.getPurposeElement());
34687    }
34688    if (element.hasCopyrightElement()) {
34689      composeMarkdown("copyright", element.getCopyrightElement());
34690    }
34691    if (element.hasCopyrightLabelElement()) {
34692      composeString("copyrightLabel", element.getCopyrightLabelElement());
34693    }
34694    if (element.hasTypeElement())
34695      composeEnumeration("type", element.getTypeElement(), new Enumerations.ExampleScenarioActorTypeEnumFactory());
34696    if (element.hasDocumentationElement()) {
34697      composeMarkdown("documentation", element.getDocumentationElement());
34698    }
34699    if (element.hasReference()) { 
34700      for (UrlType e : element.getReference()) 
34701          composeUrl("reference", e);
34702    }
34703    if (element.hasCapabilitiesElement()) {
34704      composeCanonical("capabilities", element.getCapabilitiesElement());
34705    }
34706    if (element.hasDerivedFrom()) { 
34707      for (CanonicalType e : element.getDerivedFrom()) 
34708          composeCanonical("derivedFrom", e);
34709    }
34710  }
34711
34712  protected void composeAdministrableProductDefinition(String name, AdministrableProductDefinition element) throws IOException {
34713    if (element != null) {
34714    composeResourceAttributes(element);
34715      xml.enter(FHIR_NS, name);
34716      composeAdministrableProductDefinitionElements(element);
34717      composeElementClose(element);
34718      xml.exit(FHIR_NS, name);
34719    }
34720  }
34721
34722  protected void composeAdministrableProductDefinitionElements(AdministrableProductDefinition element) throws IOException {
34723    composeDomainResourceElements(element);
34724    if (element.hasIdentifier()) { 
34725      for (Identifier e : element.getIdentifier()) 
34726          composeIdentifier("identifier", e);
34727    }
34728    if (element.hasStatusElement())
34729      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34730    if (element.hasFormOf()) { 
34731      for (Reference e : element.getFormOf()) 
34732          composeReference("formOf", e);
34733    }
34734    if (element.hasAdministrableDoseForm()) {
34735      composeCodeableConcept("administrableDoseForm", element.getAdministrableDoseForm());
34736    }
34737    if (element.hasUnitOfPresentation()) {
34738      composeCodeableConcept("unitOfPresentation", element.getUnitOfPresentation());
34739    }
34740    if (element.hasProducedFrom()) { 
34741      for (Reference e : element.getProducedFrom()) 
34742          composeReference("producedFrom", e);
34743    }
34744    if (element.hasIngredient()) { 
34745      for (CodeableConcept e : element.getIngredient()) 
34746          composeCodeableConcept("ingredient", e);
34747    }
34748    if (element.hasDevice()) {
34749      composeReference("device", element.getDevice());
34750    }
34751    if (element.hasDescriptionElement()) {
34752      composeMarkdown("description", element.getDescriptionElement());
34753    }
34754    if (element.hasProperty()) { 
34755      for (AdministrableProductDefinition.AdministrableProductDefinitionPropertyComponent e : element.getProperty()) 
34756          composeAdministrableProductDefinitionPropertyComponent("property", e);
34757    }
34758    if (element.hasRouteOfAdministration()) { 
34759      for (AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationComponent e : element.getRouteOfAdministration()) 
34760          composeAdministrableProductDefinitionRouteOfAdministrationComponent("routeOfAdministration", e);
34761    }
34762  }
34763
34764  protected void composeAdministrableProductDefinitionPropertyComponent(String name, AdministrableProductDefinition.AdministrableProductDefinitionPropertyComponent element) throws IOException {
34765    if (element != null) {
34766    composeElementAttributes(element);
34767      xml.enter(FHIR_NS, name);
34768      composeAdministrableProductDefinitionPropertyComponentElements(element);
34769      composeElementClose(element);
34770      xml.exit(FHIR_NS, name);
34771    }
34772  }
34773
34774  protected void composeAdministrableProductDefinitionPropertyComponentElements(AdministrableProductDefinition.AdministrableProductDefinitionPropertyComponent element) throws IOException {
34775    composeBackboneElementElements(element);
34776    if (element.hasType()) {
34777      composeCodeableConcept("type", element.getType());
34778    }
34779    if (element.hasValue()) {
34780      composeType("value", element.getValue());
34781    }    if (element.hasStatus()) {
34782      composeCodeableConcept("status", element.getStatus());
34783    }
34784  }
34785
34786  protected void composeAdministrableProductDefinitionRouteOfAdministrationComponent(String name, AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationComponent element) throws IOException {
34787    if (element != null) {
34788    composeElementAttributes(element);
34789      xml.enter(FHIR_NS, name);
34790      composeAdministrableProductDefinitionRouteOfAdministrationComponentElements(element);
34791      composeElementClose(element);
34792      xml.exit(FHIR_NS, name);
34793    }
34794  }
34795
34796  protected void composeAdministrableProductDefinitionRouteOfAdministrationComponentElements(AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationComponent element) throws IOException {
34797    composeBackboneElementElements(element);
34798    if (element.hasCode()) {
34799      composeCodeableConcept("code", element.getCode());
34800    }
34801    if (element.hasFirstDose()) {
34802      composeQuantity("firstDose", element.getFirstDose());
34803    }
34804    if (element.hasMaxSingleDose()) {
34805      composeQuantity("maxSingleDose", element.getMaxSingleDose());
34806    }
34807    if (element.hasMaxDosePerDay()) {
34808      composeQuantity("maxDosePerDay", element.getMaxDosePerDay());
34809    }
34810    if (element.hasMaxDosePerTreatmentPeriod()) {
34811      composeRatio("maxDosePerTreatmentPeriod", element.getMaxDosePerTreatmentPeriod());
34812    }
34813    if (element.hasMaxTreatmentPeriod()) {
34814      composeDuration("maxTreatmentPeriod", element.getMaxTreatmentPeriod());
34815    }
34816    if (element.hasTargetSpecies()) { 
34817      for (AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent e : element.getTargetSpecies()) 
34818          composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent("targetSpecies", e);
34819    }
34820  }
34821
34822  protected void composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent(String name, AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent element) throws IOException {
34823    if (element != null) {
34824    composeElementAttributes(element);
34825      xml.enter(FHIR_NS, name);
34826      composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponentElements(element);
34827      composeElementClose(element);
34828      xml.exit(FHIR_NS, name);
34829    }
34830  }
34831
34832  protected void composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponentElements(AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent element) throws IOException {
34833    composeBackboneElementElements(element);
34834    if (element.hasCode()) {
34835      composeCodeableConcept("code", element.getCode());
34836    }
34837    if (element.hasWithdrawalPeriod()) { 
34838      for (AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent e : element.getWithdrawalPeriod()) 
34839          composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent("withdrawalPeriod", e);
34840    }
34841  }
34842
34843  protected void composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(String name, AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent element) throws IOException {
34844    if (element != null) {
34845    composeElementAttributes(element);
34846      xml.enter(FHIR_NS, name);
34847      composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentElements(element);
34848      composeElementClose(element);
34849      xml.exit(FHIR_NS, name);
34850    }
34851  }
34852
34853  protected void composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentElements(AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent element) throws IOException {
34854    composeBackboneElementElements(element);
34855    if (element.hasTissue()) {
34856      composeCodeableConcept("tissue", element.getTissue());
34857    }
34858    if (element.hasValue()) {
34859      composeQuantity("value", element.getValue());
34860    }
34861    if (element.hasSupportingInformationElement()) {
34862      composeString("supportingInformation", element.getSupportingInformationElement());
34863    }
34864  }
34865
34866  protected void composeAdverseEvent(String name, AdverseEvent element) throws IOException {
34867    if (element != null) {
34868    composeResourceAttributes(element);
34869      xml.enter(FHIR_NS, name);
34870      composeAdverseEventElements(element);
34871      composeElementClose(element);
34872      xml.exit(FHIR_NS, name);
34873    }
34874  }
34875
34876  protected void composeAdverseEventElements(AdverseEvent element) throws IOException {
34877    composeDomainResourceElements(element);
34878    if (element.hasIdentifier()) { 
34879      for (Identifier e : element.getIdentifier()) 
34880          composeIdentifier("identifier", e);
34881    }
34882    if (element.hasStatusElement())
34883      composeEnumeration("status", element.getStatusElement(), new AdverseEvent.AdverseEventStatusEnumFactory());
34884    if (element.hasActualityElement())
34885      composeEnumeration("actuality", element.getActualityElement(), new AdverseEvent.AdverseEventActualityEnumFactory());
34886    if (element.hasCategory()) { 
34887      for (CodeableConcept e : element.getCategory()) 
34888          composeCodeableConcept("category", e);
34889    }
34890    if (element.hasCode()) {
34891      composeCodeableConcept("code", element.getCode());
34892    }
34893    if (element.hasSubject()) {
34894      composeReference("subject", element.getSubject());
34895    }
34896    if (element.hasEncounter()) {
34897      composeReference("encounter", element.getEncounter());
34898    }
34899    if (element.hasOccurrence()) {
34900      composeType("occurrence", element.getOccurrence());
34901    }    if (element.hasDetectedElement()) {
34902      composeDateTime("detected", element.getDetectedElement());
34903    }
34904    if (element.hasRecordedDateElement()) {
34905      composeDateTime("recordedDate", element.getRecordedDateElement());
34906    }
34907    if (element.hasResultingEffect()) { 
34908      for (Reference e : element.getResultingEffect()) 
34909          composeReference("resultingEffect", e);
34910    }
34911    if (element.hasLocation()) {
34912      composeReference("location", element.getLocation());
34913    }
34914    if (element.hasSeriousness()) {
34915      composeCodeableConcept("seriousness", element.getSeriousness());
34916    }
34917    if (element.hasOutcome()) { 
34918      for (CodeableConcept e : element.getOutcome()) 
34919          composeCodeableConcept("outcome", e);
34920    }
34921    if (element.hasRecorder()) {
34922      composeReference("recorder", element.getRecorder());
34923    }
34924    if (element.hasParticipant()) { 
34925      for (AdverseEvent.AdverseEventParticipantComponent e : element.getParticipant()) 
34926          composeAdverseEventParticipantComponent("participant", e);
34927    }
34928    if (element.hasStudy()) { 
34929      for (Reference e : element.getStudy()) 
34930          composeReference("study", e);
34931    }
34932    if (element.hasExpectedInResearchStudyElement()) {
34933      composeBoolean("expectedInResearchStudy", element.getExpectedInResearchStudyElement());
34934    }
34935    if (element.hasSuspectEntity()) { 
34936      for (AdverseEvent.AdverseEventSuspectEntityComponent e : element.getSuspectEntity()) 
34937          composeAdverseEventSuspectEntityComponent("suspectEntity", e);
34938    }
34939    if (element.hasContributingFactor()) { 
34940      for (AdverseEvent.AdverseEventContributingFactorComponent e : element.getContributingFactor()) 
34941          composeAdverseEventContributingFactorComponent("contributingFactor", e);
34942    }
34943    if (element.hasPreventiveAction()) { 
34944      for (AdverseEvent.AdverseEventPreventiveActionComponent e : element.getPreventiveAction()) 
34945          composeAdverseEventPreventiveActionComponent("preventiveAction", e);
34946    }
34947    if (element.hasMitigatingAction()) { 
34948      for (AdverseEvent.AdverseEventMitigatingActionComponent e : element.getMitigatingAction()) 
34949          composeAdverseEventMitigatingActionComponent("mitigatingAction", e);
34950    }
34951    if (element.hasSupportingInfo()) { 
34952      for (AdverseEvent.AdverseEventSupportingInfoComponent e : element.getSupportingInfo()) 
34953          composeAdverseEventSupportingInfoComponent("supportingInfo", e);
34954    }
34955    if (element.hasNote()) { 
34956      for (Annotation e : element.getNote()) 
34957          composeAnnotation("note", e);
34958    }
34959  }
34960
34961  protected void composeAdverseEventParticipantComponent(String name, AdverseEvent.AdverseEventParticipantComponent element) throws IOException {
34962    if (element != null) {
34963    composeElementAttributes(element);
34964      xml.enter(FHIR_NS, name);
34965      composeAdverseEventParticipantComponentElements(element);
34966      composeElementClose(element);
34967      xml.exit(FHIR_NS, name);
34968    }
34969  }
34970
34971  protected void composeAdverseEventParticipantComponentElements(AdverseEvent.AdverseEventParticipantComponent element) throws IOException {
34972    composeBackboneElementElements(element);
34973    if (element.hasFunction()) {
34974      composeCodeableConcept("function", element.getFunction());
34975    }
34976    if (element.hasActor()) {
34977      composeReference("actor", element.getActor());
34978    }
34979  }
34980
34981  protected void composeAdverseEventSuspectEntityComponent(String name, AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
34982    if (element != null) {
34983    composeElementAttributes(element);
34984      xml.enter(FHIR_NS, name);
34985      composeAdverseEventSuspectEntityComponentElements(element);
34986      composeElementClose(element);
34987      xml.exit(FHIR_NS, name);
34988    }
34989  }
34990
34991  protected void composeAdverseEventSuspectEntityComponentElements(AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
34992    composeBackboneElementElements(element);
34993    if (element.hasInstance()) {
34994      composeType("instance", element.getInstance());
34995    }    if (element.hasCausality()) {
34996      composeAdverseEventSuspectEntityCausalityComponent("causality", element.getCausality());
34997    }
34998  }
34999
35000  protected void composeAdverseEventSuspectEntityCausalityComponent(String name, AdverseEvent.AdverseEventSuspectEntityCausalityComponent element) throws IOException {
35001    if (element != null) {
35002    composeElementAttributes(element);
35003      xml.enter(FHIR_NS, name);
35004      composeAdverseEventSuspectEntityCausalityComponentElements(element);
35005      composeElementClose(element);
35006      xml.exit(FHIR_NS, name);
35007    }
35008  }
35009
35010  protected void composeAdverseEventSuspectEntityCausalityComponentElements(AdverseEvent.AdverseEventSuspectEntityCausalityComponent element) throws IOException {
35011    composeBackboneElementElements(element);
35012    if (element.hasAssessmentMethod()) {
35013      composeCodeableConcept("assessmentMethod", element.getAssessmentMethod());
35014    }
35015    if (element.hasEntityRelatedness()) {
35016      composeCodeableConcept("entityRelatedness", element.getEntityRelatedness());
35017    }
35018    if (element.hasAuthor()) {
35019      composeReference("author", element.getAuthor());
35020    }
35021  }
35022
35023  protected void composeAdverseEventContributingFactorComponent(String name, AdverseEvent.AdverseEventContributingFactorComponent element) throws IOException {
35024    if (element != null) {
35025    composeElementAttributes(element);
35026      xml.enter(FHIR_NS, name);
35027      composeAdverseEventContributingFactorComponentElements(element);
35028      composeElementClose(element);
35029      xml.exit(FHIR_NS, name);
35030    }
35031  }
35032
35033  protected void composeAdverseEventContributingFactorComponentElements(AdverseEvent.AdverseEventContributingFactorComponent element) throws IOException {
35034    composeBackboneElementElements(element);
35035    if (element.hasItem()) {
35036      composeType("item", element.getItem());
35037    }  }
35038
35039  protected void composeAdverseEventPreventiveActionComponent(String name, AdverseEvent.AdverseEventPreventiveActionComponent element) throws IOException {
35040    if (element != null) {
35041    composeElementAttributes(element);
35042      xml.enter(FHIR_NS, name);
35043      composeAdverseEventPreventiveActionComponentElements(element);
35044      composeElementClose(element);
35045      xml.exit(FHIR_NS, name);
35046    }
35047  }
35048
35049  protected void composeAdverseEventPreventiveActionComponentElements(AdverseEvent.AdverseEventPreventiveActionComponent element) throws IOException {
35050    composeBackboneElementElements(element);
35051    if (element.hasItem()) {
35052      composeType("item", element.getItem());
35053    }  }
35054
35055  protected void composeAdverseEventMitigatingActionComponent(String name, AdverseEvent.AdverseEventMitigatingActionComponent element) throws IOException {
35056    if (element != null) {
35057    composeElementAttributes(element);
35058      xml.enter(FHIR_NS, name);
35059      composeAdverseEventMitigatingActionComponentElements(element);
35060      composeElementClose(element);
35061      xml.exit(FHIR_NS, name);
35062    }
35063  }
35064
35065  protected void composeAdverseEventMitigatingActionComponentElements(AdverseEvent.AdverseEventMitigatingActionComponent element) throws IOException {
35066    composeBackboneElementElements(element);
35067    if (element.hasItem()) {
35068      composeType("item", element.getItem());
35069    }  }
35070
35071  protected void composeAdverseEventSupportingInfoComponent(String name, AdverseEvent.AdverseEventSupportingInfoComponent element) throws IOException {
35072    if (element != null) {
35073    composeElementAttributes(element);
35074      xml.enter(FHIR_NS, name);
35075      composeAdverseEventSupportingInfoComponentElements(element);
35076      composeElementClose(element);
35077      xml.exit(FHIR_NS, name);
35078    }
35079  }
35080
35081  protected void composeAdverseEventSupportingInfoComponentElements(AdverseEvent.AdverseEventSupportingInfoComponent element) throws IOException {
35082    composeBackboneElementElements(element);
35083    if (element.hasItem()) {
35084      composeType("item", element.getItem());
35085    }  }
35086
35087  protected void composeAllergyIntolerance(String name, AllergyIntolerance element) throws IOException {
35088    if (element != null) {
35089    composeResourceAttributes(element);
35090      xml.enter(FHIR_NS, name);
35091      composeAllergyIntoleranceElements(element);
35092      composeElementClose(element);
35093      xml.exit(FHIR_NS, name);
35094    }
35095  }
35096
35097  protected void composeAllergyIntoleranceElements(AllergyIntolerance element) throws IOException {
35098    composeDomainResourceElements(element);
35099    if (element.hasIdentifier()) { 
35100      for (Identifier e : element.getIdentifier()) 
35101          composeIdentifier("identifier", e);
35102    }
35103    if (element.hasClinicalStatus()) {
35104      composeCodeableConcept("clinicalStatus", element.getClinicalStatus());
35105    }
35106    if (element.hasVerificationStatus()) {
35107      composeCodeableConcept("verificationStatus", element.getVerificationStatus());
35108    }
35109    if (element.hasType()) {
35110      composeCodeableConcept("type", element.getType());
35111    }
35112      if (element.hasCategory()) 
35113        for (Enumeration<AllergyIntolerance.AllergyIntoleranceCategory> e : element.getCategory()) 
35114          composeEnumeration("category", e, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory());
35115    if (element.hasCriticalityElement())
35116      composeEnumeration("criticality", element.getCriticalityElement(), new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory());
35117    if (element.hasCode()) {
35118      composeCodeableConcept("code", element.getCode());
35119    }
35120    if (element.hasPatient()) {
35121      composeReference("patient", element.getPatient());
35122    }
35123    if (element.hasEncounter()) {
35124      composeReference("encounter", element.getEncounter());
35125    }
35126    if (element.hasOnset()) {
35127      composeType("onset", element.getOnset());
35128    }    if (element.hasRecordedDateElement()) {
35129      composeDateTime("recordedDate", element.getRecordedDateElement());
35130    }
35131    if (element.hasParticipant()) { 
35132      for (AllergyIntolerance.AllergyIntoleranceParticipantComponent e : element.getParticipant()) 
35133          composeAllergyIntoleranceParticipantComponent("participant", e);
35134    }
35135    if (element.hasLastOccurrenceElement()) {
35136      composeDateTime("lastOccurrence", element.getLastOccurrenceElement());
35137    }
35138    if (element.hasNote()) { 
35139      for (Annotation e : element.getNote()) 
35140          composeAnnotation("note", e);
35141    }
35142    if (element.hasReaction()) { 
35143      for (AllergyIntolerance.AllergyIntoleranceReactionComponent e : element.getReaction()) 
35144          composeAllergyIntoleranceReactionComponent("reaction", e);
35145    }
35146  }
35147
35148  protected void composeAllergyIntoleranceParticipantComponent(String name, AllergyIntolerance.AllergyIntoleranceParticipantComponent element) throws IOException {
35149    if (element != null) {
35150    composeElementAttributes(element);
35151      xml.enter(FHIR_NS, name);
35152      composeAllergyIntoleranceParticipantComponentElements(element);
35153      composeElementClose(element);
35154      xml.exit(FHIR_NS, name);
35155    }
35156  }
35157
35158  protected void composeAllergyIntoleranceParticipantComponentElements(AllergyIntolerance.AllergyIntoleranceParticipantComponent element) throws IOException {
35159    composeBackboneElementElements(element);
35160    if (element.hasFunction()) {
35161      composeCodeableConcept("function", element.getFunction());
35162    }
35163    if (element.hasActor()) {
35164      composeReference("actor", element.getActor());
35165    }
35166  }
35167
35168  protected void composeAllergyIntoleranceReactionComponent(String name, AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
35169    if (element != null) {
35170    composeElementAttributes(element);
35171      xml.enter(FHIR_NS, name);
35172      composeAllergyIntoleranceReactionComponentElements(element);
35173      composeElementClose(element);
35174      xml.exit(FHIR_NS, name);
35175    }
35176  }
35177
35178  protected void composeAllergyIntoleranceReactionComponentElements(AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
35179    composeBackboneElementElements(element);
35180    if (element.hasSubstance()) {
35181      composeCodeableConcept("substance", element.getSubstance());
35182    }
35183    if (element.hasManifestation()) { 
35184      for (CodeableReference e : element.getManifestation()) 
35185          composeCodeableReference("manifestation", e);
35186    }
35187    if (element.hasDescriptionElement()) {
35188      composeString("description", element.getDescriptionElement());
35189    }
35190    if (element.hasOnsetElement()) {
35191      composeDateTime("onset", element.getOnsetElement());
35192    }
35193    if (element.hasSeverityElement())
35194      composeEnumeration("severity", element.getSeverityElement(), new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory());
35195    if (element.hasExposureRoute()) {
35196      composeCodeableConcept("exposureRoute", element.getExposureRoute());
35197    }
35198    if (element.hasNote()) { 
35199      for (Annotation e : element.getNote()) 
35200          composeAnnotation("note", e);
35201    }
35202  }
35203
35204  protected void composeAppointment(String name, Appointment element) throws IOException {
35205    if (element != null) {
35206    composeResourceAttributes(element);
35207      xml.enter(FHIR_NS, name);
35208      composeAppointmentElements(element);
35209      composeElementClose(element);
35210      xml.exit(FHIR_NS, name);
35211    }
35212  }
35213
35214  protected void composeAppointmentElements(Appointment element) throws IOException {
35215    composeDomainResourceElements(element);
35216    if (element.hasIdentifier()) { 
35217      for (Identifier e : element.getIdentifier()) 
35218          composeIdentifier("identifier", e);
35219    }
35220    if (element.hasStatusElement())
35221      composeEnumeration("status", element.getStatusElement(), new Appointment.AppointmentStatusEnumFactory());
35222    if (element.hasCancellationReason()) {
35223      composeCodeableConcept("cancellationReason", element.getCancellationReason());
35224    }
35225    if (element.hasClass_()) { 
35226      for (CodeableConcept e : element.getClass_()) 
35227          composeCodeableConcept("class", e);
35228    }
35229    if (element.hasServiceCategory()) { 
35230      for (CodeableConcept e : element.getServiceCategory()) 
35231          composeCodeableConcept("serviceCategory", e);
35232    }
35233    if (element.hasServiceType()) { 
35234      for (CodeableReference e : element.getServiceType()) 
35235          composeCodeableReference("serviceType", e);
35236    }
35237    if (element.hasSpecialty()) { 
35238      for (CodeableConcept e : element.getSpecialty()) 
35239          composeCodeableConcept("specialty", e);
35240    }
35241    if (element.hasAppointmentType()) {
35242      composeCodeableConcept("appointmentType", element.getAppointmentType());
35243    }
35244    if (element.hasReason()) { 
35245      for (CodeableReference e : element.getReason()) 
35246          composeCodeableReference("reason", e);
35247    }
35248    if (element.hasPriority()) {
35249      composeCodeableConcept("priority", element.getPriority());
35250    }
35251    if (element.hasDescriptionElement()) {
35252      composeString("description", element.getDescriptionElement());
35253    }
35254    if (element.hasReplaces()) { 
35255      for (Reference e : element.getReplaces()) 
35256          composeReference("replaces", e);
35257    }
35258    if (element.hasVirtualService()) { 
35259      for (VirtualServiceDetail e : element.getVirtualService()) 
35260          composeVirtualServiceDetail("virtualService", e);
35261    }
35262    if (element.hasSupportingInformation()) { 
35263      for (Reference e : element.getSupportingInformation()) 
35264          composeReference("supportingInformation", e);
35265    }
35266    if (element.hasPreviousAppointment()) {
35267      composeReference("previousAppointment", element.getPreviousAppointment());
35268    }
35269    if (element.hasOriginatingAppointment()) {
35270      composeReference("originatingAppointment", element.getOriginatingAppointment());
35271    }
35272    if (element.hasStartElement()) {
35273      composeInstant("start", element.getStartElement());
35274    }
35275    if (element.hasEndElement()) {
35276      composeInstant("end", element.getEndElement());
35277    }
35278    if (element.hasMinutesDurationElement()) {
35279      composePositiveInt("minutesDuration", element.getMinutesDurationElement());
35280    }
35281    if (element.hasRequestedPeriod()) { 
35282      for (Period e : element.getRequestedPeriod()) 
35283          composePeriod("requestedPeriod", e);
35284    }
35285    if (element.hasSlot()) { 
35286      for (Reference e : element.getSlot()) 
35287          composeReference("slot", e);
35288    }
35289    if (element.hasAccount()) { 
35290      for (Reference e : element.getAccount()) 
35291          composeReference("account", e);
35292    }
35293    if (element.hasCreatedElement()) {
35294      composeDateTime("created", element.getCreatedElement());
35295    }
35296    if (element.hasCancellationDateElement()) {
35297      composeDateTime("cancellationDate", element.getCancellationDateElement());
35298    }
35299    if (element.hasNote()) { 
35300      for (Annotation e : element.getNote()) 
35301          composeAnnotation("note", e);
35302    }
35303    if (element.hasPatientInstruction()) { 
35304      for (CodeableReference e : element.getPatientInstruction()) 
35305          composeCodeableReference("patientInstruction", e);
35306    }
35307    if (element.hasBasedOn()) { 
35308      for (Reference e : element.getBasedOn()) 
35309          composeReference("basedOn", e);
35310    }
35311    if (element.hasSubject()) {
35312      composeReference("subject", element.getSubject());
35313    }
35314    if (element.hasParticipant()) { 
35315      for (Appointment.AppointmentParticipantComponent e : element.getParticipant()) 
35316          composeAppointmentParticipantComponent("participant", e);
35317    }
35318    if (element.hasRecurrenceIdElement()) {
35319      composePositiveInt("recurrenceId", element.getRecurrenceIdElement());
35320    }
35321    if (element.hasOccurrenceChangedElement()) {
35322      composeBoolean("occurrenceChanged", element.getOccurrenceChangedElement());
35323    }
35324    if (element.hasRecurrenceTemplate()) { 
35325      for (Appointment.AppointmentRecurrenceTemplateComponent e : element.getRecurrenceTemplate()) 
35326          composeAppointmentRecurrenceTemplateComponent("recurrenceTemplate", e);
35327    }
35328  }
35329
35330  protected void composeAppointmentParticipantComponent(String name, Appointment.AppointmentParticipantComponent element) throws IOException {
35331    if (element != null) {
35332    composeElementAttributes(element);
35333      xml.enter(FHIR_NS, name);
35334      composeAppointmentParticipantComponentElements(element);
35335      composeElementClose(element);
35336      xml.exit(FHIR_NS, name);
35337    }
35338  }
35339
35340  protected void composeAppointmentParticipantComponentElements(Appointment.AppointmentParticipantComponent element) throws IOException {
35341    composeBackboneElementElements(element);
35342    if (element.hasType()) { 
35343      for (CodeableConcept e : element.getType()) 
35344          composeCodeableConcept("type", e);
35345    }
35346    if (element.hasPeriod()) {
35347      composePeriod("period", element.getPeriod());
35348    }
35349    if (element.hasActor()) {
35350      composeReference("actor", element.getActor());
35351    }
35352    if (element.hasRequiredElement()) {
35353      composeBoolean("required", element.getRequiredElement());
35354    }
35355    if (element.hasStatusElement())
35356      composeEnumeration("status", element.getStatusElement(), new Appointment.ParticipationStatusEnumFactory());
35357  }
35358
35359  protected void composeAppointmentRecurrenceTemplateComponent(String name, Appointment.AppointmentRecurrenceTemplateComponent element) throws IOException {
35360    if (element != null) {
35361    composeElementAttributes(element);
35362      xml.enter(FHIR_NS, name);
35363      composeAppointmentRecurrenceTemplateComponentElements(element);
35364      composeElementClose(element);
35365      xml.exit(FHIR_NS, name);
35366    }
35367  }
35368
35369  protected void composeAppointmentRecurrenceTemplateComponentElements(Appointment.AppointmentRecurrenceTemplateComponent element) throws IOException {
35370    composeBackboneElementElements(element);
35371    if (element.hasTimezone()) {
35372      composeCodeableConcept("timezone", element.getTimezone());
35373    }
35374    if (element.hasRecurrenceType()) {
35375      composeCodeableConcept("recurrenceType", element.getRecurrenceType());
35376    }
35377    if (element.hasLastOccurrenceDateElement()) {
35378      composeDate("lastOccurrenceDate", element.getLastOccurrenceDateElement());
35379    }
35380    if (element.hasOccurrenceCountElement()) {
35381      composePositiveInt("occurrenceCount", element.getOccurrenceCountElement());
35382    }
35383    if (element.hasOccurrenceDate()) { 
35384      for (DateType e : element.getOccurrenceDate()) 
35385          composeDate("occurrenceDate", e);
35386    }
35387    if (element.hasWeeklyTemplate()) {
35388      composeAppointmentRecurrenceTemplateWeeklyTemplateComponent("weeklyTemplate", element.getWeeklyTemplate());
35389    }
35390    if (element.hasMonthlyTemplate()) {
35391      composeAppointmentRecurrenceTemplateMonthlyTemplateComponent("monthlyTemplate", element.getMonthlyTemplate());
35392    }
35393    if (element.hasYearlyTemplate()) {
35394      composeAppointmentRecurrenceTemplateYearlyTemplateComponent("yearlyTemplate", element.getYearlyTemplate());
35395    }
35396    if (element.hasExcludingDate()) { 
35397      for (DateType e : element.getExcludingDate()) 
35398          composeDate("excludingDate", e);
35399    }
35400    if (element.hasExcludingRecurrenceId()) { 
35401      for (PositiveIntType e : element.getExcludingRecurrenceId()) 
35402          composePositiveInt("excludingRecurrenceId", e);
35403    }
35404  }
35405
35406  protected void composeAppointmentRecurrenceTemplateWeeklyTemplateComponent(String name, Appointment.AppointmentRecurrenceTemplateWeeklyTemplateComponent element) throws IOException {
35407    if (element != null) {
35408    composeElementAttributes(element);
35409      xml.enter(FHIR_NS, name);
35410      composeAppointmentRecurrenceTemplateWeeklyTemplateComponentElements(element);
35411      composeElementClose(element);
35412      xml.exit(FHIR_NS, name);
35413    }
35414  }
35415
35416  protected void composeAppointmentRecurrenceTemplateWeeklyTemplateComponentElements(Appointment.AppointmentRecurrenceTemplateWeeklyTemplateComponent element) throws IOException {
35417    composeBackboneElementElements(element);
35418    if (element.hasMondayElement()) {
35419      composeBoolean("monday", element.getMondayElement());
35420    }
35421    if (element.hasTuesdayElement()) {
35422      composeBoolean("tuesday", element.getTuesdayElement());
35423    }
35424    if (element.hasWednesdayElement()) {
35425      composeBoolean("wednesday", element.getWednesdayElement());
35426    }
35427    if (element.hasThursdayElement()) {
35428      composeBoolean("thursday", element.getThursdayElement());
35429    }
35430    if (element.hasFridayElement()) {
35431      composeBoolean("friday", element.getFridayElement());
35432    }
35433    if (element.hasSaturdayElement()) {
35434      composeBoolean("saturday", element.getSaturdayElement());
35435    }
35436    if (element.hasSundayElement()) {
35437      composeBoolean("sunday", element.getSundayElement());
35438    }
35439    if (element.hasWeekIntervalElement()) {
35440      composePositiveInt("weekInterval", element.getWeekIntervalElement());
35441    }
35442  }
35443
35444  protected void composeAppointmentRecurrenceTemplateMonthlyTemplateComponent(String name, Appointment.AppointmentRecurrenceTemplateMonthlyTemplateComponent element) throws IOException {
35445    if (element != null) {
35446    composeElementAttributes(element);
35447      xml.enter(FHIR_NS, name);
35448      composeAppointmentRecurrenceTemplateMonthlyTemplateComponentElements(element);
35449      composeElementClose(element);
35450      xml.exit(FHIR_NS, name);
35451    }
35452  }
35453
35454  protected void composeAppointmentRecurrenceTemplateMonthlyTemplateComponentElements(Appointment.AppointmentRecurrenceTemplateMonthlyTemplateComponent element) throws IOException {
35455    composeBackboneElementElements(element);
35456    if (element.hasDayOfMonthElement()) {
35457      composePositiveInt("dayOfMonth", element.getDayOfMonthElement());
35458    }
35459    if (element.hasNthWeekOfMonth()) {
35460      composeCoding("nthWeekOfMonth", element.getNthWeekOfMonth());
35461    }
35462    if (element.hasDayOfWeek()) {
35463      composeCoding("dayOfWeek", element.getDayOfWeek());
35464    }
35465    if (element.hasMonthIntervalElement()) {
35466      composePositiveInt("monthInterval", element.getMonthIntervalElement());
35467    }
35468  }
35469
35470  protected void composeAppointmentRecurrenceTemplateYearlyTemplateComponent(String name, Appointment.AppointmentRecurrenceTemplateYearlyTemplateComponent element) throws IOException {
35471    if (element != null) {
35472    composeElementAttributes(element);
35473      xml.enter(FHIR_NS, name);
35474      composeAppointmentRecurrenceTemplateYearlyTemplateComponentElements(element);
35475      composeElementClose(element);
35476      xml.exit(FHIR_NS, name);
35477    }
35478  }
35479
35480  protected void composeAppointmentRecurrenceTemplateYearlyTemplateComponentElements(Appointment.AppointmentRecurrenceTemplateYearlyTemplateComponent element) throws IOException {
35481    composeBackboneElementElements(element);
35482    if (element.hasYearIntervalElement()) {
35483      composePositiveInt("yearInterval", element.getYearIntervalElement());
35484    }
35485  }
35486
35487  protected void composeAppointmentResponse(String name, AppointmentResponse element) throws IOException {
35488    if (element != null) {
35489    composeResourceAttributes(element);
35490      xml.enter(FHIR_NS, name);
35491      composeAppointmentResponseElements(element);
35492      composeElementClose(element);
35493      xml.exit(FHIR_NS, name);
35494    }
35495  }
35496
35497  protected void composeAppointmentResponseElements(AppointmentResponse element) throws IOException {
35498    composeDomainResourceElements(element);
35499    if (element.hasIdentifier()) { 
35500      for (Identifier e : element.getIdentifier()) 
35501          composeIdentifier("identifier", e);
35502    }
35503    if (element.hasAppointment()) {
35504      composeReference("appointment", element.getAppointment());
35505    }
35506    if (element.hasProposedNewTimeElement()) {
35507      composeBoolean("proposedNewTime", element.getProposedNewTimeElement());
35508    }
35509    if (element.hasStartElement()) {
35510      composeInstant("start", element.getStartElement());
35511    }
35512    if (element.hasEndElement()) {
35513      composeInstant("end", element.getEndElement());
35514    }
35515    if (element.hasParticipantType()) { 
35516      for (CodeableConcept e : element.getParticipantType()) 
35517          composeCodeableConcept("participantType", e);
35518    }
35519    if (element.hasActor()) {
35520      composeReference("actor", element.getActor());
35521    }
35522    if (element.hasParticipantStatusElement())
35523      composeEnumeration("participantStatus", element.getParticipantStatusElement(), new AppointmentResponse.AppointmentResponseStatusEnumFactory());
35524    if (element.hasCommentElement()) {
35525      composeMarkdown("comment", element.getCommentElement());
35526    }
35527    if (element.hasRecurringElement()) {
35528      composeBoolean("recurring", element.getRecurringElement());
35529    }
35530    if (element.hasOccurrenceDateElement()) {
35531      composeDate("occurrenceDate", element.getOccurrenceDateElement());
35532    }
35533    if (element.hasRecurrenceIdElement()) {
35534      composePositiveInt("recurrenceId", element.getRecurrenceIdElement());
35535    }
35536  }
35537
35538  protected void composeArtifactAssessment(String name, ArtifactAssessment element) throws IOException {
35539    if (element != null) {
35540    composeResourceAttributes(element);
35541      xml.enter(FHIR_NS, name);
35542      composeArtifactAssessmentElements(element);
35543      composeElementClose(element);
35544      xml.exit(FHIR_NS, name);
35545    }
35546  }
35547
35548  protected void composeArtifactAssessmentElements(ArtifactAssessment element) throws IOException {
35549    composeDomainResourceElements(element);
35550    if (element.hasIdentifier()) { 
35551      for (Identifier e : element.getIdentifier()) 
35552          composeIdentifier("identifier", e);
35553    }
35554    if (element.hasTitleElement()) {
35555      composeString("title", element.getTitleElement());
35556    }
35557    if (element.hasCiteAs()) {
35558      composeType("citeAs", element.getCiteAs());
35559    }    if (element.hasDateElement()) {
35560      composeDateTime("date", element.getDateElement());
35561    }
35562    if (element.hasCopyrightElement()) {
35563      composeMarkdown("copyright", element.getCopyrightElement());
35564    }
35565    if (element.hasApprovalDateElement()) {
35566      composeDate("approvalDate", element.getApprovalDateElement());
35567    }
35568    if (element.hasLastReviewDateElement()) {
35569      composeDate("lastReviewDate", element.getLastReviewDateElement());
35570    }
35571    if (element.hasArtifact()) {
35572      composeType("artifact", element.getArtifact());
35573    }    if (element.hasContent()) { 
35574      for (ArtifactAssessment.ArtifactAssessmentContentComponent e : element.getContent()) 
35575          composeArtifactAssessmentContentComponent("content", e);
35576    }
35577    if (element.hasWorkflowStatusElement())
35578      composeEnumeration("workflowStatus", element.getWorkflowStatusElement(), new ArtifactAssessment.ArtifactAssessmentWorkflowStatusEnumFactory());
35579    if (element.hasDispositionElement())
35580      composeEnumeration("disposition", element.getDispositionElement(), new ArtifactAssessment.ArtifactAssessmentDispositionEnumFactory());
35581  }
35582
35583  protected void composeArtifactAssessmentContentComponent(String name, ArtifactAssessment.ArtifactAssessmentContentComponent element) throws IOException {
35584    if (element != null) {
35585    composeElementAttributes(element);
35586      xml.enter(FHIR_NS, name);
35587      composeArtifactAssessmentContentComponentElements(element);
35588      composeElementClose(element);
35589      xml.exit(FHIR_NS, name);
35590    }
35591  }
35592
35593  protected void composeArtifactAssessmentContentComponentElements(ArtifactAssessment.ArtifactAssessmentContentComponent element) throws IOException {
35594    composeBackboneElementElements(element);
35595    if (element.hasInformationTypeElement())
35596      composeEnumeration("informationType", element.getInformationTypeElement(), new ArtifactAssessment.ArtifactAssessmentInformationTypeEnumFactory());
35597    if (element.hasSummaryElement()) {
35598      composeMarkdown("summary", element.getSummaryElement());
35599    }
35600    if (element.hasType()) {
35601      composeCodeableConcept("type", element.getType());
35602    }
35603    if (element.hasClassifier()) { 
35604      for (CodeableConcept e : element.getClassifier()) 
35605          composeCodeableConcept("classifier", e);
35606    }
35607    if (element.hasQuantity()) {
35608      composeQuantity("quantity", element.getQuantity());
35609    }
35610    if (element.hasAuthor()) {
35611      composeReference("author", element.getAuthor());
35612    }
35613    if (element.hasPath()) { 
35614      for (UriType e : element.getPath()) 
35615          composeUri("path", e);
35616    }
35617    if (element.hasRelatedArtifact()) { 
35618      for (RelatedArtifact e : element.getRelatedArtifact()) 
35619          composeRelatedArtifact("relatedArtifact", e);
35620    }
35621    if (element.hasFreeToShareElement()) {
35622      composeBoolean("freeToShare", element.getFreeToShareElement());
35623    }
35624    if (element.hasComponent()) { 
35625      for (ArtifactAssessment.ArtifactAssessmentContentComponent e : element.getComponent()) 
35626          composeArtifactAssessmentContentComponent("component", e);
35627    }
35628  }
35629
35630  protected void composeAuditEvent(String name, AuditEvent element) throws IOException {
35631    if (element != null) {
35632    composeResourceAttributes(element);
35633      xml.enter(FHIR_NS, name);
35634      composeAuditEventElements(element);
35635      composeElementClose(element);
35636      xml.exit(FHIR_NS, name);
35637    }
35638  }
35639
35640  protected void composeAuditEventElements(AuditEvent element) throws IOException {
35641    composeDomainResourceElements(element);
35642    if (element.hasCategory()) { 
35643      for (CodeableConcept e : element.getCategory()) 
35644          composeCodeableConcept("category", e);
35645    }
35646    if (element.hasCode()) {
35647      composeCodeableConcept("code", element.getCode());
35648    }
35649    if (element.hasActionElement())
35650      composeEnumeration("action", element.getActionElement(), new AuditEvent.AuditEventActionEnumFactory());
35651    if (element.hasSeverityElement())
35652      composeEnumeration("severity", element.getSeverityElement(), new AuditEvent.AuditEventSeverityEnumFactory());
35653    if (element.hasOccurred()) {
35654      composeType("occurred", element.getOccurred());
35655    }    if (element.hasRecordedElement()) {
35656      composeInstant("recorded", element.getRecordedElement());
35657    }
35658    if (element.hasOutcome()) {
35659      composeAuditEventOutcomeComponent("outcome", element.getOutcome());
35660    }
35661    if (element.hasAuthorization()) { 
35662      for (CodeableConcept e : element.getAuthorization()) 
35663          composeCodeableConcept("authorization", e);
35664    }
35665    if (element.hasBasedOn()) { 
35666      for (Reference e : element.getBasedOn()) 
35667          composeReference("basedOn", e);
35668    }
35669    if (element.hasPatient()) {
35670      composeReference("patient", element.getPatient());
35671    }
35672    if (element.hasEncounter()) {
35673      composeReference("encounter", element.getEncounter());
35674    }
35675    if (element.hasAgent()) { 
35676      for (AuditEvent.AuditEventAgentComponent e : element.getAgent()) 
35677          composeAuditEventAgentComponent("agent", e);
35678    }
35679    if (element.hasSource()) {
35680      composeAuditEventSourceComponent("source", element.getSource());
35681    }
35682    if (element.hasEntity()) { 
35683      for (AuditEvent.AuditEventEntityComponent e : element.getEntity()) 
35684          composeAuditEventEntityComponent("entity", e);
35685    }
35686  }
35687
35688  protected void composeAuditEventOutcomeComponent(String name, AuditEvent.AuditEventOutcomeComponent element) throws IOException {
35689    if (element != null) {
35690    composeElementAttributes(element);
35691      xml.enter(FHIR_NS, name);
35692      composeAuditEventOutcomeComponentElements(element);
35693      composeElementClose(element);
35694      xml.exit(FHIR_NS, name);
35695    }
35696  }
35697
35698  protected void composeAuditEventOutcomeComponentElements(AuditEvent.AuditEventOutcomeComponent element) throws IOException {
35699    composeBackboneElementElements(element);
35700    if (element.hasCode()) {
35701      composeCoding("code", element.getCode());
35702    }
35703    if (element.hasDetail()) { 
35704      for (CodeableConcept e : element.getDetail()) 
35705          composeCodeableConcept("detail", e);
35706    }
35707  }
35708
35709  protected void composeAuditEventAgentComponent(String name, AuditEvent.AuditEventAgentComponent element) throws IOException {
35710    if (element != null) {
35711    composeElementAttributes(element);
35712      xml.enter(FHIR_NS, name);
35713      composeAuditEventAgentComponentElements(element);
35714      composeElementClose(element);
35715      xml.exit(FHIR_NS, name);
35716    }
35717  }
35718
35719  protected void composeAuditEventAgentComponentElements(AuditEvent.AuditEventAgentComponent element) throws IOException {
35720    composeBackboneElementElements(element);
35721    if (element.hasType()) {
35722      composeCodeableConcept("type", element.getType());
35723    }
35724    if (element.hasRole()) { 
35725      for (CodeableConcept e : element.getRole()) 
35726          composeCodeableConcept("role", e);
35727    }
35728    if (element.hasWho()) {
35729      composeReference("who", element.getWho());
35730    }
35731    if (element.hasRequestorElement()) {
35732      composeBoolean("requestor", element.getRequestorElement());
35733    }
35734    if (element.hasLocation()) {
35735      composeReference("location", element.getLocation());
35736    }
35737    if (element.hasPolicy()) { 
35738      for (UriType e : element.getPolicy()) 
35739          composeUri("policy", e);
35740    }
35741    if (element.hasNetwork()) {
35742      composeType("network", element.getNetwork());
35743    }    if (element.hasAuthorization()) { 
35744      for (CodeableConcept e : element.getAuthorization()) 
35745          composeCodeableConcept("authorization", e);
35746    }
35747  }
35748
35749  protected void composeAuditEventSourceComponent(String name, AuditEvent.AuditEventSourceComponent element) throws IOException {
35750    if (element != null) {
35751    composeElementAttributes(element);
35752      xml.enter(FHIR_NS, name);
35753      composeAuditEventSourceComponentElements(element);
35754      composeElementClose(element);
35755      xml.exit(FHIR_NS, name);
35756    }
35757  }
35758
35759  protected void composeAuditEventSourceComponentElements(AuditEvent.AuditEventSourceComponent element) throws IOException {
35760    composeBackboneElementElements(element);
35761    if (element.hasSite()) {
35762      composeReference("site", element.getSite());
35763    }
35764    if (element.hasObserver()) {
35765      composeReference("observer", element.getObserver());
35766    }
35767    if (element.hasType()) { 
35768      for (CodeableConcept e : element.getType()) 
35769          composeCodeableConcept("type", e);
35770    }
35771  }
35772
35773  protected void composeAuditEventEntityComponent(String name, AuditEvent.AuditEventEntityComponent element) throws IOException {
35774    if (element != null) {
35775    composeElementAttributes(element);
35776      xml.enter(FHIR_NS, name);
35777      composeAuditEventEntityComponentElements(element);
35778      composeElementClose(element);
35779      xml.exit(FHIR_NS, name);
35780    }
35781  }
35782
35783  protected void composeAuditEventEntityComponentElements(AuditEvent.AuditEventEntityComponent element) throws IOException {
35784    composeBackboneElementElements(element);
35785    if (element.hasWhat()) {
35786      composeReference("what", element.getWhat());
35787    }
35788    if (element.hasRole()) {
35789      composeCodeableConcept("role", element.getRole());
35790    }
35791    if (element.hasSecurityLabel()) { 
35792      for (CodeableConcept e : element.getSecurityLabel()) 
35793          composeCodeableConcept("securityLabel", e);
35794    }
35795    if (element.hasQueryElement()) {
35796      composeBase64Binary("query", element.getQueryElement());
35797    }
35798    if (element.hasDetail()) { 
35799      for (AuditEvent.AuditEventEntityDetailComponent e : element.getDetail()) 
35800          composeAuditEventEntityDetailComponent("detail", e);
35801    }
35802    if (element.hasAgent()) { 
35803      for (AuditEvent.AuditEventAgentComponent e : element.getAgent()) 
35804          composeAuditEventAgentComponent("agent", e);
35805    }
35806  }
35807
35808  protected void composeAuditEventEntityDetailComponent(String name, AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
35809    if (element != null) {
35810    composeElementAttributes(element);
35811      xml.enter(FHIR_NS, name);
35812      composeAuditEventEntityDetailComponentElements(element);
35813      composeElementClose(element);
35814      xml.exit(FHIR_NS, name);
35815    }
35816  }
35817
35818  protected void composeAuditEventEntityDetailComponentElements(AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
35819    composeBackboneElementElements(element);
35820    if (element.hasType()) {
35821      composeCodeableConcept("type", element.getType());
35822    }
35823    if (element.hasValue()) {
35824      composeType("value", element.getValue());
35825    }  }
35826
35827  protected void composeBasic(String name, Basic element) throws IOException {
35828    if (element != null) {
35829    composeResourceAttributes(element);
35830      xml.enter(FHIR_NS, name);
35831      composeBasicElements(element);
35832      composeElementClose(element);
35833      xml.exit(FHIR_NS, name);
35834    }
35835  }
35836
35837  protected void composeBasicElements(Basic element) throws IOException {
35838    composeDomainResourceElements(element);
35839    if (element.hasIdentifier()) { 
35840      for (Identifier e : element.getIdentifier()) 
35841          composeIdentifier("identifier", e);
35842    }
35843    if (element.hasCode()) {
35844      composeCodeableConcept("code", element.getCode());
35845    }
35846    if (element.hasSubject()) {
35847      composeReference("subject", element.getSubject());
35848    }
35849    if (element.hasCreatedElement()) {
35850      composeDateTime("created", element.getCreatedElement());
35851    }
35852    if (element.hasAuthor()) {
35853      composeReference("author", element.getAuthor());
35854    }
35855  }
35856
35857  protected void composeBinary(String name, Binary element) throws IOException {
35858    if (element != null) {
35859    composeResourceAttributes(element);
35860      xml.enter(FHIR_NS, name);
35861      composeBinaryElements(element);
35862      composeElementClose(element);
35863      xml.exit(FHIR_NS, name);
35864    }
35865  }
35866
35867  protected void composeBinaryElements(Binary element) throws IOException {
35868    composeResourceElements(element);
35869    if (element.hasContentTypeElement()) {
35870      composeCode("contentType", element.getContentTypeElement());
35871    }
35872    if (element.hasSecurityContext()) {
35873      composeReference("securityContext", element.getSecurityContext());
35874    }
35875    if (element.hasDataElement()) {
35876      composeBase64Binary("data", element.getDataElement());
35877    }
35878  }
35879
35880  protected void composeBiologicallyDerivedProduct(String name, BiologicallyDerivedProduct element) throws IOException {
35881    if (element != null) {
35882    composeResourceAttributes(element);
35883      xml.enter(FHIR_NS, name);
35884      composeBiologicallyDerivedProductElements(element);
35885      composeElementClose(element);
35886      xml.exit(FHIR_NS, name);
35887    }
35888  }
35889
35890  protected void composeBiologicallyDerivedProductElements(BiologicallyDerivedProduct element) throws IOException {
35891    composeDomainResourceElements(element);
35892    if (element.hasProductCategory()) {
35893      composeCoding("productCategory", element.getProductCategory());
35894    }
35895    if (element.hasProductCode()) {
35896      composeCodeableConcept("productCode", element.getProductCode());
35897    }
35898    if (element.hasParent()) { 
35899      for (Reference e : element.getParent()) 
35900          composeReference("parent", e);
35901    }
35902    if (element.hasRequest()) { 
35903      for (Reference e : element.getRequest()) 
35904          composeReference("request", e);
35905    }
35906    if (element.hasIdentifier()) { 
35907      for (Identifier e : element.getIdentifier()) 
35908          composeIdentifier("identifier", e);
35909    }
35910    if (element.hasBiologicalSourceEvent()) {
35911      composeIdentifier("biologicalSourceEvent", element.getBiologicalSourceEvent());
35912    }
35913    if (element.hasProcessingFacility()) { 
35914      for (Reference e : element.getProcessingFacility()) 
35915          composeReference("processingFacility", e);
35916    }
35917    if (element.hasDivisionElement()) {
35918      composeString("division", element.getDivisionElement());
35919    }
35920    if (element.hasProductStatus()) {
35921      composeCoding("productStatus", element.getProductStatus());
35922    }
35923    if (element.hasExpirationDateElement()) {
35924      composeDateTime("expirationDate", element.getExpirationDateElement());
35925    }
35926    if (element.hasCollection()) {
35927      composeBiologicallyDerivedProductCollectionComponent("collection", element.getCollection());
35928    }
35929    if (element.hasStorageTempRequirements()) {
35930      composeRange("storageTempRequirements", element.getStorageTempRequirements());
35931    }
35932    if (element.hasProperty()) { 
35933      for (BiologicallyDerivedProduct.BiologicallyDerivedProductPropertyComponent e : element.getProperty()) 
35934          composeBiologicallyDerivedProductPropertyComponent("property", e);
35935    }
35936  }
35937
35938  protected void composeBiologicallyDerivedProductCollectionComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent element) throws IOException {
35939    if (element != null) {
35940    composeElementAttributes(element);
35941      xml.enter(FHIR_NS, name);
35942      composeBiologicallyDerivedProductCollectionComponentElements(element);
35943      composeElementClose(element);
35944      xml.exit(FHIR_NS, name);
35945    }
35946  }
35947
35948  protected void composeBiologicallyDerivedProductCollectionComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent element) throws IOException {
35949    composeBackboneElementElements(element);
35950    if (element.hasCollector()) {
35951      composeReference("collector", element.getCollector());
35952    }
35953    if (element.hasSource()) {
35954      composeReference("source", element.getSource());
35955    }
35956    if (element.hasCollected()) {
35957      composeType("collected", element.getCollected());
35958    }  }
35959
35960  protected void composeBiologicallyDerivedProductPropertyComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductPropertyComponent element) throws IOException {
35961    if (element != null) {
35962    composeElementAttributes(element);
35963      xml.enter(FHIR_NS, name);
35964      composeBiologicallyDerivedProductPropertyComponentElements(element);
35965      composeElementClose(element);
35966      xml.exit(FHIR_NS, name);
35967    }
35968  }
35969
35970  protected void composeBiologicallyDerivedProductPropertyComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductPropertyComponent element) throws IOException {
35971    composeBackboneElementElements(element);
35972    if (element.hasType()) {
35973      composeCodeableConcept("type", element.getType());
35974    }
35975    if (element.hasValue()) {
35976      composeType("value", element.getValue());
35977    }  }
35978
35979  protected void composeBiologicallyDerivedProductDispense(String name, BiologicallyDerivedProductDispense element) throws IOException {
35980    if (element != null) {
35981    composeResourceAttributes(element);
35982      xml.enter(FHIR_NS, name);
35983      composeBiologicallyDerivedProductDispenseElements(element);
35984      composeElementClose(element);
35985      xml.exit(FHIR_NS, name);
35986    }
35987  }
35988
35989  protected void composeBiologicallyDerivedProductDispenseElements(BiologicallyDerivedProductDispense element) throws IOException {
35990    composeDomainResourceElements(element);
35991    if (element.hasIdentifier()) { 
35992      for (Identifier e : element.getIdentifier()) 
35993          composeIdentifier("identifier", e);
35994    }
35995    if (element.hasBasedOn()) { 
35996      for (Reference e : element.getBasedOn()) 
35997          composeReference("basedOn", e);
35998    }
35999    if (element.hasPartOf()) { 
36000      for (Reference e : element.getPartOf()) 
36001          composeReference("partOf", e);
36002    }
36003    if (element.hasStatusElement())
36004      composeEnumeration("status", element.getStatusElement(), new BiologicallyDerivedProductDispense.BiologicallyDerivedProductDispenseCodesEnumFactory());
36005    if (element.hasOriginRelationshipType()) {
36006      composeCodeableConcept("originRelationshipType", element.getOriginRelationshipType());
36007    }
36008    if (element.hasProduct()) {
36009      composeReference("product", element.getProduct());
36010    }
36011    if (element.hasPatient()) {
36012      composeReference("patient", element.getPatient());
36013    }
36014    if (element.hasMatchStatus()) {
36015      composeCodeableConcept("matchStatus", element.getMatchStatus());
36016    }
36017    if (element.hasPerformer()) { 
36018      for (BiologicallyDerivedProductDispense.BiologicallyDerivedProductDispensePerformerComponent e : element.getPerformer()) 
36019          composeBiologicallyDerivedProductDispensePerformerComponent("performer", e);
36020    }
36021    if (element.hasLocation()) {
36022      composeReference("location", element.getLocation());
36023    }
36024    if (element.hasQuantity()) {
36025      composeQuantity("quantity", element.getQuantity());
36026    }
36027    if (element.hasPreparedDateElement()) {
36028      composeDateTime("preparedDate", element.getPreparedDateElement());
36029    }
36030    if (element.hasWhenHandedOverElement()) {
36031      composeDateTime("whenHandedOver", element.getWhenHandedOverElement());
36032    }
36033    if (element.hasDestination()) {
36034      composeReference("destination", element.getDestination());
36035    }
36036    if (element.hasNote()) { 
36037      for (Annotation e : element.getNote()) 
36038          composeAnnotation("note", e);
36039    }
36040    if (element.hasUsageInstructionElement()) {
36041      composeString("usageInstruction", element.getUsageInstructionElement());
36042    }
36043  }
36044
36045  protected void composeBiologicallyDerivedProductDispensePerformerComponent(String name, BiologicallyDerivedProductDispense.BiologicallyDerivedProductDispensePerformerComponent element) throws IOException {
36046    if (element != null) {
36047    composeElementAttributes(element);
36048      xml.enter(FHIR_NS, name);
36049      composeBiologicallyDerivedProductDispensePerformerComponentElements(element);
36050      composeElementClose(element);
36051      xml.exit(FHIR_NS, name);
36052    }
36053  }
36054
36055  protected void composeBiologicallyDerivedProductDispensePerformerComponentElements(BiologicallyDerivedProductDispense.BiologicallyDerivedProductDispensePerformerComponent element) throws IOException {
36056    composeBackboneElementElements(element);
36057    if (element.hasFunction()) {
36058      composeCodeableConcept("function", element.getFunction());
36059    }
36060    if (element.hasActor()) {
36061      composeReference("actor", element.getActor());
36062    }
36063  }
36064
36065  protected void composeBodyStructure(String name, BodyStructure element) throws IOException {
36066    if (element != null) {
36067    composeResourceAttributes(element);
36068      xml.enter(FHIR_NS, name);
36069      composeBodyStructureElements(element);
36070      composeElementClose(element);
36071      xml.exit(FHIR_NS, name);
36072    }
36073  }
36074
36075  protected void composeBodyStructureElements(BodyStructure element) throws IOException {
36076    composeDomainResourceElements(element);
36077    if (element.hasIdentifier()) { 
36078      for (Identifier e : element.getIdentifier()) 
36079          composeIdentifier("identifier", e);
36080    }
36081    if (element.hasActiveElement()) {
36082      composeBoolean("active", element.getActiveElement());
36083    }
36084    if (element.hasMorphology()) {
36085      composeCodeableConcept("morphology", element.getMorphology());
36086    }
36087    if (element.hasIncludedStructure()) { 
36088      for (BodyStructure.BodyStructureIncludedStructureComponent e : element.getIncludedStructure()) 
36089          composeBodyStructureIncludedStructureComponent("includedStructure", e);
36090    }
36091    if (element.hasExcludedStructure()) { 
36092      for (BodyStructure.BodyStructureIncludedStructureComponent e : element.getExcludedStructure()) 
36093          composeBodyStructureIncludedStructureComponent("excludedStructure", e);
36094    }
36095    if (element.hasDescriptionElement()) {
36096      composeMarkdown("description", element.getDescriptionElement());
36097    }
36098    if (element.hasImage()) { 
36099      for (Attachment e : element.getImage()) 
36100          composeAttachment("image", e);
36101    }
36102    if (element.hasPatient()) {
36103      composeReference("patient", element.getPatient());
36104    }
36105  }
36106
36107  protected void composeBodyStructureIncludedStructureComponent(String name, BodyStructure.BodyStructureIncludedStructureComponent element) throws IOException {
36108    if (element != null) {
36109    composeElementAttributes(element);
36110      xml.enter(FHIR_NS, name);
36111      composeBodyStructureIncludedStructureComponentElements(element);
36112      composeElementClose(element);
36113      xml.exit(FHIR_NS, name);
36114    }
36115  }
36116
36117  protected void composeBodyStructureIncludedStructureComponentElements(BodyStructure.BodyStructureIncludedStructureComponent element) throws IOException {
36118    composeBackboneElementElements(element);
36119    if (element.hasStructure()) {
36120      composeCodeableConcept("structure", element.getStructure());
36121    }
36122    if (element.hasLaterality()) {
36123      composeCodeableConcept("laterality", element.getLaterality());
36124    }
36125    if (element.hasBodyLandmarkOrientation()) { 
36126      for (BodyStructure.BodyStructureIncludedStructureBodyLandmarkOrientationComponent e : element.getBodyLandmarkOrientation()) 
36127          composeBodyStructureIncludedStructureBodyLandmarkOrientationComponent("bodyLandmarkOrientation", e);
36128    }
36129    if (element.hasSpatialReference()) { 
36130      for (Reference e : element.getSpatialReference()) 
36131          composeReference("spatialReference", e);
36132    }
36133    if (element.hasQualifier()) { 
36134      for (CodeableConcept e : element.getQualifier()) 
36135          composeCodeableConcept("qualifier", e);
36136    }
36137  }
36138
36139  protected void composeBodyStructureIncludedStructureBodyLandmarkOrientationComponent(String name, BodyStructure.BodyStructureIncludedStructureBodyLandmarkOrientationComponent element) throws IOException {
36140    if (element != null) {
36141    composeElementAttributes(element);
36142      xml.enter(FHIR_NS, name);
36143      composeBodyStructureIncludedStructureBodyLandmarkOrientationComponentElements(element);
36144      composeElementClose(element);
36145      xml.exit(FHIR_NS, name);
36146    }
36147  }
36148
36149  protected void composeBodyStructureIncludedStructureBodyLandmarkOrientationComponentElements(BodyStructure.BodyStructureIncludedStructureBodyLandmarkOrientationComponent element) throws IOException {
36150    composeBackboneElementElements(element);
36151    if (element.hasLandmarkDescription()) { 
36152      for (CodeableConcept e : element.getLandmarkDescription()) 
36153          composeCodeableConcept("landmarkDescription", e);
36154    }
36155    if (element.hasClockFacePosition()) { 
36156      for (CodeableConcept e : element.getClockFacePosition()) 
36157          composeCodeableConcept("clockFacePosition", e);
36158    }
36159    if (element.hasDistanceFromLandmark()) { 
36160      for (BodyStructure.BodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponent e : element.getDistanceFromLandmark()) 
36161          composeBodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponent("distanceFromLandmark", e);
36162    }
36163    if (element.hasSurfaceOrientation()) { 
36164      for (CodeableConcept e : element.getSurfaceOrientation()) 
36165          composeCodeableConcept("surfaceOrientation", e);
36166    }
36167  }
36168
36169  protected void composeBodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponent(String name, BodyStructure.BodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponent element) throws IOException {
36170    if (element != null) {
36171    composeElementAttributes(element);
36172      xml.enter(FHIR_NS, name);
36173      composeBodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponentElements(element);
36174      composeElementClose(element);
36175      xml.exit(FHIR_NS, name);
36176    }
36177  }
36178
36179  protected void composeBodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponentElements(BodyStructure.BodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponent element) throws IOException {
36180    composeBackboneElementElements(element);
36181    if (element.hasDevice()) { 
36182      for (CodeableReference e : element.getDevice()) 
36183          composeCodeableReference("device", e);
36184    }
36185    if (element.hasValue()) { 
36186      for (Quantity e : element.getValue()) 
36187          composeQuantity("value", e);
36188    }
36189  }
36190
36191  protected void composeBundle(String name, Bundle element) throws IOException {
36192    if (element != null) {
36193    composeResourceAttributes(element);
36194      xml.enter(FHIR_NS, name);
36195      composeBundleElements(element);
36196      composeElementClose(element);
36197      xml.exit(FHIR_NS, name);
36198    }
36199  }
36200
36201  protected void composeBundleElements(Bundle element) throws IOException {
36202    composeResourceElements(element);
36203    if (element.hasIdentifier()) {
36204      composeIdentifier("identifier", element.getIdentifier());
36205    }
36206    if (element.hasTypeElement())
36207      composeEnumeration("type", element.getTypeElement(), new Bundle.BundleTypeEnumFactory());
36208    if (element.hasTimestampElement()) {
36209      composeInstant("timestamp", element.getTimestampElement());
36210    }
36211    if (element.hasTotalElement()) {
36212      composeUnsignedInt("total", element.getTotalElement());
36213    }
36214    if (element.hasLink()) { 
36215      for (Bundle.BundleLinkComponent e : element.getLink()) 
36216          composeBundleLinkComponent("link", e);
36217    }
36218    if (element.hasEntry()) { 
36219      for (Bundle.BundleEntryComponent e : element.getEntry()) 
36220          composeBundleEntryComponent("entry", e);
36221    }
36222    if (element.hasSignature()) {
36223      composeSignature("signature", element.getSignature());
36224    }
36225    if (element.hasIssues()) {
36226      xml.enter(FHIR_NS, "issues");
36227      composeResource(element.getIssues());
36228      xml.exit(FHIR_NS, "issues");
36229    }
36230  }
36231
36232  protected void composeBundleLinkComponent(String name, Bundle.BundleLinkComponent element) throws IOException {
36233    if (element != null) {
36234    composeElementAttributes(element);
36235      xml.enter(FHIR_NS, name);
36236      composeBundleLinkComponentElements(element);
36237      composeElementClose(element);
36238      xml.exit(FHIR_NS, name);
36239    }
36240  }
36241
36242  protected void composeBundleLinkComponentElements(Bundle.BundleLinkComponent element) throws IOException {
36243    composeBackboneElementElements(element);
36244    if (element.hasRelationElement())
36245      composeEnumeration("relation", element.getRelationElement(), new Bundle.LinkRelationTypesEnumFactory());
36246    if (element.hasUrlElement()) {
36247      composeUri("url", element.getUrlElement());
36248    }
36249  }
36250
36251  protected void composeBundleEntryComponent(String name, Bundle.BundleEntryComponent element) throws IOException {
36252    if (element != null) {
36253    composeElementAttributes(element);
36254      xml.enter(FHIR_NS, name);
36255      composeBundleEntryComponentElements(element);
36256      composeElementClose(element);
36257      xml.exit(FHIR_NS, name);
36258    }
36259  }
36260
36261  protected void composeBundleEntryComponentElements(Bundle.BundleEntryComponent element) throws IOException {
36262    composeBackboneElementElements(element);
36263    if (element.hasLink()) { 
36264      for (Bundle.BundleLinkComponent e : element.getLink()) 
36265          composeBundleLinkComponent("link", e);
36266    }
36267    if (element.hasFullUrlElement()) {
36268      composeUri("fullUrl", element.getFullUrlElement());
36269    }
36270    if (element.hasResource()) {
36271      xml.enter(FHIR_NS, "resource");
36272      composeResource(element.getResource());
36273      xml.exit(FHIR_NS, "resource");
36274    }
36275    if (element.hasSearch()) {
36276      composeBundleEntrySearchComponent("search", element.getSearch());
36277    }
36278    if (element.hasRequest()) {
36279      composeBundleEntryRequestComponent("request", element.getRequest());
36280    }
36281    if (element.hasResponse()) {
36282      composeBundleEntryResponseComponent("response", element.getResponse());
36283    }
36284  }
36285
36286  protected void composeBundleEntrySearchComponent(String name, Bundle.BundleEntrySearchComponent element) throws IOException {
36287    if (element != null) {
36288    composeElementAttributes(element);
36289      xml.enter(FHIR_NS, name);
36290      composeBundleEntrySearchComponentElements(element);
36291      composeElementClose(element);
36292      xml.exit(FHIR_NS, name);
36293    }
36294  }
36295
36296  protected void composeBundleEntrySearchComponentElements(Bundle.BundleEntrySearchComponent element) throws IOException {
36297    composeBackboneElementElements(element);
36298    if (element.hasModeElement())
36299      composeEnumeration("mode", element.getModeElement(), new Bundle.SearchEntryModeEnumFactory());
36300    if (element.hasScoreElement()) {
36301      composeDecimal("score", element.getScoreElement());
36302    }
36303  }
36304
36305  protected void composeBundleEntryRequestComponent(String name, Bundle.BundleEntryRequestComponent element) throws IOException {
36306    if (element != null) {
36307    composeElementAttributes(element);
36308      xml.enter(FHIR_NS, name);
36309      composeBundleEntryRequestComponentElements(element);
36310      composeElementClose(element);
36311      xml.exit(FHIR_NS, name);
36312    }
36313  }
36314
36315  protected void composeBundleEntryRequestComponentElements(Bundle.BundleEntryRequestComponent element) throws IOException {
36316    composeBackboneElementElements(element);
36317    if (element.hasMethodElement())
36318      composeEnumeration("method", element.getMethodElement(), new Bundle.HTTPVerbEnumFactory());
36319    if (element.hasUrlElement()) {
36320      composeUri("url", element.getUrlElement());
36321    }
36322    if (element.hasIfNoneMatchElement()) {
36323      composeString("ifNoneMatch", element.getIfNoneMatchElement());
36324    }
36325    if (element.hasIfModifiedSinceElement()) {
36326      composeInstant("ifModifiedSince", element.getIfModifiedSinceElement());
36327    }
36328    if (element.hasIfMatchElement()) {
36329      composeString("ifMatch", element.getIfMatchElement());
36330    }
36331    if (element.hasIfNoneExistElement()) {
36332      composeString("ifNoneExist", element.getIfNoneExistElement());
36333    }
36334  }
36335
36336  protected void composeBundleEntryResponseComponent(String name, Bundle.BundleEntryResponseComponent element) throws IOException {
36337    if (element != null) {
36338    composeElementAttributes(element);
36339      xml.enter(FHIR_NS, name);
36340      composeBundleEntryResponseComponentElements(element);
36341      composeElementClose(element);
36342      xml.exit(FHIR_NS, name);
36343    }
36344  }
36345
36346  protected void composeBundleEntryResponseComponentElements(Bundle.BundleEntryResponseComponent element) throws IOException {
36347    composeBackboneElementElements(element);
36348    if (element.hasStatusElement()) {
36349      composeString("status", element.getStatusElement());
36350    }
36351    if (element.hasLocationElement()) {
36352      composeUri("location", element.getLocationElement());
36353    }
36354    if (element.hasEtagElement()) {
36355      composeString("etag", element.getEtagElement());
36356    }
36357    if (element.hasLastModifiedElement()) {
36358      composeInstant("lastModified", element.getLastModifiedElement());
36359    }
36360    if (element.hasOutcome()) {
36361      xml.enter(FHIR_NS, "outcome");
36362      composeResource(element.getOutcome());
36363      xml.exit(FHIR_NS, "outcome");
36364    }
36365  }
36366
36367  protected void composeCapabilityStatement(String name, CapabilityStatement element) throws IOException {
36368    if (element != null) {
36369    composeResourceAttributes(element);
36370      xml.enter(FHIR_NS, name);
36371      composeCapabilityStatementElements(element);
36372      composeElementClose(element);
36373      xml.exit(FHIR_NS, name);
36374    }
36375  }
36376
36377  protected void composeCapabilityStatementElements(CapabilityStatement element) throws IOException {
36378    composeCanonicalResourceElements(element);
36379    if (element.hasUrlElement()) {
36380      composeUri("url", element.getUrlElement());
36381    }
36382    if (element.hasIdentifier()) { 
36383      for (Identifier e : element.getIdentifier()) 
36384          composeIdentifier("identifier", e);
36385    }
36386    if (element.hasVersionElement()) {
36387      composeString("version", element.getVersionElement());
36388    }
36389    if (element.hasVersionAlgorithm()) {
36390      composeType("versionAlgorithm", element.getVersionAlgorithm());
36391    }    if (element.hasNameElement()) {
36392      composeString("name", element.getNameElement());
36393    }
36394    if (element.hasTitleElement()) {
36395      composeString("title", element.getTitleElement());
36396    }
36397    if (element.hasStatusElement())
36398      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
36399    if (element.hasExperimentalElement()) {
36400      composeBoolean("experimental", element.getExperimentalElement());
36401    }
36402    if (element.hasDateElement()) {
36403      composeDateTime("date", element.getDateElement());
36404    }
36405    if (element.hasPublisherElement()) {
36406      composeString("publisher", element.getPublisherElement());
36407    }
36408    if (element.hasContact()) { 
36409      for (ContactDetail e : element.getContact()) 
36410          composeContactDetail("contact", e);
36411    }
36412    if (element.hasDescriptionElement()) {
36413      composeMarkdown("description", element.getDescriptionElement());
36414    }
36415    if (element.hasUseContext()) { 
36416      for (UsageContext e : element.getUseContext()) 
36417          composeUsageContext("useContext", e);
36418    }
36419    if (element.hasJurisdiction()) { 
36420      for (CodeableConcept e : element.getJurisdiction()) 
36421          composeCodeableConcept("jurisdiction", e);
36422    }
36423    if (element.hasPurposeElement()) {
36424      composeMarkdown("purpose", element.getPurposeElement());
36425    }
36426    if (element.hasCopyrightElement()) {
36427      composeMarkdown("copyright", element.getCopyrightElement());
36428    }
36429    if (element.hasCopyrightLabelElement()) {
36430      composeString("copyrightLabel", element.getCopyrightLabelElement());
36431    }
36432    if (element.hasKindElement())
36433      composeEnumeration("kind", element.getKindElement(), new Enumerations.CapabilityStatementKindEnumFactory());
36434    if (element.hasInstantiates()) { 
36435      for (CanonicalType e : element.getInstantiates()) 
36436          composeCanonical("instantiates", e);
36437    }
36438    if (element.hasImports()) { 
36439      for (CanonicalType e : element.getImports()) 
36440          composeCanonical("imports", e);
36441    }
36442    if (element.hasSoftware()) {
36443      composeCapabilityStatementSoftwareComponent("software", element.getSoftware());
36444    }
36445    if (element.hasImplementation()) {
36446      composeCapabilityStatementImplementationComponent("implementation", element.getImplementation());
36447    }
36448    if (element.hasFhirVersionElement())
36449      composeEnumeration("fhirVersion", element.getFhirVersionElement(), new Enumerations.FHIRVersionEnumFactory());
36450    if (element.hasFormat()) { 
36451      for (CodeType e : element.getFormat()) 
36452          composeCode("format", e);
36453    }
36454    if (element.hasPatchFormat()) { 
36455      for (CodeType e : element.getPatchFormat()) 
36456          composeCode("patchFormat", e);
36457    }
36458    if (element.hasAcceptLanguage()) { 
36459      for (CodeType e : element.getAcceptLanguage()) 
36460          composeCode("acceptLanguage", e);
36461    }
36462    if (element.hasImplementationGuide()) { 
36463      for (CanonicalType e : element.getImplementationGuide()) 
36464          composeCanonical("implementationGuide", e);
36465    }
36466    if (element.hasRest()) { 
36467      for (CapabilityStatement.CapabilityStatementRestComponent e : element.getRest()) 
36468          composeCapabilityStatementRestComponent("rest", e);
36469    }
36470    if (element.hasMessaging()) { 
36471      for (CapabilityStatement.CapabilityStatementMessagingComponent e : element.getMessaging()) 
36472          composeCapabilityStatementMessagingComponent("messaging", e);
36473    }
36474    if (element.hasDocument()) { 
36475      for (CapabilityStatement.CapabilityStatementDocumentComponent e : element.getDocument()) 
36476          composeCapabilityStatementDocumentComponent("document", e);
36477    }
36478  }
36479
36480  protected void composeCapabilityStatementSoftwareComponent(String name, CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
36481    if (element != null) {
36482    composeElementAttributes(element);
36483      xml.enter(FHIR_NS, name);
36484      composeCapabilityStatementSoftwareComponentElements(element);
36485      composeElementClose(element);
36486      xml.exit(FHIR_NS, name);
36487    }
36488  }
36489
36490  protected void composeCapabilityStatementSoftwareComponentElements(CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
36491    composeBackboneElementElements(element);
36492    if (element.hasNameElement()) {
36493      composeString("name", element.getNameElement());
36494    }
36495    if (element.hasVersionElement()) {
36496      composeString("version", element.getVersionElement());
36497    }
36498    if (element.hasReleaseDateElement()) {
36499      composeDateTime("releaseDate", element.getReleaseDateElement());
36500    }
36501  }
36502
36503  protected void composeCapabilityStatementImplementationComponent(String name, CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
36504    if (element != null) {
36505    composeElementAttributes(element);
36506      xml.enter(FHIR_NS, name);
36507      composeCapabilityStatementImplementationComponentElements(element);
36508      composeElementClose(element);
36509      xml.exit(FHIR_NS, name);
36510    }
36511  }
36512
36513  protected void composeCapabilityStatementImplementationComponentElements(CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
36514    composeBackboneElementElements(element);
36515    if (element.hasDescriptionElement()) {
36516      composeMarkdown("description", element.getDescriptionElement());
36517    }
36518    if (element.hasUrlElement()) {
36519      composeUrl("url", element.getUrlElement());
36520    }
36521    if (element.hasCustodian()) {
36522      composeReference("custodian", element.getCustodian());
36523    }
36524  }
36525
36526  protected void composeCapabilityStatementRestComponent(String name, CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
36527    if (element != null) {
36528    composeElementAttributes(element);
36529      xml.enter(FHIR_NS, name);
36530      composeCapabilityStatementRestComponentElements(element);
36531      composeElementClose(element);
36532      xml.exit(FHIR_NS, name);
36533    }
36534  }
36535
36536  protected void composeCapabilityStatementRestComponentElements(CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
36537    composeBackboneElementElements(element);
36538    if (element.hasModeElement())
36539      composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.RestfulCapabilityModeEnumFactory());
36540    if (element.hasDocumentationElement()) {
36541      composeMarkdown("documentation", element.getDocumentationElement());
36542    }
36543    if (element.hasSecurity()) {
36544      composeCapabilityStatementRestSecurityComponent("security", element.getSecurity());
36545    }
36546    if (element.hasResource()) { 
36547      for (CapabilityStatement.CapabilityStatementRestResourceComponent e : element.getResource()) 
36548          composeCapabilityStatementRestResourceComponent("resource", e);
36549    }
36550    if (element.hasInteraction()) { 
36551      for (CapabilityStatement.SystemInteractionComponent e : element.getInteraction()) 
36552          composeCapabilityStatementSystemInteractionComponent("interaction", e);
36553    }
36554    if (element.hasSearchParam()) { 
36555      for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
36556          composeCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
36557    }
36558    if (element.hasOperation()) { 
36559      for (CapabilityStatement.CapabilityStatementRestResourceOperationComponent e : element.getOperation()) 
36560          composeCapabilityStatementRestResourceOperationComponent("operation", e);
36561    }
36562    if (element.hasCompartment()) { 
36563      for (CanonicalType e : element.getCompartment()) 
36564          composeCanonical("compartment", e);
36565    }
36566  }
36567
36568  protected void composeCapabilityStatementRestSecurityComponent(String name, CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
36569    if (element != null) {
36570    composeElementAttributes(element);
36571      xml.enter(FHIR_NS, name);
36572      composeCapabilityStatementRestSecurityComponentElements(element);
36573      composeElementClose(element);
36574      xml.exit(FHIR_NS, name);
36575    }
36576  }
36577
36578  protected void composeCapabilityStatementRestSecurityComponentElements(CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
36579    composeBackboneElementElements(element);
36580    if (element.hasCorsElement()) {
36581      composeBoolean("cors", element.getCorsElement());
36582    }
36583    if (element.hasService()) { 
36584      for (CodeableConcept e : element.getService()) 
36585          composeCodeableConcept("service", e);
36586    }
36587    if (element.hasDescriptionElement()) {
36588      composeMarkdown("description", element.getDescriptionElement());
36589    }
36590  }
36591
36592  protected void composeCapabilityStatementRestResourceComponent(String name, CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
36593    if (element != null) {
36594    composeElementAttributes(element);
36595      xml.enter(FHIR_NS, name);
36596      composeCapabilityStatementRestResourceComponentElements(element);
36597      composeElementClose(element);
36598      xml.exit(FHIR_NS, name);
36599    }
36600  }
36601
36602  protected void composeCapabilityStatementRestResourceComponentElements(CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
36603    composeBackboneElementElements(element);
36604    if (element.hasTypeElement()) {
36605      composeCode("type", element.getTypeElement());
36606    }
36607    if (element.hasProfileElement()) {
36608      composeCanonical("profile", element.getProfileElement());
36609    }
36610    if (element.hasSupportedProfile()) { 
36611      for (CanonicalType e : element.getSupportedProfile()) 
36612          composeCanonical("supportedProfile", e);
36613    }
36614    if (element.hasDocumentationElement()) {
36615      composeMarkdown("documentation", element.getDocumentationElement());
36616    }
36617    if (element.hasInteraction()) { 
36618      for (CapabilityStatement.ResourceInteractionComponent e : element.getInteraction()) 
36619          composeCapabilityStatementResourceInteractionComponent("interaction", e);
36620    }
36621    if (element.hasVersioningElement())
36622      composeEnumeration("versioning", element.getVersioningElement(), new CapabilityStatement.ResourceVersionPolicyEnumFactory());
36623    if (element.hasReadHistoryElement()) {
36624      composeBoolean("readHistory", element.getReadHistoryElement());
36625    }
36626    if (element.hasUpdateCreateElement()) {
36627      composeBoolean("updateCreate", element.getUpdateCreateElement());
36628    }
36629    if (element.hasConditionalCreateElement()) {
36630      composeBoolean("conditionalCreate", element.getConditionalCreateElement());
36631    }
36632    if (element.hasConditionalReadElement())
36633      composeEnumeration("conditionalRead", element.getConditionalReadElement(), new CapabilityStatement.ConditionalReadStatusEnumFactory());
36634    if (element.hasConditionalUpdateElement()) {
36635      composeBoolean("conditionalUpdate", element.getConditionalUpdateElement());
36636    }
36637    if (element.hasConditionalPatchElement()) {
36638      composeBoolean("conditionalPatch", element.getConditionalPatchElement());
36639    }
36640    if (element.hasConditionalDeleteElement())
36641      composeEnumeration("conditionalDelete", element.getConditionalDeleteElement(), new CapabilityStatement.ConditionalDeleteStatusEnumFactory());
36642      if (element.hasReferencePolicy()) 
36643        for (Enumeration<CapabilityStatement.ReferenceHandlingPolicy> e : element.getReferencePolicy()) 
36644          composeEnumeration("referencePolicy", e, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory());
36645    if (element.hasSearchInclude()) { 
36646      for (StringType e : element.getSearchInclude()) 
36647          composeString("searchInclude", e);
36648    }
36649    if (element.hasSearchRevInclude()) { 
36650      for (StringType e : element.getSearchRevInclude()) 
36651          composeString("searchRevInclude", e);
36652    }
36653    if (element.hasSearchParam()) { 
36654      for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
36655          composeCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
36656    }
36657    if (element.hasOperation()) { 
36658      for (CapabilityStatement.CapabilityStatementRestResourceOperationComponent e : element.getOperation()) 
36659          composeCapabilityStatementRestResourceOperationComponent("operation", e);
36660    }
36661  }
36662
36663  protected void composeCapabilityStatementResourceInteractionComponent(String name, CapabilityStatement.ResourceInteractionComponent element) throws IOException {
36664    if (element != null) {
36665    composeElementAttributes(element);
36666      xml.enter(FHIR_NS, name);
36667      composeCapabilityStatementResourceInteractionComponentElements(element);
36668      composeElementClose(element);
36669      xml.exit(FHIR_NS, name);
36670    }
36671  }
36672
36673  protected void composeCapabilityStatementResourceInteractionComponentElements(CapabilityStatement.ResourceInteractionComponent element) throws IOException {
36674    composeBackboneElementElements(element);
36675    if (element.hasCodeElement())
36676      composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.TypeRestfulInteractionEnumFactory());
36677    if (element.hasDocumentationElement()) {
36678      composeMarkdown("documentation", element.getDocumentationElement());
36679    }
36680  }
36681
36682  protected void composeCapabilityStatementRestResourceSearchParamComponent(String name, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
36683    if (element != null) {
36684    composeElementAttributes(element);
36685      xml.enter(FHIR_NS, name);
36686      composeCapabilityStatementRestResourceSearchParamComponentElements(element);
36687      composeElementClose(element);
36688      xml.exit(FHIR_NS, name);
36689    }
36690  }
36691
36692  protected void composeCapabilityStatementRestResourceSearchParamComponentElements(CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
36693    composeBackboneElementElements(element);
36694    if (element.hasNameElement()) {
36695      composeString("name", element.getNameElement());
36696    }
36697    if (element.hasDefinitionElement()) {
36698      composeCanonical("definition", element.getDefinitionElement());
36699    }
36700    if (element.hasTypeElement())
36701      composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
36702    if (element.hasDocumentationElement()) {
36703      composeMarkdown("documentation", element.getDocumentationElement());
36704    }
36705  }
36706
36707  protected void composeCapabilityStatementRestResourceOperationComponent(String name, CapabilityStatement.CapabilityStatementRestResourceOperationComponent element) throws IOException {
36708    if (element != null) {
36709    composeElementAttributes(element);
36710      xml.enter(FHIR_NS, name);
36711      composeCapabilityStatementRestResourceOperationComponentElements(element);
36712      composeElementClose(element);
36713      xml.exit(FHIR_NS, name);
36714    }
36715  }
36716
36717  protected void composeCapabilityStatementRestResourceOperationComponentElements(CapabilityStatement.CapabilityStatementRestResourceOperationComponent element) throws IOException {
36718    composeBackboneElementElements(element);
36719    if (element.hasNameElement()) {
36720      composeString("name", element.getNameElement());
36721    }
36722    if (element.hasDefinitionElement()) {
36723      composeCanonical("definition", element.getDefinitionElement());
36724    }
36725    if (element.hasDocumentationElement()) {
36726      composeMarkdown("documentation", element.getDocumentationElement());
36727    }
36728  }
36729
36730  protected void composeCapabilityStatementSystemInteractionComponent(String name, CapabilityStatement.SystemInteractionComponent element) throws IOException {
36731    if (element != null) {
36732    composeElementAttributes(element);
36733      xml.enter(FHIR_NS, name);
36734      composeCapabilityStatementSystemInteractionComponentElements(element);
36735      composeElementClose(element);
36736      xml.exit(FHIR_NS, name);
36737    }
36738  }
36739
36740  protected void composeCapabilityStatementSystemInteractionComponentElements(CapabilityStatement.SystemInteractionComponent element) throws IOException {
36741    composeBackboneElementElements(element);
36742    if (element.hasCodeElement())
36743      composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.SystemRestfulInteractionEnumFactory());
36744    if (element.hasDocumentationElement()) {
36745      composeMarkdown("documentation", element.getDocumentationElement());
36746    }
36747  }
36748
36749  protected void composeCapabilityStatementMessagingComponent(String name, CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
36750    if (element != null) {
36751    composeElementAttributes(element);
36752      xml.enter(FHIR_NS, name);
36753      composeCapabilityStatementMessagingComponentElements(element);
36754      composeElementClose(element);
36755      xml.exit(FHIR_NS, name);
36756    }
36757  }
36758
36759  protected void composeCapabilityStatementMessagingComponentElements(CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
36760    composeBackboneElementElements(element);
36761    if (element.hasEndpoint()) { 
36762      for (CapabilityStatement.CapabilityStatementMessagingEndpointComponent e : element.getEndpoint()) 
36763          composeCapabilityStatementMessagingEndpointComponent("endpoint", e);
36764    }
36765    if (element.hasReliableCacheElement()) {
36766      composeUnsignedInt("reliableCache", element.getReliableCacheElement());
36767    }
36768    if (element.hasDocumentationElement()) {
36769      composeMarkdown("documentation", element.getDocumentationElement());
36770    }
36771    if (element.hasSupportedMessage()) { 
36772      for (CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent e : element.getSupportedMessage()) 
36773          composeCapabilityStatementMessagingSupportedMessageComponent("supportedMessage", e);
36774    }
36775  }
36776
36777  protected void composeCapabilityStatementMessagingEndpointComponent(String name, CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
36778    if (element != null) {
36779    composeElementAttributes(element);
36780      xml.enter(FHIR_NS, name);
36781      composeCapabilityStatementMessagingEndpointComponentElements(element);
36782      composeElementClose(element);
36783      xml.exit(FHIR_NS, name);
36784    }
36785  }
36786
36787  protected void composeCapabilityStatementMessagingEndpointComponentElements(CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
36788    composeBackboneElementElements(element);
36789    if (element.hasProtocol()) {
36790      composeCoding("protocol", element.getProtocol());
36791    }
36792    if (element.hasAddressElement()) {
36793      composeUrl("address", element.getAddressElement());
36794    }
36795  }
36796
36797  protected void composeCapabilityStatementMessagingSupportedMessageComponent(String name, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
36798    if (element != null) {
36799    composeElementAttributes(element);
36800      xml.enter(FHIR_NS, name);
36801      composeCapabilityStatementMessagingSupportedMessageComponentElements(element);
36802      composeElementClose(element);
36803      xml.exit(FHIR_NS, name);
36804    }
36805  }
36806
36807  protected void composeCapabilityStatementMessagingSupportedMessageComponentElements(CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
36808    composeBackboneElementElements(element);
36809    if (element.hasModeElement())
36810      composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.EventCapabilityModeEnumFactory());
36811    if (element.hasDefinitionElement()) {
36812      composeCanonical("definition", element.getDefinitionElement());
36813    }
36814  }
36815
36816  protected void composeCapabilityStatementDocumentComponent(String name, CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
36817    if (element != null) {
36818    composeElementAttributes(element);
36819      xml.enter(FHIR_NS, name);
36820      composeCapabilityStatementDocumentComponentElements(element);
36821      composeElementClose(element);
36822      xml.exit(FHIR_NS, name);
36823    }
36824  }
36825
36826  protected void composeCapabilityStatementDocumentComponentElements(CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
36827    composeBackboneElementElements(element);
36828    if (element.hasModeElement())
36829      composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.DocumentModeEnumFactory());
36830    if (element.hasDocumentationElement()) {
36831      composeMarkdown("documentation", element.getDocumentationElement());
36832    }
36833    if (element.hasProfileElement()) {
36834      composeCanonical("profile", element.getProfileElement());
36835    }
36836  }
36837
36838  protected void composeCarePlan(String name, CarePlan element) throws IOException {
36839    if (element != null) {
36840    composeResourceAttributes(element);
36841      xml.enter(FHIR_NS, name);
36842      composeCarePlanElements(element);
36843      composeElementClose(element);
36844      xml.exit(FHIR_NS, name);
36845    }
36846  }
36847
36848  protected void composeCarePlanElements(CarePlan element) throws IOException {
36849    composeDomainResourceElements(element);
36850    if (element.hasIdentifier()) { 
36851      for (Identifier e : element.getIdentifier()) 
36852          composeIdentifier("identifier", e);
36853    }
36854    if (element.hasInstantiatesCanonical()) { 
36855      for (CanonicalType e : element.getInstantiatesCanonical()) 
36856          composeCanonical("instantiatesCanonical", e);
36857    }
36858    if (element.hasInstantiatesUri()) { 
36859      for (UriType e : element.getInstantiatesUri()) 
36860          composeUri("instantiatesUri", e);
36861    }
36862    if (element.hasBasedOn()) { 
36863      for (Reference e : element.getBasedOn()) 
36864          composeReference("basedOn", e);
36865    }
36866    if (element.hasReplaces()) { 
36867      for (Reference e : element.getReplaces()) 
36868          composeReference("replaces", e);
36869    }
36870    if (element.hasPartOf()) { 
36871      for (Reference e : element.getPartOf()) 
36872          composeReference("partOf", e);
36873    }
36874    if (element.hasStatusElement())
36875      composeEnumeration("status", element.getStatusElement(), new Enumerations.RequestStatusEnumFactory());
36876    if (element.hasIntentElement())
36877      composeEnumeration("intent", element.getIntentElement(), new CarePlan.CarePlanIntentEnumFactory());
36878    if (element.hasCategory()) { 
36879      for (CodeableConcept e : element.getCategory()) 
36880          composeCodeableConcept("category", e);
36881    }
36882    if (element.hasTitleElement()) {
36883      composeString("title", element.getTitleElement());
36884    }
36885    if (element.hasDescriptionElement()) {
36886      composeString("description", element.getDescriptionElement());
36887    }
36888    if (element.hasSubject()) {
36889      composeReference("subject", element.getSubject());
36890    }
36891    if (element.hasEncounter()) {
36892      composeReference("encounter", element.getEncounter());
36893    }
36894    if (element.hasPeriod()) {
36895      composePeriod("period", element.getPeriod());
36896    }
36897    if (element.hasCreatedElement()) {
36898      composeDateTime("created", element.getCreatedElement());
36899    }
36900    if (element.hasCustodian()) {
36901      composeReference("custodian", element.getCustodian());
36902    }
36903    if (element.hasContributor()) { 
36904      for (Reference e : element.getContributor()) 
36905          composeReference("contributor", e);
36906    }
36907    if (element.hasCareTeam()) { 
36908      for (Reference e : element.getCareTeam()) 
36909          composeReference("careTeam", e);
36910    }
36911    if (element.hasAddresses()) { 
36912      for (CodeableReference e : element.getAddresses()) 
36913          composeCodeableReference("addresses", e);
36914    }
36915    if (element.hasSupportingInfo()) { 
36916      for (Reference e : element.getSupportingInfo()) 
36917          composeReference("supportingInfo", e);
36918    }
36919    if (element.hasGoal()) { 
36920      for (Reference e : element.getGoal()) 
36921          composeReference("goal", e);
36922    }
36923    if (element.hasActivity()) { 
36924      for (CarePlan.CarePlanActivityComponent e : element.getActivity()) 
36925          composeCarePlanActivityComponent("activity", e);
36926    }
36927    if (element.hasNote()) { 
36928      for (Annotation e : element.getNote()) 
36929          composeAnnotation("note", e);
36930    }
36931  }
36932
36933  protected void composeCarePlanActivityComponent(String name, CarePlan.CarePlanActivityComponent element) throws IOException {
36934    if (element != null) {
36935    composeElementAttributes(element);
36936      xml.enter(FHIR_NS, name);
36937      composeCarePlanActivityComponentElements(element);
36938      composeElementClose(element);
36939      xml.exit(FHIR_NS, name);
36940    }
36941  }
36942
36943  protected void composeCarePlanActivityComponentElements(CarePlan.CarePlanActivityComponent element) throws IOException {
36944    composeBackboneElementElements(element);
36945    if (element.hasPerformedActivity()) { 
36946      for (CodeableReference e : element.getPerformedActivity()) 
36947          composeCodeableReference("performedActivity", e);
36948    }
36949    if (element.hasProgress()) { 
36950      for (Annotation e : element.getProgress()) 
36951          composeAnnotation("progress", e);
36952    }
36953    if (element.hasPlannedActivityReference()) {
36954      composeReference("plannedActivityReference", element.getPlannedActivityReference());
36955    }
36956  }
36957
36958  protected void composeCareTeam(String name, CareTeam element) throws IOException {
36959    if (element != null) {
36960    composeResourceAttributes(element);
36961      xml.enter(FHIR_NS, name);
36962      composeCareTeamElements(element);
36963      composeElementClose(element);
36964      xml.exit(FHIR_NS, name);
36965    }
36966  }
36967
36968  protected void composeCareTeamElements(CareTeam element) throws IOException {
36969    composeDomainResourceElements(element);
36970    if (element.hasIdentifier()) { 
36971      for (Identifier e : element.getIdentifier()) 
36972          composeIdentifier("identifier", e);
36973    }
36974    if (element.hasStatusElement())
36975      composeEnumeration("status", element.getStatusElement(), new CareTeam.CareTeamStatusEnumFactory());
36976    if (element.hasCategory()) { 
36977      for (CodeableConcept e : element.getCategory()) 
36978          composeCodeableConcept("category", e);
36979    }
36980    if (element.hasNameElement()) {
36981      composeString("name", element.getNameElement());
36982    }
36983    if (element.hasSubject()) {
36984      composeReference("subject", element.getSubject());
36985    }
36986    if (element.hasPeriod()) {
36987      composePeriod("period", element.getPeriod());
36988    }
36989    if (element.hasParticipant()) { 
36990      for (CareTeam.CareTeamParticipantComponent e : element.getParticipant()) 
36991          composeCareTeamParticipantComponent("participant", e);
36992    }
36993    if (element.hasReason()) { 
36994      for (CodeableReference e : element.getReason()) 
36995          composeCodeableReference("reason", e);
36996    }
36997    if (element.hasManagingOrganization()) { 
36998      for (Reference e : element.getManagingOrganization()) 
36999          composeReference("managingOrganization", e);
37000    }
37001    if (element.hasTelecom()) { 
37002      for (ContactPoint e : element.getTelecom()) 
37003          composeContactPoint("telecom", e);
37004    }
37005    if (element.hasNote()) { 
37006      for (Annotation e : element.getNote()) 
37007          composeAnnotation("note", e);
37008    }
37009  }
37010
37011  protected void composeCareTeamParticipantComponent(String name, CareTeam.CareTeamParticipantComponent element) throws IOException {
37012    if (element != null) {
37013    composeElementAttributes(element);
37014      xml.enter(FHIR_NS, name);
37015      composeCareTeamParticipantComponentElements(element);
37016      composeElementClose(element);
37017      xml.exit(FHIR_NS, name);
37018    }
37019  }
37020
37021  protected void composeCareTeamParticipantComponentElements(CareTeam.CareTeamParticipantComponent element) throws IOException {
37022    composeBackboneElementElements(element);
37023    if (element.hasRole()) {
37024      composeCodeableConcept("role", element.getRole());
37025    }
37026    if (element.hasMember()) {
37027      composeReference("member", element.getMember());
37028    }
37029    if (element.hasOnBehalfOf()) {
37030      composeReference("onBehalfOf", element.getOnBehalfOf());
37031    }
37032    if (element.hasCoverage()) {
37033      composeType("coverage", element.getCoverage());
37034    }  }
37035
37036  protected void composeChargeItem(String name, ChargeItem element) throws IOException {
37037    if (element != null) {
37038    composeResourceAttributes(element);
37039      xml.enter(FHIR_NS, name);
37040      composeChargeItemElements(element);
37041      composeElementClose(element);
37042      xml.exit(FHIR_NS, name);
37043    }
37044  }
37045
37046  protected void composeChargeItemElements(ChargeItem element) throws IOException {
37047    composeDomainResourceElements(element);
37048    if (element.hasIdentifier()) { 
37049      for (Identifier e : element.getIdentifier()) 
37050          composeIdentifier("identifier", e);
37051    }
37052    if (element.hasDefinitionUri()) { 
37053      for (UriType e : element.getDefinitionUri()) 
37054          composeUri("definitionUri", e);
37055    }
37056    if (element.hasDefinitionCanonical()) { 
37057      for (CanonicalType e : element.getDefinitionCanonical()) 
37058          composeCanonical("definitionCanonical", e);
37059    }
37060    if (element.hasStatusElement())
37061      composeEnumeration("status", element.getStatusElement(), new ChargeItem.ChargeItemStatusEnumFactory());
37062    if (element.hasPartOf()) { 
37063      for (Reference e : element.getPartOf()) 
37064          composeReference("partOf", e);
37065    }
37066    if (element.hasCode()) {
37067      composeCodeableConcept("code", element.getCode());
37068    }
37069    if (element.hasSubject()) {
37070      composeReference("subject", element.getSubject());
37071    }
37072    if (element.hasEncounter()) {
37073      composeReference("encounter", element.getEncounter());
37074    }
37075    if (element.hasOccurrence()) {
37076      composeType("occurrence", element.getOccurrence());
37077    }    if (element.hasPerformer()) { 
37078      for (ChargeItem.ChargeItemPerformerComponent e : element.getPerformer()) 
37079          composeChargeItemPerformerComponent("performer", e);
37080    }
37081    if (element.hasPerformingOrganization()) {
37082      composeReference("performingOrganization", element.getPerformingOrganization());
37083    }
37084    if (element.hasRequestingOrganization()) {
37085      composeReference("requestingOrganization", element.getRequestingOrganization());
37086    }
37087    if (element.hasCostCenter()) {
37088      composeReference("costCenter", element.getCostCenter());
37089    }
37090    if (element.hasQuantity()) {
37091      composeQuantity("quantity", element.getQuantity());
37092    }
37093    if (element.hasBodysite()) { 
37094      for (CodeableConcept e : element.getBodysite()) 
37095          composeCodeableConcept("bodysite", e);
37096    }
37097    if (element.hasUnitPriceComponent()) {
37098      composeMonetaryComponent("unitPriceComponent", element.getUnitPriceComponent());
37099    }
37100    if (element.hasTotalPriceComponent()) {
37101      composeMonetaryComponent("totalPriceComponent", element.getTotalPriceComponent());
37102    }
37103    if (element.hasOverrideReason()) {
37104      composeCodeableConcept("overrideReason", element.getOverrideReason());
37105    }
37106    if (element.hasEnterer()) {
37107      composeReference("enterer", element.getEnterer());
37108    }
37109    if (element.hasEnteredDateElement()) {
37110      composeDateTime("enteredDate", element.getEnteredDateElement());
37111    }
37112    if (element.hasReason()) { 
37113      for (CodeableConcept e : element.getReason()) 
37114          composeCodeableConcept("reason", e);
37115    }
37116    if (element.hasService()) { 
37117      for (CodeableReference e : element.getService()) 
37118          composeCodeableReference("service", e);
37119    }
37120    if (element.hasProduct()) { 
37121      for (CodeableReference e : element.getProduct()) 
37122          composeCodeableReference("product", e);
37123    }
37124    if (element.hasAccount()) { 
37125      for (Reference e : element.getAccount()) 
37126          composeReference("account", e);
37127    }
37128    if (element.hasNote()) { 
37129      for (Annotation e : element.getNote()) 
37130          composeAnnotation("note", e);
37131    }
37132    if (element.hasSupportingInformation()) { 
37133      for (Reference e : element.getSupportingInformation()) 
37134          composeReference("supportingInformation", e);
37135    }
37136  }
37137
37138  protected void composeChargeItemPerformerComponent(String name, ChargeItem.ChargeItemPerformerComponent element) throws IOException {
37139    if (element != null) {
37140    composeElementAttributes(element);
37141      xml.enter(FHIR_NS, name);
37142      composeChargeItemPerformerComponentElements(element);
37143      composeElementClose(element);
37144      xml.exit(FHIR_NS, name);
37145    }
37146  }
37147
37148  protected void composeChargeItemPerformerComponentElements(ChargeItem.ChargeItemPerformerComponent element) throws IOException {
37149    composeBackboneElementElements(element);
37150    if (element.hasFunction()) {
37151      composeCodeableConcept("function", element.getFunction());
37152    }
37153    if (element.hasActor()) {
37154      composeReference("actor", element.getActor());
37155    }
37156  }
37157
37158  protected void composeChargeItemDefinition(String name, ChargeItemDefinition element) throws IOException {
37159    if (element != null) {
37160    composeResourceAttributes(element);
37161      xml.enter(FHIR_NS, name);
37162      composeChargeItemDefinitionElements(element);
37163      composeElementClose(element);
37164      xml.exit(FHIR_NS, name);
37165    }
37166  }
37167
37168  protected void composeChargeItemDefinitionElements(ChargeItemDefinition element) throws IOException {
37169    composeMetadataResourceElements(element);
37170    if (element.hasUrlElement()) {
37171      composeUri("url", element.getUrlElement());
37172    }
37173    if (element.hasIdentifier()) { 
37174      for (Identifier e : element.getIdentifier()) 
37175          composeIdentifier("identifier", e);
37176    }
37177    if (element.hasVersionElement()) {
37178      composeString("version", element.getVersionElement());
37179    }
37180    if (element.hasVersionAlgorithm()) {
37181      composeType("versionAlgorithm", element.getVersionAlgorithm());
37182    }    if (element.hasNameElement()) {
37183      composeString("name", element.getNameElement());
37184    }
37185    if (element.hasTitleElement()) {
37186      composeString("title", element.getTitleElement());
37187    }
37188    if (element.hasDerivedFromUri()) { 
37189      for (UriType e : element.getDerivedFromUri()) 
37190          composeUri("derivedFromUri", e);
37191    }
37192    if (element.hasPartOf()) { 
37193      for (CanonicalType e : element.getPartOf()) 
37194          composeCanonical("partOf", e);
37195    }
37196    if (element.hasReplaces()) { 
37197      for (CanonicalType e : element.getReplaces()) 
37198          composeCanonical("replaces", e);
37199    }
37200    if (element.hasStatusElement())
37201      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
37202    if (element.hasExperimentalElement()) {
37203      composeBoolean("experimental", element.getExperimentalElement());
37204    }
37205    if (element.hasDateElement()) {
37206      composeDateTime("date", element.getDateElement());
37207    }
37208    if (element.hasPublisherElement()) {
37209      composeString("publisher", element.getPublisherElement());
37210    }
37211    if (element.hasContact()) { 
37212      for (ContactDetail e : element.getContact()) 
37213          composeContactDetail("contact", e);
37214    }
37215    if (element.hasDescriptionElement()) {
37216      composeMarkdown("description", element.getDescriptionElement());
37217    }
37218    if (element.hasUseContext()) { 
37219      for (UsageContext e : element.getUseContext()) 
37220          composeUsageContext("useContext", e);
37221    }
37222    if (element.hasJurisdiction()) { 
37223      for (CodeableConcept e : element.getJurisdiction()) 
37224          composeCodeableConcept("jurisdiction", e);
37225    }
37226    if (element.hasPurposeElement()) {
37227      composeMarkdown("purpose", element.getPurposeElement());
37228    }
37229    if (element.hasCopyrightElement()) {
37230      composeMarkdown("copyright", element.getCopyrightElement());
37231    }
37232    if (element.hasCopyrightLabelElement()) {
37233      composeString("copyrightLabel", element.getCopyrightLabelElement());
37234    }
37235    if (element.hasApprovalDateElement()) {
37236      composeDate("approvalDate", element.getApprovalDateElement());
37237    }
37238    if (element.hasLastReviewDateElement()) {
37239      composeDate("lastReviewDate", element.getLastReviewDateElement());
37240    }
37241    if (element.hasCode()) {
37242      composeCodeableConcept("code", element.getCode());
37243    }
37244    if (element.hasInstance()) { 
37245      for (Reference e : element.getInstance()) 
37246          composeReference("instance", e);
37247    }
37248    if (element.hasApplicability()) { 
37249      for (ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent e : element.getApplicability()) 
37250          composeChargeItemDefinitionApplicabilityComponent("applicability", e);
37251    }
37252    if (element.hasPropertyGroup()) { 
37253      for (ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent e : element.getPropertyGroup()) 
37254          composeChargeItemDefinitionPropertyGroupComponent("propertyGroup", e);
37255    }
37256  }
37257
37258  protected void composeChargeItemDefinitionApplicabilityComponent(String name, ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent element) throws IOException {
37259    if (element != null) {
37260    composeElementAttributes(element);
37261      xml.enter(FHIR_NS, name);
37262      composeChargeItemDefinitionApplicabilityComponentElements(element);
37263      composeElementClose(element);
37264      xml.exit(FHIR_NS, name);
37265    }
37266  }
37267
37268  protected void composeChargeItemDefinitionApplicabilityComponentElements(ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent element) throws IOException {
37269    composeBackboneElementElements(element);
37270    if (element.hasCondition()) {
37271      composeExpression("condition", element.getCondition());
37272    }
37273    if (element.hasEffectivePeriod()) {
37274      composePeriod("effectivePeriod", element.getEffectivePeriod());
37275    }
37276    if (element.hasRelatedArtifact()) {
37277      composeRelatedArtifact("relatedArtifact", element.getRelatedArtifact());
37278    }
37279  }
37280
37281  protected void composeChargeItemDefinitionPropertyGroupComponent(String name, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent element) throws IOException {
37282    if (element != null) {
37283    composeElementAttributes(element);
37284      xml.enter(FHIR_NS, name);
37285      composeChargeItemDefinitionPropertyGroupComponentElements(element);
37286      composeElementClose(element);
37287      xml.exit(FHIR_NS, name);
37288    }
37289  }
37290
37291  protected void composeChargeItemDefinitionPropertyGroupComponentElements(ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent element) throws IOException {
37292    composeBackboneElementElements(element);
37293    if (element.hasApplicability()) { 
37294      for (ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent e : element.getApplicability()) 
37295          composeChargeItemDefinitionApplicabilityComponent("applicability", e);
37296    }
37297    if (element.hasPriceComponent()) { 
37298      for (MonetaryComponent e : element.getPriceComponent()) 
37299          composeMonetaryComponent("priceComponent", e);
37300    }
37301  }
37302
37303  protected void composeCitation(String name, Citation element) throws IOException {
37304    if (element != null) {
37305    composeResourceAttributes(element);
37306      xml.enter(FHIR_NS, name);
37307      composeCitationElements(element);
37308      composeElementClose(element);
37309      xml.exit(FHIR_NS, name);
37310    }
37311  }
37312
37313  protected void composeCitationElements(Citation element) throws IOException {
37314    composeMetadataResourceElements(element);
37315    if (element.hasUrlElement()) {
37316      composeUri("url", element.getUrlElement());
37317    }
37318    if (element.hasIdentifier()) { 
37319      for (Identifier e : element.getIdentifier()) 
37320          composeIdentifier("identifier", e);
37321    }
37322    if (element.hasVersionElement()) {
37323      composeString("version", element.getVersionElement());
37324    }
37325    if (element.hasVersionAlgorithm()) {
37326      composeType("versionAlgorithm", element.getVersionAlgorithm());
37327    }    if (element.hasNameElement()) {
37328      composeString("name", element.getNameElement());
37329    }
37330    if (element.hasTitleElement()) {
37331      composeString("title", element.getTitleElement());
37332    }
37333    if (element.hasStatusElement())
37334      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
37335    if (element.hasExperimentalElement()) {
37336      composeBoolean("experimental", element.getExperimentalElement());
37337    }
37338    if (element.hasDateElement()) {
37339      composeDateTime("date", element.getDateElement());
37340    }
37341    if (element.hasPublisherElement()) {
37342      composeString("publisher", element.getPublisherElement());
37343    }
37344    if (element.hasContact()) { 
37345      for (ContactDetail e : element.getContact()) 
37346          composeContactDetail("contact", e);
37347    }
37348    if (element.hasDescriptionElement()) {
37349      composeMarkdown("description", element.getDescriptionElement());
37350    }
37351    if (element.hasUseContext()) { 
37352      for (UsageContext e : element.getUseContext()) 
37353          composeUsageContext("useContext", e);
37354    }
37355    if (element.hasJurisdiction()) { 
37356      for (CodeableConcept e : element.getJurisdiction()) 
37357          composeCodeableConcept("jurisdiction", e);
37358    }
37359    if (element.hasPurposeElement()) {
37360      composeMarkdown("purpose", element.getPurposeElement());
37361    }
37362    if (element.hasCopyrightElement()) {
37363      composeMarkdown("copyright", element.getCopyrightElement());
37364    }
37365    if (element.hasCopyrightLabelElement()) {
37366      composeString("copyrightLabel", element.getCopyrightLabelElement());
37367    }
37368    if (element.hasApprovalDateElement()) {
37369      composeDate("approvalDate", element.getApprovalDateElement());
37370    }
37371    if (element.hasLastReviewDateElement()) {
37372      composeDate("lastReviewDate", element.getLastReviewDateElement());
37373    }
37374    if (element.hasEffectivePeriod()) {
37375      composePeriod("effectivePeriod", element.getEffectivePeriod());
37376    }
37377    if (element.hasAuthor()) { 
37378      for (ContactDetail e : element.getAuthor()) 
37379          composeContactDetail("author", e);
37380    }
37381    if (element.hasEditor()) { 
37382      for (ContactDetail e : element.getEditor()) 
37383          composeContactDetail("editor", e);
37384    }
37385    if (element.hasReviewer()) { 
37386      for (ContactDetail e : element.getReviewer()) 
37387          composeContactDetail("reviewer", e);
37388    }
37389    if (element.hasEndorser()) { 
37390      for (ContactDetail e : element.getEndorser()) 
37391          composeContactDetail("endorser", e);
37392    }
37393    if (element.hasSummary()) { 
37394      for (Citation.CitationSummaryComponent e : element.getSummary()) 
37395          composeCitationSummaryComponent("summary", e);
37396    }
37397    if (element.hasClassification()) { 
37398      for (Citation.CitationClassificationComponent e : element.getClassification()) 
37399          composeCitationClassificationComponent("classification", e);
37400    }
37401    if (element.hasNote()) { 
37402      for (Annotation e : element.getNote()) 
37403          composeAnnotation("note", e);
37404    }
37405    if (element.hasCurrentState()) { 
37406      for (CodeableConcept e : element.getCurrentState()) 
37407          composeCodeableConcept("currentState", e);
37408    }
37409    if (element.hasStatusDate()) { 
37410      for (Citation.CitationStatusDateComponent e : element.getStatusDate()) 
37411          composeCitationStatusDateComponent("statusDate", e);
37412    }
37413    if (element.hasRelatedArtifact()) { 
37414      for (RelatedArtifact e : element.getRelatedArtifact()) 
37415          composeRelatedArtifact("relatedArtifact", e);
37416    }
37417    if (element.hasCitedArtifact()) {
37418      composeCitationCitedArtifactComponent("citedArtifact", element.getCitedArtifact());
37419    }
37420  }
37421
37422  protected void composeCitationSummaryComponent(String name, Citation.CitationSummaryComponent element) throws IOException {
37423    if (element != null) {
37424    composeElementAttributes(element);
37425      xml.enter(FHIR_NS, name);
37426      composeCitationSummaryComponentElements(element);
37427      composeElementClose(element);
37428      xml.exit(FHIR_NS, name);
37429    }
37430  }
37431
37432  protected void composeCitationSummaryComponentElements(Citation.CitationSummaryComponent element) throws IOException {
37433    composeBackboneElementElements(element);
37434    if (element.hasStyle()) {
37435      composeCodeableConcept("style", element.getStyle());
37436    }
37437    if (element.hasTextElement()) {
37438      composeMarkdown("text", element.getTextElement());
37439    }
37440  }
37441
37442  protected void composeCitationClassificationComponent(String name, Citation.CitationClassificationComponent element) throws IOException {
37443    if (element != null) {
37444    composeElementAttributes(element);
37445      xml.enter(FHIR_NS, name);
37446      composeCitationClassificationComponentElements(element);
37447      composeElementClose(element);
37448      xml.exit(FHIR_NS, name);
37449    }
37450  }
37451
37452  protected void composeCitationClassificationComponentElements(Citation.CitationClassificationComponent element) throws IOException {
37453    composeBackboneElementElements(element);
37454    if (element.hasType()) {
37455      composeCodeableConcept("type", element.getType());
37456    }
37457    if (element.hasClassifier()) { 
37458      for (CodeableConcept e : element.getClassifier()) 
37459          composeCodeableConcept("classifier", e);
37460    }
37461  }
37462
37463  protected void composeCitationStatusDateComponent(String name, Citation.CitationStatusDateComponent element) throws IOException {
37464    if (element != null) {
37465    composeElementAttributes(element);
37466      xml.enter(FHIR_NS, name);
37467      composeCitationStatusDateComponentElements(element);
37468      composeElementClose(element);
37469      xml.exit(FHIR_NS, name);
37470    }
37471  }
37472
37473  protected void composeCitationStatusDateComponentElements(Citation.CitationStatusDateComponent element) throws IOException {
37474    composeBackboneElementElements(element);
37475    if (element.hasActivity()) {
37476      composeCodeableConcept("activity", element.getActivity());
37477    }
37478    if (element.hasActualElement()) {
37479      composeBoolean("actual", element.getActualElement());
37480    }
37481    if (element.hasPeriod()) {
37482      composePeriod("period", element.getPeriod());
37483    }
37484  }
37485
37486  protected void composeCitationCitedArtifactComponent(String name, Citation.CitationCitedArtifactComponent element) throws IOException {
37487    if (element != null) {
37488    composeElementAttributes(element);
37489      xml.enter(FHIR_NS, name);
37490      composeCitationCitedArtifactComponentElements(element);
37491      composeElementClose(element);
37492      xml.exit(FHIR_NS, name);
37493    }
37494  }
37495
37496  protected void composeCitationCitedArtifactComponentElements(Citation.CitationCitedArtifactComponent element) throws IOException {
37497    composeBackboneElementElements(element);
37498    if (element.hasIdentifier()) { 
37499      for (Identifier e : element.getIdentifier()) 
37500          composeIdentifier("identifier", e);
37501    }
37502    if (element.hasRelatedIdentifier()) { 
37503      for (Identifier e : element.getRelatedIdentifier()) 
37504          composeIdentifier("relatedIdentifier", e);
37505    }
37506    if (element.hasDateAccessedElement()) {
37507      composeDateTime("dateAccessed", element.getDateAccessedElement());
37508    }
37509    if (element.hasVersion()) {
37510      composeCitationCitedArtifactVersionComponent("version", element.getVersion());
37511    }
37512    if (element.hasCurrentState()) { 
37513      for (CodeableConcept e : element.getCurrentState()) 
37514          composeCodeableConcept("currentState", e);
37515    }
37516    if (element.hasStatusDate()) { 
37517      for (Citation.CitationCitedArtifactStatusDateComponent e : element.getStatusDate()) 
37518          composeCitationCitedArtifactStatusDateComponent("statusDate", e);
37519    }
37520    if (element.hasTitle()) { 
37521      for (Citation.CitationCitedArtifactTitleComponent e : element.getTitle()) 
37522          composeCitationCitedArtifactTitleComponent("title", e);
37523    }
37524    if (element.hasAbstract()) { 
37525      for (Citation.CitationCitedArtifactAbstractComponent e : element.getAbstract()) 
37526          composeCitationCitedArtifactAbstractComponent("abstract", e);
37527    }
37528    if (element.hasPart()) {
37529      composeCitationCitedArtifactPartComponent("part", element.getPart());
37530    }
37531    if (element.hasRelatesTo()) { 
37532      for (Citation.CitationCitedArtifactRelatesToComponent e : element.getRelatesTo()) 
37533          composeCitationCitedArtifactRelatesToComponent("relatesTo", e);
37534    }
37535    if (element.hasPublicationForm()) { 
37536      for (Citation.CitationCitedArtifactPublicationFormComponent e : element.getPublicationForm()) 
37537          composeCitationCitedArtifactPublicationFormComponent("publicationForm", e);
37538    }
37539    if (element.hasWebLocation()) { 
37540      for (Citation.CitationCitedArtifactWebLocationComponent e : element.getWebLocation()) 
37541          composeCitationCitedArtifactWebLocationComponent("webLocation", e);
37542    }
37543    if (element.hasClassification()) { 
37544      for (Citation.CitationCitedArtifactClassificationComponent e : element.getClassification()) 
37545          composeCitationCitedArtifactClassificationComponent("classification", e);
37546    }
37547    if (element.hasContributorship()) {
37548      composeCitationCitedArtifactContributorshipComponent("contributorship", element.getContributorship());
37549    }
37550    if (element.hasNote()) { 
37551      for (Annotation e : element.getNote()) 
37552          composeAnnotation("note", e);
37553    }
37554  }
37555
37556  protected void composeCitationCitedArtifactVersionComponent(String name, Citation.CitationCitedArtifactVersionComponent element) throws IOException {
37557    if (element != null) {
37558    composeElementAttributes(element);
37559      xml.enter(FHIR_NS, name);
37560      composeCitationCitedArtifactVersionComponentElements(element);
37561      composeElementClose(element);
37562      xml.exit(FHIR_NS, name);
37563    }
37564  }
37565
37566  protected void composeCitationCitedArtifactVersionComponentElements(Citation.CitationCitedArtifactVersionComponent element) throws IOException {
37567    composeBackboneElementElements(element);
37568    if (element.hasValueElement()) {
37569      composeString("value", element.getValueElement());
37570    }
37571    if (element.hasBaseCitation()) {
37572      composeReference("baseCitation", element.getBaseCitation());
37573    }
37574  }
37575
37576  protected void composeCitationCitedArtifactStatusDateComponent(String name, Citation.CitationCitedArtifactStatusDateComponent element) throws IOException {
37577    if (element != null) {
37578    composeElementAttributes(element);
37579      xml.enter(FHIR_NS, name);
37580      composeCitationCitedArtifactStatusDateComponentElements(element);
37581      composeElementClose(element);
37582      xml.exit(FHIR_NS, name);
37583    }
37584  }
37585
37586  protected void composeCitationCitedArtifactStatusDateComponentElements(Citation.CitationCitedArtifactStatusDateComponent element) throws IOException {
37587    composeBackboneElementElements(element);
37588    if (element.hasActivity()) {
37589      composeCodeableConcept("activity", element.getActivity());
37590    }
37591    if (element.hasActualElement()) {
37592      composeBoolean("actual", element.getActualElement());
37593    }
37594    if (element.hasPeriod()) {
37595      composePeriod("period", element.getPeriod());
37596    }
37597  }
37598
37599  protected void composeCitationCitedArtifactTitleComponent(String name, Citation.CitationCitedArtifactTitleComponent element) throws IOException {
37600    if (element != null) {
37601    composeElementAttributes(element);
37602      xml.enter(FHIR_NS, name);
37603      composeCitationCitedArtifactTitleComponentElements(element);
37604      composeElementClose(element);
37605      xml.exit(FHIR_NS, name);
37606    }
37607  }
37608
37609  protected void composeCitationCitedArtifactTitleComponentElements(Citation.CitationCitedArtifactTitleComponent element) throws IOException {
37610    composeBackboneElementElements(element);
37611    if (element.hasType()) { 
37612      for (CodeableConcept e : element.getType()) 
37613          composeCodeableConcept("type", e);
37614    }
37615    if (element.hasLanguage()) {
37616      composeCodeableConcept("language", element.getLanguage());
37617    }
37618    if (element.hasTextElement()) {
37619      composeMarkdown("text", element.getTextElement());
37620    }
37621  }
37622
37623  protected void composeCitationCitedArtifactAbstractComponent(String name, Citation.CitationCitedArtifactAbstractComponent element) throws IOException {
37624    if (element != null) {
37625    composeElementAttributes(element);
37626      xml.enter(FHIR_NS, name);
37627      composeCitationCitedArtifactAbstractComponentElements(element);
37628      composeElementClose(element);
37629      xml.exit(FHIR_NS, name);
37630    }
37631  }
37632
37633  protected void composeCitationCitedArtifactAbstractComponentElements(Citation.CitationCitedArtifactAbstractComponent element) throws IOException {
37634    composeBackboneElementElements(element);
37635    if (element.hasType()) {
37636      composeCodeableConcept("type", element.getType());
37637    }
37638    if (element.hasLanguage()) {
37639      composeCodeableConcept("language", element.getLanguage());
37640    }
37641    if (element.hasTextElement()) {
37642      composeMarkdown("text", element.getTextElement());
37643    }
37644    if (element.hasCopyrightElement()) {
37645      composeMarkdown("copyright", element.getCopyrightElement());
37646    }
37647  }
37648
37649  protected void composeCitationCitedArtifactPartComponent(String name, Citation.CitationCitedArtifactPartComponent element) throws IOException {
37650    if (element != null) {
37651    composeElementAttributes(element);
37652      xml.enter(FHIR_NS, name);
37653      composeCitationCitedArtifactPartComponentElements(element);
37654      composeElementClose(element);
37655      xml.exit(FHIR_NS, name);
37656    }
37657  }
37658
37659  protected void composeCitationCitedArtifactPartComponentElements(Citation.CitationCitedArtifactPartComponent element) throws IOException {
37660    composeBackboneElementElements(element);
37661    if (element.hasType()) {
37662      composeCodeableConcept("type", element.getType());
37663    }
37664    if (element.hasValueElement()) {
37665      composeString("value", element.getValueElement());
37666    }
37667    if (element.hasBaseCitation()) {
37668      composeReference("baseCitation", element.getBaseCitation());
37669    }
37670  }
37671
37672  protected void composeCitationCitedArtifactRelatesToComponent(String name, Citation.CitationCitedArtifactRelatesToComponent element) throws IOException {
37673    if (element != null) {
37674    composeElementAttributes(element);
37675      xml.enter(FHIR_NS, name);
37676      composeCitationCitedArtifactRelatesToComponentElements(element);
37677      composeElementClose(element);
37678      xml.exit(FHIR_NS, name);
37679    }
37680  }
37681
37682  protected void composeCitationCitedArtifactRelatesToComponentElements(Citation.CitationCitedArtifactRelatesToComponent element) throws IOException {
37683    composeBackboneElementElements(element);
37684    if (element.hasTypeElement())
37685      composeEnumeration("type", element.getTypeElement(), new Citation.RelatedArtifactTypeExpandedEnumFactory());
37686    if (element.hasClassifier()) { 
37687      for (CodeableConcept e : element.getClassifier()) 
37688          composeCodeableConcept("classifier", e);
37689    }
37690    if (element.hasLabelElement()) {
37691      composeString("label", element.getLabelElement());
37692    }
37693    if (element.hasDisplayElement()) {
37694      composeString("display", element.getDisplayElement());
37695    }
37696    if (element.hasCitationElement()) {
37697      composeMarkdown("citation", element.getCitationElement());
37698    }
37699    if (element.hasDocument()) {
37700      composeAttachment("document", element.getDocument());
37701    }
37702    if (element.hasResourceElement()) {
37703      composeCanonical("resource", element.getResourceElement());
37704    }
37705    if (element.hasResourceReference()) {
37706      composeReference("resourceReference", element.getResourceReference());
37707    }
37708  }
37709
37710  protected void composeCitationCitedArtifactPublicationFormComponent(String name, Citation.CitationCitedArtifactPublicationFormComponent element) throws IOException {
37711    if (element != null) {
37712    composeElementAttributes(element);
37713      xml.enter(FHIR_NS, name);
37714      composeCitationCitedArtifactPublicationFormComponentElements(element);
37715      composeElementClose(element);
37716      xml.exit(FHIR_NS, name);
37717    }
37718  }
37719
37720  protected void composeCitationCitedArtifactPublicationFormComponentElements(Citation.CitationCitedArtifactPublicationFormComponent element) throws IOException {
37721    composeBackboneElementElements(element);
37722    if (element.hasPublishedIn()) {
37723      composeCitationCitedArtifactPublicationFormPublishedInComponent("publishedIn", element.getPublishedIn());
37724    }
37725    if (element.hasCitedMedium()) {
37726      composeCodeableConcept("citedMedium", element.getCitedMedium());
37727    }
37728    if (element.hasVolumeElement()) {
37729      composeString("volume", element.getVolumeElement());
37730    }
37731    if (element.hasIssueElement()) {
37732      composeString("issue", element.getIssueElement());
37733    }
37734    if (element.hasArticleDateElement()) {
37735      composeDateTime("articleDate", element.getArticleDateElement());
37736    }
37737    if (element.hasPublicationDateTextElement()) {
37738      composeString("publicationDateText", element.getPublicationDateTextElement());
37739    }
37740    if (element.hasPublicationDateSeasonElement()) {
37741      composeString("publicationDateSeason", element.getPublicationDateSeasonElement());
37742    }
37743    if (element.hasLastRevisionDateElement()) {
37744      composeDateTime("lastRevisionDate", element.getLastRevisionDateElement());
37745    }
37746    if (element.hasLanguage()) { 
37747      for (CodeableConcept e : element.getLanguage()) 
37748          composeCodeableConcept("language", e);
37749    }
37750    if (element.hasAccessionNumberElement()) {
37751      composeString("accessionNumber", element.getAccessionNumberElement());
37752    }
37753    if (element.hasPageStringElement()) {
37754      composeString("pageString", element.getPageStringElement());
37755    }
37756    if (element.hasFirstPageElement()) {
37757      composeString("firstPage", element.getFirstPageElement());
37758    }
37759    if (element.hasLastPageElement()) {
37760      composeString("lastPage", element.getLastPageElement());
37761    }
37762    if (element.hasPageCountElement()) {
37763      composeString("pageCount", element.getPageCountElement());
37764    }
37765    if (element.hasCopyrightElement()) {
37766      composeMarkdown("copyright", element.getCopyrightElement());
37767    }
37768  }
37769
37770  protected void composeCitationCitedArtifactPublicationFormPublishedInComponent(String name, Citation.CitationCitedArtifactPublicationFormPublishedInComponent element) throws IOException {
37771    if (element != null) {
37772    composeElementAttributes(element);
37773      xml.enter(FHIR_NS, name);
37774      composeCitationCitedArtifactPublicationFormPublishedInComponentElements(element);
37775      composeElementClose(element);
37776      xml.exit(FHIR_NS, name);
37777    }
37778  }
37779
37780  protected void composeCitationCitedArtifactPublicationFormPublishedInComponentElements(Citation.CitationCitedArtifactPublicationFormPublishedInComponent element) throws IOException {
37781    composeBackboneElementElements(element);
37782    if (element.hasType()) {
37783      composeCodeableConcept("type", element.getType());
37784    }
37785    if (element.hasIdentifier()) { 
37786      for (Identifier e : element.getIdentifier()) 
37787          composeIdentifier("identifier", e);
37788    }
37789    if (element.hasTitleElement()) {
37790      composeString("title", element.getTitleElement());
37791    }
37792    if (element.hasPublisher()) {
37793      composeReference("publisher", element.getPublisher());
37794    }
37795    if (element.hasPublisherLocationElement()) {
37796      composeString("publisherLocation", element.getPublisherLocationElement());
37797    }
37798  }
37799
37800  protected void composeCitationCitedArtifactWebLocationComponent(String name, Citation.CitationCitedArtifactWebLocationComponent element) throws IOException {
37801    if (element != null) {
37802    composeElementAttributes(element);
37803      xml.enter(FHIR_NS, name);
37804      composeCitationCitedArtifactWebLocationComponentElements(element);
37805      composeElementClose(element);
37806      xml.exit(FHIR_NS, name);
37807    }
37808  }
37809
37810  protected void composeCitationCitedArtifactWebLocationComponentElements(Citation.CitationCitedArtifactWebLocationComponent element) throws IOException {
37811    composeBackboneElementElements(element);
37812    if (element.hasClassifier()) { 
37813      for (CodeableConcept e : element.getClassifier()) 
37814          composeCodeableConcept("classifier", e);
37815    }
37816    if (element.hasUrlElement()) {
37817      composeUri("url", element.getUrlElement());
37818    }
37819  }
37820
37821  protected void composeCitationCitedArtifactClassificationComponent(String name, Citation.CitationCitedArtifactClassificationComponent element) throws IOException {
37822    if (element != null) {
37823    composeElementAttributes(element);
37824      xml.enter(FHIR_NS, name);
37825      composeCitationCitedArtifactClassificationComponentElements(element);
37826      composeElementClose(element);
37827      xml.exit(FHIR_NS, name);
37828    }
37829  }
37830
37831  protected void composeCitationCitedArtifactClassificationComponentElements(Citation.CitationCitedArtifactClassificationComponent element) throws IOException {
37832    composeBackboneElementElements(element);
37833    if (element.hasType()) {
37834      composeCodeableConcept("type", element.getType());
37835    }
37836    if (element.hasClassifier()) { 
37837      for (CodeableConcept e : element.getClassifier()) 
37838          composeCodeableConcept("classifier", e);
37839    }
37840    if (element.hasArtifactAssessment()) { 
37841      for (Reference e : element.getArtifactAssessment()) 
37842          composeReference("artifactAssessment", e);
37843    }
37844  }
37845
37846  protected void composeCitationCitedArtifactContributorshipComponent(String name, Citation.CitationCitedArtifactContributorshipComponent element) throws IOException {
37847    if (element != null) {
37848    composeElementAttributes(element);
37849      xml.enter(FHIR_NS, name);
37850      composeCitationCitedArtifactContributorshipComponentElements(element);
37851      composeElementClose(element);
37852      xml.exit(FHIR_NS, name);
37853    }
37854  }
37855
37856  protected void composeCitationCitedArtifactContributorshipComponentElements(Citation.CitationCitedArtifactContributorshipComponent element) throws IOException {
37857    composeBackboneElementElements(element);
37858    if (element.hasCompleteElement()) {
37859      composeBoolean("complete", element.getCompleteElement());
37860    }
37861    if (element.hasEntry()) { 
37862      for (Citation.CitationCitedArtifactContributorshipEntryComponent e : element.getEntry()) 
37863          composeCitationCitedArtifactContributorshipEntryComponent("entry", e);
37864    }
37865    if (element.hasSummary()) { 
37866      for (Citation.ContributorshipSummaryComponent e : element.getSummary()) 
37867          composeCitationContributorshipSummaryComponent("summary", e);
37868    }
37869  }
37870
37871  protected void composeCitationCitedArtifactContributorshipEntryComponent(String name, Citation.CitationCitedArtifactContributorshipEntryComponent element) throws IOException {
37872    if (element != null) {
37873    composeElementAttributes(element);
37874      xml.enter(FHIR_NS, name);
37875      composeCitationCitedArtifactContributorshipEntryComponentElements(element);
37876      composeElementClose(element);
37877      xml.exit(FHIR_NS, name);
37878    }
37879  }
37880
37881  protected void composeCitationCitedArtifactContributorshipEntryComponentElements(Citation.CitationCitedArtifactContributorshipEntryComponent element) throws IOException {
37882    composeBackboneElementElements(element);
37883    if (element.hasContributor()) {
37884      composeReference("contributor", element.getContributor());
37885    }
37886    if (element.hasForenameInitialsElement()) {
37887      composeString("forenameInitials", element.getForenameInitialsElement());
37888    }
37889    if (element.hasAffiliation()) { 
37890      for (Reference e : element.getAffiliation()) 
37891          composeReference("affiliation", e);
37892    }
37893    if (element.hasContributionType()) { 
37894      for (CodeableConcept e : element.getContributionType()) 
37895          composeCodeableConcept("contributionType", e);
37896    }
37897    if (element.hasRole()) {
37898      composeCodeableConcept("role", element.getRole());
37899    }
37900    if (element.hasContributionInstance()) { 
37901      for (Citation.CitationCitedArtifactContributorshipEntryContributionInstanceComponent e : element.getContributionInstance()) 
37902          composeCitationCitedArtifactContributorshipEntryContributionInstanceComponent("contributionInstance", e);
37903    }
37904    if (element.hasCorrespondingContactElement()) {
37905      composeBoolean("correspondingContact", element.getCorrespondingContactElement());
37906    }
37907    if (element.hasRankingOrderElement()) {
37908      composePositiveInt("rankingOrder", element.getRankingOrderElement());
37909    }
37910  }
37911
37912  protected void composeCitationCitedArtifactContributorshipEntryContributionInstanceComponent(String name, Citation.CitationCitedArtifactContributorshipEntryContributionInstanceComponent element) throws IOException {
37913    if (element != null) {
37914    composeElementAttributes(element);
37915      xml.enter(FHIR_NS, name);
37916      composeCitationCitedArtifactContributorshipEntryContributionInstanceComponentElements(element);
37917      composeElementClose(element);
37918      xml.exit(FHIR_NS, name);
37919    }
37920  }
37921
37922  protected void composeCitationCitedArtifactContributorshipEntryContributionInstanceComponentElements(Citation.CitationCitedArtifactContributorshipEntryContributionInstanceComponent element) throws IOException {
37923    composeBackboneElementElements(element);
37924    if (element.hasType()) {
37925      composeCodeableConcept("type", element.getType());
37926    }
37927    if (element.hasTimeElement()) {
37928      composeDateTime("time", element.getTimeElement());
37929    }
37930  }
37931
37932  protected void composeCitationContributorshipSummaryComponent(String name, Citation.ContributorshipSummaryComponent element) throws IOException {
37933    if (element != null) {
37934    composeElementAttributes(element);
37935      xml.enter(FHIR_NS, name);
37936      composeCitationContributorshipSummaryComponentElements(element);
37937      composeElementClose(element);
37938      xml.exit(FHIR_NS, name);
37939    }
37940  }
37941
37942  protected void composeCitationContributorshipSummaryComponentElements(Citation.ContributorshipSummaryComponent element) throws IOException {
37943    composeBackboneElementElements(element);
37944    if (element.hasType()) {
37945      composeCodeableConcept("type", element.getType());
37946    }
37947    if (element.hasStyle()) {
37948      composeCodeableConcept("style", element.getStyle());
37949    }
37950    if (element.hasSource()) {
37951      composeCodeableConcept("source", element.getSource());
37952    }
37953    if (element.hasValueElement()) {
37954      composeMarkdown("value", element.getValueElement());
37955    }
37956  }
37957
37958  protected void composeClaim(String name, Claim element) throws IOException {
37959    if (element != null) {
37960    composeResourceAttributes(element);
37961      xml.enter(FHIR_NS, name);
37962      composeClaimElements(element);
37963      composeElementClose(element);
37964      xml.exit(FHIR_NS, name);
37965    }
37966  }
37967
37968  protected void composeClaimElements(Claim element) throws IOException {
37969    composeDomainResourceElements(element);
37970    if (element.hasIdentifier()) { 
37971      for (Identifier e : element.getIdentifier()) 
37972          composeIdentifier("identifier", e);
37973    }
37974    if (element.hasTraceNumber()) { 
37975      for (Identifier e : element.getTraceNumber()) 
37976          composeIdentifier("traceNumber", e);
37977    }
37978    if (element.hasStatusElement())
37979      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
37980    if (element.hasType()) {
37981      composeCodeableConcept("type", element.getType());
37982    }
37983    if (element.hasSubType()) {
37984      composeCodeableConcept("subType", element.getSubType());
37985    }
37986    if (element.hasUseElement())
37987      composeEnumeration("use", element.getUseElement(), new Enumerations.UseEnumFactory());
37988    if (element.hasPatient()) {
37989      composeReference("patient", element.getPatient());
37990    }
37991    if (element.hasBillablePeriod()) {
37992      composePeriod("billablePeriod", element.getBillablePeriod());
37993    }
37994    if (element.hasCreatedElement()) {
37995      composeDateTime("created", element.getCreatedElement());
37996    }
37997    if (element.hasEnterer()) {
37998      composeReference("enterer", element.getEnterer());
37999    }
38000    if (element.hasInsurer()) {
38001      composeReference("insurer", element.getInsurer());
38002    }
38003    if (element.hasProvider()) {
38004      composeReference("provider", element.getProvider());
38005    }
38006    if (element.hasPriority()) {
38007      composeCodeableConcept("priority", element.getPriority());
38008    }
38009    if (element.hasFundsReserve()) {
38010      composeCodeableConcept("fundsReserve", element.getFundsReserve());
38011    }
38012    if (element.hasRelated()) { 
38013      for (Claim.RelatedClaimComponent e : element.getRelated()) 
38014          composeClaimRelatedClaimComponent("related", e);
38015    }
38016    if (element.hasPrescription()) {
38017      composeReference("prescription", element.getPrescription());
38018    }
38019    if (element.hasOriginalPrescription()) {
38020      composeReference("originalPrescription", element.getOriginalPrescription());
38021    }
38022    if (element.hasPayee()) {
38023      composeClaimPayeeComponent("payee", element.getPayee());
38024    }
38025    if (element.hasReferral()) {
38026      composeReference("referral", element.getReferral());
38027    }
38028    if (element.hasEncounter()) { 
38029      for (Reference e : element.getEncounter()) 
38030          composeReference("encounter", e);
38031    }
38032    if (element.hasFacility()) {
38033      composeReference("facility", element.getFacility());
38034    }
38035    if (element.hasDiagnosisRelatedGroup()) {
38036      composeCodeableConcept("diagnosisRelatedGroup", element.getDiagnosisRelatedGroup());
38037    }
38038    if (element.hasEvent()) { 
38039      for (Claim.ClaimEventComponent e : element.getEvent()) 
38040          composeClaimEventComponent("event", e);
38041    }
38042    if (element.hasCareTeam()) { 
38043      for (Claim.CareTeamComponent e : element.getCareTeam()) 
38044          composeClaimCareTeamComponent("careTeam", e);
38045    }
38046    if (element.hasSupportingInfo()) { 
38047      for (Claim.SupportingInformationComponent e : element.getSupportingInfo()) 
38048          composeClaimSupportingInformationComponent("supportingInfo", e);
38049    }
38050    if (element.hasDiagnosis()) { 
38051      for (Claim.DiagnosisComponent e : element.getDiagnosis()) 
38052          composeClaimDiagnosisComponent("diagnosis", e);
38053    }
38054    if (element.hasProcedure()) { 
38055      for (Claim.ProcedureComponent e : element.getProcedure()) 
38056          composeClaimProcedureComponent("procedure", e);
38057    }
38058    if (element.hasInsurance()) { 
38059      for (Claim.InsuranceComponent e : element.getInsurance()) 
38060          composeClaimInsuranceComponent("insurance", e);
38061    }
38062    if (element.hasAccident()) {
38063      composeClaimAccidentComponent("accident", element.getAccident());
38064    }
38065    if (element.hasPatientPaid()) {
38066      composeMoney("patientPaid", element.getPatientPaid());
38067    }
38068    if (element.hasItem()) { 
38069      for (Claim.ItemComponent e : element.getItem()) 
38070          composeClaimItemComponent("item", e);
38071    }
38072    if (element.hasTotal()) {
38073      composeMoney("total", element.getTotal());
38074    }
38075  }
38076
38077  protected void composeClaimRelatedClaimComponent(String name, Claim.RelatedClaimComponent element) throws IOException {
38078    if (element != null) {
38079    composeElementAttributes(element);
38080      xml.enter(FHIR_NS, name);
38081      composeClaimRelatedClaimComponentElements(element);
38082      composeElementClose(element);
38083      xml.exit(FHIR_NS, name);
38084    }
38085  }
38086
38087  protected void composeClaimRelatedClaimComponentElements(Claim.RelatedClaimComponent element) throws IOException {
38088    composeBackboneElementElements(element);
38089    if (element.hasClaim()) {
38090      composeReference("claim", element.getClaim());
38091    }
38092    if (element.hasRelationship()) {
38093      composeCodeableConcept("relationship", element.getRelationship());
38094    }
38095    if (element.hasReference()) {
38096      composeIdentifier("reference", element.getReference());
38097    }
38098  }
38099
38100  protected void composeClaimPayeeComponent(String name, Claim.PayeeComponent element) throws IOException {
38101    if (element != null) {
38102    composeElementAttributes(element);
38103      xml.enter(FHIR_NS, name);
38104      composeClaimPayeeComponentElements(element);
38105      composeElementClose(element);
38106      xml.exit(FHIR_NS, name);
38107    }
38108  }
38109
38110  protected void composeClaimPayeeComponentElements(Claim.PayeeComponent element) throws IOException {
38111    composeBackboneElementElements(element);
38112    if (element.hasType()) {
38113      composeCodeableConcept("type", element.getType());
38114    }
38115    if (element.hasParty()) {
38116      composeReference("party", element.getParty());
38117    }
38118  }
38119
38120  protected void composeClaimEventComponent(String name, Claim.ClaimEventComponent element) throws IOException {
38121    if (element != null) {
38122    composeElementAttributes(element);
38123      xml.enter(FHIR_NS, name);
38124      composeClaimEventComponentElements(element);
38125      composeElementClose(element);
38126      xml.exit(FHIR_NS, name);
38127    }
38128  }
38129
38130  protected void composeClaimEventComponentElements(Claim.ClaimEventComponent element) throws IOException {
38131    composeBackboneElementElements(element);
38132    if (element.hasType()) {
38133      composeCodeableConcept("type", element.getType());
38134    }
38135    if (element.hasWhen()) {
38136      composeType("when", element.getWhen());
38137    }  }
38138
38139  protected void composeClaimCareTeamComponent(String name, Claim.CareTeamComponent element) throws IOException {
38140    if (element != null) {
38141    composeElementAttributes(element);
38142      xml.enter(FHIR_NS, name);
38143      composeClaimCareTeamComponentElements(element);
38144      composeElementClose(element);
38145      xml.exit(FHIR_NS, name);
38146    }
38147  }
38148
38149  protected void composeClaimCareTeamComponentElements(Claim.CareTeamComponent element) throws IOException {
38150    composeBackboneElementElements(element);
38151    if (element.hasSequenceElement()) {
38152      composePositiveInt("sequence", element.getSequenceElement());
38153    }
38154    if (element.hasProvider()) {
38155      composeReference("provider", element.getProvider());
38156    }
38157    if (element.hasResponsibleElement()) {
38158      composeBoolean("responsible", element.getResponsibleElement());
38159    }
38160    if (element.hasRole()) {
38161      composeCodeableConcept("role", element.getRole());
38162    }
38163    if (element.hasSpecialty()) {
38164      composeCodeableConcept("specialty", element.getSpecialty());
38165    }
38166  }
38167
38168  protected void composeClaimSupportingInformationComponent(String name, Claim.SupportingInformationComponent element) throws IOException {
38169    if (element != null) {
38170    composeElementAttributes(element);
38171      xml.enter(FHIR_NS, name);
38172      composeClaimSupportingInformationComponentElements(element);
38173      composeElementClose(element);
38174      xml.exit(FHIR_NS, name);
38175    }
38176  }
38177
38178  protected void composeClaimSupportingInformationComponentElements(Claim.SupportingInformationComponent element) throws IOException {
38179    composeBackboneElementElements(element);
38180    if (element.hasSequenceElement()) {
38181      composePositiveInt("sequence", element.getSequenceElement());
38182    }
38183    if (element.hasCategory()) {
38184      composeCodeableConcept("category", element.getCategory());
38185    }
38186    if (element.hasCode()) {
38187      composeCodeableConcept("code", element.getCode());
38188    }
38189    if (element.hasTiming()) {
38190      composeType("timing", element.getTiming());
38191    }    if (element.hasValue()) {
38192      composeType("value", element.getValue());
38193    }    if (element.hasReason()) {
38194      composeCodeableConcept("reason", element.getReason());
38195    }
38196  }
38197
38198  protected void composeClaimDiagnosisComponent(String name, Claim.DiagnosisComponent element) throws IOException {
38199    if (element != null) {
38200    composeElementAttributes(element);
38201      xml.enter(FHIR_NS, name);
38202      composeClaimDiagnosisComponentElements(element);
38203      composeElementClose(element);
38204      xml.exit(FHIR_NS, name);
38205    }
38206  }
38207
38208  protected void composeClaimDiagnosisComponentElements(Claim.DiagnosisComponent element) throws IOException {
38209    composeBackboneElementElements(element);
38210    if (element.hasSequenceElement()) {
38211      composePositiveInt("sequence", element.getSequenceElement());
38212    }
38213    if (element.hasDiagnosis()) {
38214      composeType("diagnosis", element.getDiagnosis());
38215    }    if (element.hasType()) { 
38216      for (CodeableConcept e : element.getType()) 
38217          composeCodeableConcept("type", e);
38218    }
38219    if (element.hasOnAdmission()) {
38220      composeCodeableConcept("onAdmission", element.getOnAdmission());
38221    }
38222  }
38223
38224  protected void composeClaimProcedureComponent(String name, Claim.ProcedureComponent element) throws IOException {
38225    if (element != null) {
38226    composeElementAttributes(element);
38227      xml.enter(FHIR_NS, name);
38228      composeClaimProcedureComponentElements(element);
38229      composeElementClose(element);
38230      xml.exit(FHIR_NS, name);
38231    }
38232  }
38233
38234  protected void composeClaimProcedureComponentElements(Claim.ProcedureComponent element) throws IOException {
38235    composeBackboneElementElements(element);
38236    if (element.hasSequenceElement()) {
38237      composePositiveInt("sequence", element.getSequenceElement());
38238    }
38239    if (element.hasType()) { 
38240      for (CodeableConcept e : element.getType()) 
38241          composeCodeableConcept("type", e);
38242    }
38243    if (element.hasDateElement()) {
38244      composeDateTime("date", element.getDateElement());
38245    }
38246    if (element.hasProcedure()) {
38247      composeType("procedure", element.getProcedure());
38248    }    if (element.hasUdi()) { 
38249      for (Reference e : element.getUdi()) 
38250          composeReference("udi", e);
38251    }
38252  }
38253
38254  protected void composeClaimInsuranceComponent(String name, Claim.InsuranceComponent element) throws IOException {
38255    if (element != null) {
38256    composeElementAttributes(element);
38257      xml.enter(FHIR_NS, name);
38258      composeClaimInsuranceComponentElements(element);
38259      composeElementClose(element);
38260      xml.exit(FHIR_NS, name);
38261    }
38262  }
38263
38264  protected void composeClaimInsuranceComponentElements(Claim.InsuranceComponent element) throws IOException {
38265    composeBackboneElementElements(element);
38266    if (element.hasSequenceElement()) {
38267      composePositiveInt("sequence", element.getSequenceElement());
38268    }
38269    if (element.hasFocalElement()) {
38270      composeBoolean("focal", element.getFocalElement());
38271    }
38272    if (element.hasIdentifier()) {
38273      composeIdentifier("identifier", element.getIdentifier());
38274    }
38275    if (element.hasCoverage()) {
38276      composeReference("coverage", element.getCoverage());
38277    }
38278    if (element.hasBusinessArrangementElement()) {
38279      composeString("businessArrangement", element.getBusinessArrangementElement());
38280    }
38281    if (element.hasPreAuthRef()) { 
38282      for (StringType e : element.getPreAuthRef()) 
38283          composeString("preAuthRef", e);
38284    }
38285    if (element.hasClaimResponse()) {
38286      composeReference("claimResponse", element.getClaimResponse());
38287    }
38288  }
38289
38290  protected void composeClaimAccidentComponent(String name, Claim.AccidentComponent element) throws IOException {
38291    if (element != null) {
38292    composeElementAttributes(element);
38293      xml.enter(FHIR_NS, name);
38294      composeClaimAccidentComponentElements(element);
38295      composeElementClose(element);
38296      xml.exit(FHIR_NS, name);
38297    }
38298  }
38299
38300  protected void composeClaimAccidentComponentElements(Claim.AccidentComponent element) throws IOException {
38301    composeBackboneElementElements(element);
38302    if (element.hasDateElement()) {
38303      composeDate("date", element.getDateElement());
38304    }
38305    if (element.hasType()) {
38306      composeCodeableConcept("type", element.getType());
38307    }
38308    if (element.hasLocation()) {
38309      composeType("location", element.getLocation());
38310    }  }
38311
38312  protected void composeClaimItemComponent(String name, Claim.ItemComponent element) throws IOException {
38313    if (element != null) {
38314    composeElementAttributes(element);
38315      xml.enter(FHIR_NS, name);
38316      composeClaimItemComponentElements(element);
38317      composeElementClose(element);
38318      xml.exit(FHIR_NS, name);
38319    }
38320  }
38321
38322  protected void composeClaimItemComponentElements(Claim.ItemComponent element) throws IOException {
38323    composeBackboneElementElements(element);
38324    if (element.hasSequenceElement()) {
38325      composePositiveInt("sequence", element.getSequenceElement());
38326    }
38327    if (element.hasTraceNumber()) { 
38328      for (Identifier e : element.getTraceNumber()) 
38329          composeIdentifier("traceNumber", e);
38330    }
38331    if (element.hasCareTeamSequence()) { 
38332      for (PositiveIntType e : element.getCareTeamSequence()) 
38333          composePositiveInt("careTeamSequence", e);
38334    }
38335    if (element.hasDiagnosisSequence()) { 
38336      for (PositiveIntType e : element.getDiagnosisSequence()) 
38337          composePositiveInt("diagnosisSequence", e);
38338    }
38339    if (element.hasProcedureSequence()) { 
38340      for (PositiveIntType e : element.getProcedureSequence()) 
38341          composePositiveInt("procedureSequence", e);
38342    }
38343    if (element.hasInformationSequence()) { 
38344      for (PositiveIntType e : element.getInformationSequence()) 
38345          composePositiveInt("informationSequence", e);
38346    }
38347    if (element.hasRevenue()) {
38348      composeCodeableConcept("revenue", element.getRevenue());
38349    }
38350    if (element.hasCategory()) {
38351      composeCodeableConcept("category", element.getCategory());
38352    }
38353    if (element.hasProductOrService()) {
38354      composeCodeableConcept("productOrService", element.getProductOrService());
38355    }
38356    if (element.hasProductOrServiceEnd()) {
38357      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
38358    }
38359    if (element.hasRequest()) { 
38360      for (Reference e : element.getRequest()) 
38361          composeReference("request", e);
38362    }
38363    if (element.hasModifier()) { 
38364      for (CodeableConcept e : element.getModifier()) 
38365          composeCodeableConcept("modifier", e);
38366    }
38367    if (element.hasProgramCode()) { 
38368      for (CodeableConcept e : element.getProgramCode()) 
38369          composeCodeableConcept("programCode", e);
38370    }
38371    if (element.hasServiced()) {
38372      composeType("serviced", element.getServiced());
38373    }    if (element.hasLocation()) {
38374      composeType("location", element.getLocation());
38375    }    if (element.hasPatientPaid()) {
38376      composeMoney("patientPaid", element.getPatientPaid());
38377    }
38378    if (element.hasQuantity()) {
38379      composeQuantity("quantity", element.getQuantity());
38380    }
38381    if (element.hasUnitPrice()) {
38382      composeMoney("unitPrice", element.getUnitPrice());
38383    }
38384    if (element.hasFactorElement()) {
38385      composeDecimal("factor", element.getFactorElement());
38386    }
38387    if (element.hasTax()) {
38388      composeMoney("tax", element.getTax());
38389    }
38390    if (element.hasNet()) {
38391      composeMoney("net", element.getNet());
38392    }
38393    if (element.hasUdi()) { 
38394      for (Reference e : element.getUdi()) 
38395          composeReference("udi", e);
38396    }
38397    if (element.hasBodySite()) { 
38398      for (Claim.BodySiteComponent e : element.getBodySite()) 
38399          composeClaimBodySiteComponent("bodySite", e);
38400    }
38401    if (element.hasEncounter()) { 
38402      for (Reference e : element.getEncounter()) 
38403          composeReference("encounter", e);
38404    }
38405    if (element.hasDetail()) { 
38406      for (Claim.DetailComponent e : element.getDetail()) 
38407          composeClaimDetailComponent("detail", e);
38408    }
38409  }
38410
38411  protected void composeClaimBodySiteComponent(String name, Claim.BodySiteComponent element) throws IOException {
38412    if (element != null) {
38413    composeElementAttributes(element);
38414      xml.enter(FHIR_NS, name);
38415      composeClaimBodySiteComponentElements(element);
38416      composeElementClose(element);
38417      xml.exit(FHIR_NS, name);
38418    }
38419  }
38420
38421  protected void composeClaimBodySiteComponentElements(Claim.BodySiteComponent element) throws IOException {
38422    composeBackboneElementElements(element);
38423    if (element.hasSite()) { 
38424      for (CodeableReference e : element.getSite()) 
38425          composeCodeableReference("site", e);
38426    }
38427    if (element.hasSubSite()) { 
38428      for (CodeableConcept e : element.getSubSite()) 
38429          composeCodeableConcept("subSite", e);
38430    }
38431  }
38432
38433  protected void composeClaimDetailComponent(String name, Claim.DetailComponent element) throws IOException {
38434    if (element != null) {
38435    composeElementAttributes(element);
38436      xml.enter(FHIR_NS, name);
38437      composeClaimDetailComponentElements(element);
38438      composeElementClose(element);
38439      xml.exit(FHIR_NS, name);
38440    }
38441  }
38442
38443  protected void composeClaimDetailComponentElements(Claim.DetailComponent element) throws IOException {
38444    composeBackboneElementElements(element);
38445    if (element.hasSequenceElement()) {
38446      composePositiveInt("sequence", element.getSequenceElement());
38447    }
38448    if (element.hasTraceNumber()) { 
38449      for (Identifier e : element.getTraceNumber()) 
38450          composeIdentifier("traceNumber", e);
38451    }
38452    if (element.hasRevenue()) {
38453      composeCodeableConcept("revenue", element.getRevenue());
38454    }
38455    if (element.hasCategory()) {
38456      composeCodeableConcept("category", element.getCategory());
38457    }
38458    if (element.hasProductOrService()) {
38459      composeCodeableConcept("productOrService", element.getProductOrService());
38460    }
38461    if (element.hasProductOrServiceEnd()) {
38462      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
38463    }
38464    if (element.hasModifier()) { 
38465      for (CodeableConcept e : element.getModifier()) 
38466          composeCodeableConcept("modifier", e);
38467    }
38468    if (element.hasProgramCode()) { 
38469      for (CodeableConcept e : element.getProgramCode()) 
38470          composeCodeableConcept("programCode", e);
38471    }
38472    if (element.hasPatientPaid()) {
38473      composeMoney("patientPaid", element.getPatientPaid());
38474    }
38475    if (element.hasQuantity()) {
38476      composeQuantity("quantity", element.getQuantity());
38477    }
38478    if (element.hasUnitPrice()) {
38479      composeMoney("unitPrice", element.getUnitPrice());
38480    }
38481    if (element.hasFactorElement()) {
38482      composeDecimal("factor", element.getFactorElement());
38483    }
38484    if (element.hasTax()) {
38485      composeMoney("tax", element.getTax());
38486    }
38487    if (element.hasNet()) {
38488      composeMoney("net", element.getNet());
38489    }
38490    if (element.hasUdi()) { 
38491      for (Reference e : element.getUdi()) 
38492          composeReference("udi", e);
38493    }
38494    if (element.hasSubDetail()) { 
38495      for (Claim.SubDetailComponent e : element.getSubDetail()) 
38496          composeClaimSubDetailComponent("subDetail", e);
38497    }
38498  }
38499
38500  protected void composeClaimSubDetailComponent(String name, Claim.SubDetailComponent element) throws IOException {
38501    if (element != null) {
38502    composeElementAttributes(element);
38503      xml.enter(FHIR_NS, name);
38504      composeClaimSubDetailComponentElements(element);
38505      composeElementClose(element);
38506      xml.exit(FHIR_NS, name);
38507    }
38508  }
38509
38510  protected void composeClaimSubDetailComponentElements(Claim.SubDetailComponent element) throws IOException {
38511    composeBackboneElementElements(element);
38512    if (element.hasSequenceElement()) {
38513      composePositiveInt("sequence", element.getSequenceElement());
38514    }
38515    if (element.hasTraceNumber()) { 
38516      for (Identifier e : element.getTraceNumber()) 
38517          composeIdentifier("traceNumber", e);
38518    }
38519    if (element.hasRevenue()) {
38520      composeCodeableConcept("revenue", element.getRevenue());
38521    }
38522    if (element.hasCategory()) {
38523      composeCodeableConcept("category", element.getCategory());
38524    }
38525    if (element.hasProductOrService()) {
38526      composeCodeableConcept("productOrService", element.getProductOrService());
38527    }
38528    if (element.hasProductOrServiceEnd()) {
38529      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
38530    }
38531    if (element.hasModifier()) { 
38532      for (CodeableConcept e : element.getModifier()) 
38533          composeCodeableConcept("modifier", e);
38534    }
38535    if (element.hasProgramCode()) { 
38536      for (CodeableConcept e : element.getProgramCode()) 
38537          composeCodeableConcept("programCode", e);
38538    }
38539    if (element.hasPatientPaid()) {
38540      composeMoney("patientPaid", element.getPatientPaid());
38541    }
38542    if (element.hasQuantity()) {
38543      composeQuantity("quantity", element.getQuantity());
38544    }
38545    if (element.hasUnitPrice()) {
38546      composeMoney("unitPrice", element.getUnitPrice());
38547    }
38548    if (element.hasFactorElement()) {
38549      composeDecimal("factor", element.getFactorElement());
38550    }
38551    if (element.hasTax()) {
38552      composeMoney("tax", element.getTax());
38553    }
38554    if (element.hasNet()) {
38555      composeMoney("net", element.getNet());
38556    }
38557    if (element.hasUdi()) { 
38558      for (Reference e : element.getUdi()) 
38559          composeReference("udi", e);
38560    }
38561  }
38562
38563  protected void composeClaimResponse(String name, ClaimResponse element) throws IOException {
38564    if (element != null) {
38565    composeResourceAttributes(element);
38566      xml.enter(FHIR_NS, name);
38567      composeClaimResponseElements(element);
38568      composeElementClose(element);
38569      xml.exit(FHIR_NS, name);
38570    }
38571  }
38572
38573  protected void composeClaimResponseElements(ClaimResponse element) throws IOException {
38574    composeDomainResourceElements(element);
38575    if (element.hasIdentifier()) { 
38576      for (Identifier e : element.getIdentifier()) 
38577          composeIdentifier("identifier", e);
38578    }
38579    if (element.hasTraceNumber()) { 
38580      for (Identifier e : element.getTraceNumber()) 
38581          composeIdentifier("traceNumber", e);
38582    }
38583    if (element.hasStatusElement())
38584      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
38585    if (element.hasType()) {
38586      composeCodeableConcept("type", element.getType());
38587    }
38588    if (element.hasSubType()) {
38589      composeCodeableConcept("subType", element.getSubType());
38590    }
38591    if (element.hasUseElement())
38592      composeEnumeration("use", element.getUseElement(), new Enumerations.UseEnumFactory());
38593    if (element.hasPatient()) {
38594      composeReference("patient", element.getPatient());
38595    }
38596    if (element.hasCreatedElement()) {
38597      composeDateTime("created", element.getCreatedElement());
38598    }
38599    if (element.hasInsurer()) {
38600      composeReference("insurer", element.getInsurer());
38601    }
38602    if (element.hasRequestor()) {
38603      composeReference("requestor", element.getRequestor());
38604    }
38605    if (element.hasRequest()) {
38606      composeReference("request", element.getRequest());
38607    }
38608    if (element.hasOutcomeElement())
38609      composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.ClaimProcessingCodesEnumFactory());
38610    if (element.hasDecision()) {
38611      composeCodeableConcept("decision", element.getDecision());
38612    }
38613    if (element.hasDispositionElement()) {
38614      composeString("disposition", element.getDispositionElement());
38615    }
38616    if (element.hasPreAuthRefElement()) {
38617      composeString("preAuthRef", element.getPreAuthRefElement());
38618    }
38619    if (element.hasPreAuthPeriod()) {
38620      composePeriod("preAuthPeriod", element.getPreAuthPeriod());
38621    }
38622    if (element.hasEvent()) { 
38623      for (ClaimResponse.ClaimResponseEventComponent e : element.getEvent()) 
38624          composeClaimResponseEventComponent("event", e);
38625    }
38626    if (element.hasPayeeType()) {
38627      composeCodeableConcept("payeeType", element.getPayeeType());
38628    }
38629    if (element.hasEncounter()) { 
38630      for (Reference e : element.getEncounter()) 
38631          composeReference("encounter", e);
38632    }
38633    if (element.hasDiagnosisRelatedGroup()) {
38634      composeCodeableConcept("diagnosisRelatedGroup", element.getDiagnosisRelatedGroup());
38635    }
38636    if (element.hasItem()) { 
38637      for (ClaimResponse.ItemComponent e : element.getItem()) 
38638          composeClaimResponseItemComponent("item", e);
38639    }
38640    if (element.hasAddItem()) { 
38641      for (ClaimResponse.AddedItemComponent e : element.getAddItem()) 
38642          composeClaimResponseAddedItemComponent("addItem", e);
38643    }
38644    if (element.hasAdjudication()) { 
38645      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
38646          composeClaimResponseAdjudicationComponent("adjudication", e);
38647    }
38648    if (element.hasTotal()) { 
38649      for (ClaimResponse.TotalComponent e : element.getTotal()) 
38650          composeClaimResponseTotalComponent("total", e);
38651    }
38652    if (element.hasPayment()) {
38653      composeClaimResponsePaymentComponent("payment", element.getPayment());
38654    }
38655    if (element.hasFundsReserve()) {
38656      composeCodeableConcept("fundsReserve", element.getFundsReserve());
38657    }
38658    if (element.hasFormCode()) {
38659      composeCodeableConcept("formCode", element.getFormCode());
38660    }
38661    if (element.hasForm()) {
38662      composeAttachment("form", element.getForm());
38663    }
38664    if (element.hasProcessNote()) { 
38665      for (ClaimResponse.NoteComponent e : element.getProcessNote()) 
38666          composeClaimResponseNoteComponent("processNote", e);
38667    }
38668    if (element.hasCommunicationRequest()) { 
38669      for (Reference e : element.getCommunicationRequest()) 
38670          composeReference("communicationRequest", e);
38671    }
38672    if (element.hasInsurance()) { 
38673      for (ClaimResponse.InsuranceComponent e : element.getInsurance()) 
38674          composeClaimResponseInsuranceComponent("insurance", e);
38675    }
38676    if (element.hasError()) { 
38677      for (ClaimResponse.ErrorComponent e : element.getError()) 
38678          composeClaimResponseErrorComponent("error", e);
38679    }
38680  }
38681
38682  protected void composeClaimResponseEventComponent(String name, ClaimResponse.ClaimResponseEventComponent element) throws IOException {
38683    if (element != null) {
38684    composeElementAttributes(element);
38685      xml.enter(FHIR_NS, name);
38686      composeClaimResponseEventComponentElements(element);
38687      composeElementClose(element);
38688      xml.exit(FHIR_NS, name);
38689    }
38690  }
38691
38692  protected void composeClaimResponseEventComponentElements(ClaimResponse.ClaimResponseEventComponent element) throws IOException {
38693    composeBackboneElementElements(element);
38694    if (element.hasType()) {
38695      composeCodeableConcept("type", element.getType());
38696    }
38697    if (element.hasWhen()) {
38698      composeType("when", element.getWhen());
38699    }  }
38700
38701  protected void composeClaimResponseItemComponent(String name, ClaimResponse.ItemComponent element) throws IOException {
38702    if (element != null) {
38703    composeElementAttributes(element);
38704      xml.enter(FHIR_NS, name);
38705      composeClaimResponseItemComponentElements(element);
38706      composeElementClose(element);
38707      xml.exit(FHIR_NS, name);
38708    }
38709  }
38710
38711  protected void composeClaimResponseItemComponentElements(ClaimResponse.ItemComponent element) throws IOException {
38712    composeBackboneElementElements(element);
38713    if (element.hasItemSequenceElement()) {
38714      composePositiveInt("itemSequence", element.getItemSequenceElement());
38715    }
38716    if (element.hasTraceNumber()) { 
38717      for (Identifier e : element.getTraceNumber()) 
38718          composeIdentifier("traceNumber", e);
38719    }
38720    if (element.hasNoteNumber()) { 
38721      for (PositiveIntType e : element.getNoteNumber()) 
38722          composePositiveInt("noteNumber", e);
38723    }
38724    if (element.hasReviewOutcome()) {
38725      composeClaimResponseReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
38726    }
38727    if (element.hasAdjudication()) { 
38728      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
38729          composeClaimResponseAdjudicationComponent("adjudication", e);
38730    }
38731    if (element.hasDetail()) { 
38732      for (ClaimResponse.ItemDetailComponent e : element.getDetail()) 
38733          composeClaimResponseItemDetailComponent("detail", e);
38734    }
38735  }
38736
38737  protected void composeClaimResponseReviewOutcomeComponent(String name, ClaimResponse.ReviewOutcomeComponent element) throws IOException {
38738    if (element != null) {
38739    composeElementAttributes(element);
38740      xml.enter(FHIR_NS, name);
38741      composeClaimResponseReviewOutcomeComponentElements(element);
38742      composeElementClose(element);
38743      xml.exit(FHIR_NS, name);
38744    }
38745  }
38746
38747  protected void composeClaimResponseReviewOutcomeComponentElements(ClaimResponse.ReviewOutcomeComponent element) throws IOException {
38748    composeBackboneElementElements(element);
38749    if (element.hasDecision()) {
38750      composeCodeableConcept("decision", element.getDecision());
38751    }
38752    if (element.hasReason()) { 
38753      for (CodeableConcept e : element.getReason()) 
38754          composeCodeableConcept("reason", e);
38755    }
38756    if (element.hasPreAuthRefElement()) {
38757      composeString("preAuthRef", element.getPreAuthRefElement());
38758    }
38759    if (element.hasPreAuthPeriod()) {
38760      composePeriod("preAuthPeriod", element.getPreAuthPeriod());
38761    }
38762  }
38763
38764  protected void composeClaimResponseAdjudicationComponent(String name, ClaimResponse.AdjudicationComponent element) throws IOException {
38765    if (element != null) {
38766    composeElementAttributes(element);
38767      xml.enter(FHIR_NS, name);
38768      composeClaimResponseAdjudicationComponentElements(element);
38769      composeElementClose(element);
38770      xml.exit(FHIR_NS, name);
38771    }
38772  }
38773
38774  protected void composeClaimResponseAdjudicationComponentElements(ClaimResponse.AdjudicationComponent element) throws IOException {
38775    composeBackboneElementElements(element);
38776    if (element.hasCategory()) {
38777      composeCodeableConcept("category", element.getCategory());
38778    }
38779    if (element.hasReason()) {
38780      composeCodeableConcept("reason", element.getReason());
38781    }
38782    if (element.hasAmount()) {
38783      composeMoney("amount", element.getAmount());
38784    }
38785    if (element.hasQuantity()) {
38786      composeQuantity("quantity", element.getQuantity());
38787    }
38788  }
38789
38790  protected void composeClaimResponseItemDetailComponent(String name, ClaimResponse.ItemDetailComponent element) throws IOException {
38791    if (element != null) {
38792    composeElementAttributes(element);
38793      xml.enter(FHIR_NS, name);
38794      composeClaimResponseItemDetailComponentElements(element);
38795      composeElementClose(element);
38796      xml.exit(FHIR_NS, name);
38797    }
38798  }
38799
38800  protected void composeClaimResponseItemDetailComponentElements(ClaimResponse.ItemDetailComponent element) throws IOException {
38801    composeBackboneElementElements(element);
38802    if (element.hasDetailSequenceElement()) {
38803      composePositiveInt("detailSequence", element.getDetailSequenceElement());
38804    }
38805    if (element.hasTraceNumber()) { 
38806      for (Identifier e : element.getTraceNumber()) 
38807          composeIdentifier("traceNumber", e);
38808    }
38809    if (element.hasNoteNumber()) { 
38810      for (PositiveIntType e : element.getNoteNumber()) 
38811          composePositiveInt("noteNumber", e);
38812    }
38813    if (element.hasReviewOutcome()) {
38814      composeClaimResponseReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
38815    }
38816    if (element.hasAdjudication()) { 
38817      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
38818          composeClaimResponseAdjudicationComponent("adjudication", e);
38819    }
38820    if (element.hasSubDetail()) { 
38821      for (ClaimResponse.SubDetailComponent e : element.getSubDetail()) 
38822          composeClaimResponseSubDetailComponent("subDetail", e);
38823    }
38824  }
38825
38826  protected void composeClaimResponseSubDetailComponent(String name, ClaimResponse.SubDetailComponent element) throws IOException {
38827    if (element != null) {
38828    composeElementAttributes(element);
38829      xml.enter(FHIR_NS, name);
38830      composeClaimResponseSubDetailComponentElements(element);
38831      composeElementClose(element);
38832      xml.exit(FHIR_NS, name);
38833    }
38834  }
38835
38836  protected void composeClaimResponseSubDetailComponentElements(ClaimResponse.SubDetailComponent element) throws IOException {
38837    composeBackboneElementElements(element);
38838    if (element.hasSubDetailSequenceElement()) {
38839      composePositiveInt("subDetailSequence", element.getSubDetailSequenceElement());
38840    }
38841    if (element.hasTraceNumber()) { 
38842      for (Identifier e : element.getTraceNumber()) 
38843          composeIdentifier("traceNumber", e);
38844    }
38845    if (element.hasNoteNumber()) { 
38846      for (PositiveIntType e : element.getNoteNumber()) 
38847          composePositiveInt("noteNumber", e);
38848    }
38849    if (element.hasReviewOutcome()) {
38850      composeClaimResponseReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
38851    }
38852    if (element.hasAdjudication()) { 
38853      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
38854          composeClaimResponseAdjudicationComponent("adjudication", e);
38855    }
38856  }
38857
38858  protected void composeClaimResponseAddedItemComponent(String name, ClaimResponse.AddedItemComponent element) throws IOException {
38859    if (element != null) {
38860    composeElementAttributes(element);
38861      xml.enter(FHIR_NS, name);
38862      composeClaimResponseAddedItemComponentElements(element);
38863      composeElementClose(element);
38864      xml.exit(FHIR_NS, name);
38865    }
38866  }
38867
38868  protected void composeClaimResponseAddedItemComponentElements(ClaimResponse.AddedItemComponent element) throws IOException {
38869    composeBackboneElementElements(element);
38870    if (element.hasItemSequence()) { 
38871      for (PositiveIntType e : element.getItemSequence()) 
38872          composePositiveInt("itemSequence", e);
38873    }
38874    if (element.hasDetailSequence()) { 
38875      for (PositiveIntType e : element.getDetailSequence()) 
38876          composePositiveInt("detailSequence", e);
38877    }
38878    if (element.hasSubdetailSequence()) { 
38879      for (PositiveIntType e : element.getSubdetailSequence()) 
38880          composePositiveInt("subdetailSequence", e);
38881    }
38882    if (element.hasTraceNumber()) { 
38883      for (Identifier e : element.getTraceNumber()) 
38884          composeIdentifier("traceNumber", e);
38885    }
38886    if (element.hasProvider()) { 
38887      for (Reference e : element.getProvider()) 
38888          composeReference("provider", e);
38889    }
38890    if (element.hasRevenue()) {
38891      composeCodeableConcept("revenue", element.getRevenue());
38892    }
38893    if (element.hasProductOrService()) {
38894      composeCodeableConcept("productOrService", element.getProductOrService());
38895    }
38896    if (element.hasProductOrServiceEnd()) {
38897      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
38898    }
38899    if (element.hasRequest()) { 
38900      for (Reference e : element.getRequest()) 
38901          composeReference("request", e);
38902    }
38903    if (element.hasModifier()) { 
38904      for (CodeableConcept e : element.getModifier()) 
38905          composeCodeableConcept("modifier", e);
38906    }
38907    if (element.hasProgramCode()) { 
38908      for (CodeableConcept e : element.getProgramCode()) 
38909          composeCodeableConcept("programCode", e);
38910    }
38911    if (element.hasServiced()) {
38912      composeType("serviced", element.getServiced());
38913    }    if (element.hasLocation()) {
38914      composeType("location", element.getLocation());
38915    }    if (element.hasQuantity()) {
38916      composeQuantity("quantity", element.getQuantity());
38917    }
38918    if (element.hasUnitPrice()) {
38919      composeMoney("unitPrice", element.getUnitPrice());
38920    }
38921    if (element.hasFactorElement()) {
38922      composeDecimal("factor", element.getFactorElement());
38923    }
38924    if (element.hasTax()) {
38925      composeMoney("tax", element.getTax());
38926    }
38927    if (element.hasNet()) {
38928      composeMoney("net", element.getNet());
38929    }
38930    if (element.hasBodySite()) { 
38931      for (ClaimResponse.BodySiteComponent e : element.getBodySite()) 
38932          composeClaimResponseBodySiteComponent("bodySite", e);
38933    }
38934    if (element.hasNoteNumber()) { 
38935      for (PositiveIntType e : element.getNoteNumber()) 
38936          composePositiveInt("noteNumber", e);
38937    }
38938    if (element.hasReviewOutcome()) {
38939      composeClaimResponseReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
38940    }
38941    if (element.hasAdjudication()) { 
38942      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
38943          composeClaimResponseAdjudicationComponent("adjudication", e);
38944    }
38945    if (element.hasDetail()) { 
38946      for (ClaimResponse.AddedItemDetailComponent e : element.getDetail()) 
38947          composeClaimResponseAddedItemDetailComponent("detail", e);
38948    }
38949  }
38950
38951  protected void composeClaimResponseBodySiteComponent(String name, ClaimResponse.BodySiteComponent element) throws IOException {
38952    if (element != null) {
38953    composeElementAttributes(element);
38954      xml.enter(FHIR_NS, name);
38955      composeClaimResponseBodySiteComponentElements(element);
38956      composeElementClose(element);
38957      xml.exit(FHIR_NS, name);
38958    }
38959  }
38960
38961  protected void composeClaimResponseBodySiteComponentElements(ClaimResponse.BodySiteComponent element) throws IOException {
38962    composeBackboneElementElements(element);
38963    if (element.hasSite()) { 
38964      for (CodeableReference e : element.getSite()) 
38965          composeCodeableReference("site", e);
38966    }
38967    if (element.hasSubSite()) { 
38968      for (CodeableConcept e : element.getSubSite()) 
38969          composeCodeableConcept("subSite", e);
38970    }
38971  }
38972
38973  protected void composeClaimResponseAddedItemDetailComponent(String name, ClaimResponse.AddedItemDetailComponent element) throws IOException {
38974    if (element != null) {
38975    composeElementAttributes(element);
38976      xml.enter(FHIR_NS, name);
38977      composeClaimResponseAddedItemDetailComponentElements(element);
38978      composeElementClose(element);
38979      xml.exit(FHIR_NS, name);
38980    }
38981  }
38982
38983  protected void composeClaimResponseAddedItemDetailComponentElements(ClaimResponse.AddedItemDetailComponent element) throws IOException {
38984    composeBackboneElementElements(element);
38985    if (element.hasTraceNumber()) { 
38986      for (Identifier e : element.getTraceNumber()) 
38987          composeIdentifier("traceNumber", e);
38988    }
38989    if (element.hasRevenue()) {
38990      composeCodeableConcept("revenue", element.getRevenue());
38991    }
38992    if (element.hasProductOrService()) {
38993      composeCodeableConcept("productOrService", element.getProductOrService());
38994    }
38995    if (element.hasProductOrServiceEnd()) {
38996      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
38997    }
38998    if (element.hasModifier()) { 
38999      for (CodeableConcept e : element.getModifier()) 
39000          composeCodeableConcept("modifier", e);
39001    }
39002    if (element.hasQuantity()) {
39003      composeQuantity("quantity", element.getQuantity());
39004    }
39005    if (element.hasUnitPrice()) {
39006      composeMoney("unitPrice", element.getUnitPrice());
39007    }
39008    if (element.hasFactorElement()) {
39009      composeDecimal("factor", element.getFactorElement());
39010    }
39011    if (element.hasTax()) {
39012      composeMoney("tax", element.getTax());
39013    }
39014    if (element.hasNet()) {
39015      composeMoney("net", element.getNet());
39016    }
39017    if (element.hasNoteNumber()) { 
39018      for (PositiveIntType e : element.getNoteNumber()) 
39019          composePositiveInt("noteNumber", e);
39020    }
39021    if (element.hasReviewOutcome()) {
39022      composeClaimResponseReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
39023    }
39024    if (element.hasAdjudication()) { 
39025      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
39026          composeClaimResponseAdjudicationComponent("adjudication", e);
39027    }
39028    if (element.hasSubDetail()) { 
39029      for (ClaimResponse.AddedItemSubDetailComponent e : element.getSubDetail()) 
39030          composeClaimResponseAddedItemSubDetailComponent("subDetail", e);
39031    }
39032  }
39033
39034  protected void composeClaimResponseAddedItemSubDetailComponent(String name, ClaimResponse.AddedItemSubDetailComponent element) throws IOException {
39035    if (element != null) {
39036    composeElementAttributes(element);
39037      xml.enter(FHIR_NS, name);
39038      composeClaimResponseAddedItemSubDetailComponentElements(element);
39039      composeElementClose(element);
39040      xml.exit(FHIR_NS, name);
39041    }
39042  }
39043
39044  protected void composeClaimResponseAddedItemSubDetailComponentElements(ClaimResponse.AddedItemSubDetailComponent element) throws IOException {
39045    composeBackboneElementElements(element);
39046    if (element.hasTraceNumber()) { 
39047      for (Identifier e : element.getTraceNumber()) 
39048          composeIdentifier("traceNumber", e);
39049    }
39050    if (element.hasRevenue()) {
39051      composeCodeableConcept("revenue", element.getRevenue());
39052    }
39053    if (element.hasProductOrService()) {
39054      composeCodeableConcept("productOrService", element.getProductOrService());
39055    }
39056    if (element.hasProductOrServiceEnd()) {
39057      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
39058    }
39059    if (element.hasModifier()) { 
39060      for (CodeableConcept e : element.getModifier()) 
39061          composeCodeableConcept("modifier", e);
39062    }
39063    if (element.hasQuantity()) {
39064      composeQuantity("quantity", element.getQuantity());
39065    }
39066    if (element.hasUnitPrice()) {
39067      composeMoney("unitPrice", element.getUnitPrice());
39068    }
39069    if (element.hasFactorElement()) {
39070      composeDecimal("factor", element.getFactorElement());
39071    }
39072    if (element.hasTax()) {
39073      composeMoney("tax", element.getTax());
39074    }
39075    if (element.hasNet()) {
39076      composeMoney("net", element.getNet());
39077    }
39078    if (element.hasNoteNumber()) { 
39079      for (PositiveIntType e : element.getNoteNumber()) 
39080          composePositiveInt("noteNumber", e);
39081    }
39082    if (element.hasReviewOutcome()) {
39083      composeClaimResponseReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
39084    }
39085    if (element.hasAdjudication()) { 
39086      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
39087          composeClaimResponseAdjudicationComponent("adjudication", e);
39088    }
39089  }
39090
39091  protected void composeClaimResponseTotalComponent(String name, ClaimResponse.TotalComponent element) throws IOException {
39092    if (element != null) {
39093    composeElementAttributes(element);
39094      xml.enter(FHIR_NS, name);
39095      composeClaimResponseTotalComponentElements(element);
39096      composeElementClose(element);
39097      xml.exit(FHIR_NS, name);
39098    }
39099  }
39100
39101  protected void composeClaimResponseTotalComponentElements(ClaimResponse.TotalComponent element) throws IOException {
39102    composeBackboneElementElements(element);
39103    if (element.hasCategory()) {
39104      composeCodeableConcept("category", element.getCategory());
39105    }
39106    if (element.hasAmount()) {
39107      composeMoney("amount", element.getAmount());
39108    }
39109  }
39110
39111  protected void composeClaimResponsePaymentComponent(String name, ClaimResponse.PaymentComponent element) throws IOException {
39112    if (element != null) {
39113    composeElementAttributes(element);
39114      xml.enter(FHIR_NS, name);
39115      composeClaimResponsePaymentComponentElements(element);
39116      composeElementClose(element);
39117      xml.exit(FHIR_NS, name);
39118    }
39119  }
39120
39121  protected void composeClaimResponsePaymentComponentElements(ClaimResponse.PaymentComponent element) throws IOException {
39122    composeBackboneElementElements(element);
39123    if (element.hasType()) {
39124      composeCodeableConcept("type", element.getType());
39125    }
39126    if (element.hasAdjustment()) {
39127      composeMoney("adjustment", element.getAdjustment());
39128    }
39129    if (element.hasAdjustmentReason()) {
39130      composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
39131    }
39132    if (element.hasDateElement()) {
39133      composeDate("date", element.getDateElement());
39134    }
39135    if (element.hasAmount()) {
39136      composeMoney("amount", element.getAmount());
39137    }
39138    if (element.hasIdentifier()) {
39139      composeIdentifier("identifier", element.getIdentifier());
39140    }
39141  }
39142
39143  protected void composeClaimResponseNoteComponent(String name, ClaimResponse.NoteComponent element) throws IOException {
39144    if (element != null) {
39145    composeElementAttributes(element);
39146      xml.enter(FHIR_NS, name);
39147      composeClaimResponseNoteComponentElements(element);
39148      composeElementClose(element);
39149      xml.exit(FHIR_NS, name);
39150    }
39151  }
39152
39153  protected void composeClaimResponseNoteComponentElements(ClaimResponse.NoteComponent element) throws IOException {
39154    composeBackboneElementElements(element);
39155    if (element.hasNumberElement()) {
39156      composePositiveInt("number", element.getNumberElement());
39157    }
39158    if (element.hasType()) {
39159      composeCodeableConcept("type", element.getType());
39160    }
39161    if (element.hasTextElement()) {
39162      composeString("text", element.getTextElement());
39163    }
39164    if (element.hasLanguage()) {
39165      composeCodeableConcept("language", element.getLanguage());
39166    }
39167  }
39168
39169  protected void composeClaimResponseInsuranceComponent(String name, ClaimResponse.InsuranceComponent element) throws IOException {
39170    if (element != null) {
39171    composeElementAttributes(element);
39172      xml.enter(FHIR_NS, name);
39173      composeClaimResponseInsuranceComponentElements(element);
39174      composeElementClose(element);
39175      xml.exit(FHIR_NS, name);
39176    }
39177  }
39178
39179  protected void composeClaimResponseInsuranceComponentElements(ClaimResponse.InsuranceComponent element) throws IOException {
39180    composeBackboneElementElements(element);
39181    if (element.hasSequenceElement()) {
39182      composePositiveInt("sequence", element.getSequenceElement());
39183    }
39184    if (element.hasFocalElement()) {
39185      composeBoolean("focal", element.getFocalElement());
39186    }
39187    if (element.hasCoverage()) {
39188      composeReference("coverage", element.getCoverage());
39189    }
39190    if (element.hasBusinessArrangementElement()) {
39191      composeString("businessArrangement", element.getBusinessArrangementElement());
39192    }
39193    if (element.hasClaimResponse()) {
39194      composeReference("claimResponse", element.getClaimResponse());
39195    }
39196  }
39197
39198  protected void composeClaimResponseErrorComponent(String name, ClaimResponse.ErrorComponent element) throws IOException {
39199    if (element != null) {
39200    composeElementAttributes(element);
39201      xml.enter(FHIR_NS, name);
39202      composeClaimResponseErrorComponentElements(element);
39203      composeElementClose(element);
39204      xml.exit(FHIR_NS, name);
39205    }
39206  }
39207
39208  protected void composeClaimResponseErrorComponentElements(ClaimResponse.ErrorComponent element) throws IOException {
39209    composeBackboneElementElements(element);
39210    if (element.hasItemSequenceElement()) {
39211      composePositiveInt("itemSequence", element.getItemSequenceElement());
39212    }
39213    if (element.hasDetailSequenceElement()) {
39214      composePositiveInt("detailSequence", element.getDetailSequenceElement());
39215    }
39216    if (element.hasSubDetailSequenceElement()) {
39217      composePositiveInt("subDetailSequence", element.getSubDetailSequenceElement());
39218    }
39219    if (element.hasCode()) {
39220      composeCodeableConcept("code", element.getCode());
39221    }
39222    if (element.hasExpression()) { 
39223      for (StringType e : element.getExpression()) 
39224          composeString("expression", e);
39225    }
39226  }
39227
39228  protected void composeClinicalImpression(String name, ClinicalImpression element) throws IOException {
39229    if (element != null) {
39230    composeResourceAttributes(element);
39231      xml.enter(FHIR_NS, name);
39232      composeClinicalImpressionElements(element);
39233      composeElementClose(element);
39234      xml.exit(FHIR_NS, name);
39235    }
39236  }
39237
39238  protected void composeClinicalImpressionElements(ClinicalImpression element) throws IOException {
39239    composeDomainResourceElements(element);
39240    if (element.hasIdentifier()) { 
39241      for (Identifier e : element.getIdentifier()) 
39242          composeIdentifier("identifier", e);
39243    }
39244    if (element.hasStatusElement())
39245      composeEnumeration("status", element.getStatusElement(), new Enumerations.EventStatusEnumFactory());
39246    if (element.hasStatusReason()) {
39247      composeCodeableConcept("statusReason", element.getStatusReason());
39248    }
39249    if (element.hasDescriptionElement()) {
39250      composeString("description", element.getDescriptionElement());
39251    }
39252    if (element.hasSubject()) {
39253      composeReference("subject", element.getSubject());
39254    }
39255    if (element.hasEncounter()) {
39256      composeReference("encounter", element.getEncounter());
39257    }
39258    if (element.hasEffective()) {
39259      composeType("effective", element.getEffective());
39260    }    if (element.hasDateElement()) {
39261      composeDateTime("date", element.getDateElement());
39262    }
39263    if (element.hasPerformer()) {
39264      composeReference("performer", element.getPerformer());
39265    }
39266    if (element.hasPrevious()) {
39267      composeReference("previous", element.getPrevious());
39268    }
39269    if (element.hasProblem()) { 
39270      for (Reference e : element.getProblem()) 
39271          composeReference("problem", e);
39272    }
39273    if (element.hasChangePattern()) {
39274      composeCodeableConcept("changePattern", element.getChangePattern());
39275    }
39276    if (element.hasProtocol()) { 
39277      for (UriType e : element.getProtocol()) 
39278          composeUri("protocol", e);
39279    }
39280    if (element.hasSummaryElement()) {
39281      composeString("summary", element.getSummaryElement());
39282    }
39283    if (element.hasFinding()) { 
39284      for (ClinicalImpression.ClinicalImpressionFindingComponent e : element.getFinding()) 
39285          composeClinicalImpressionFindingComponent("finding", e);
39286    }
39287    if (element.hasPrognosisCodeableConcept()) { 
39288      for (CodeableConcept e : element.getPrognosisCodeableConcept()) 
39289          composeCodeableConcept("prognosisCodeableConcept", e);
39290    }
39291    if (element.hasPrognosisReference()) { 
39292      for (Reference e : element.getPrognosisReference()) 
39293          composeReference("prognosisReference", e);
39294    }
39295    if (element.hasSupportingInfo()) { 
39296      for (Reference e : element.getSupportingInfo()) 
39297          composeReference("supportingInfo", e);
39298    }
39299    if (element.hasNote()) { 
39300      for (Annotation e : element.getNote()) 
39301          composeAnnotation("note", e);
39302    }
39303  }
39304
39305  protected void composeClinicalImpressionFindingComponent(String name, ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
39306    if (element != null) {
39307    composeElementAttributes(element);
39308      xml.enter(FHIR_NS, name);
39309      composeClinicalImpressionFindingComponentElements(element);
39310      composeElementClose(element);
39311      xml.exit(FHIR_NS, name);
39312    }
39313  }
39314
39315  protected void composeClinicalImpressionFindingComponentElements(ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
39316    composeBackboneElementElements(element);
39317    if (element.hasItem()) {
39318      composeCodeableReference("item", element.getItem());
39319    }
39320    if (element.hasBasisElement()) {
39321      composeString("basis", element.getBasisElement());
39322    }
39323  }
39324
39325  protected void composeClinicalUseDefinition(String name, ClinicalUseDefinition element) throws IOException {
39326    if (element != null) {
39327    composeResourceAttributes(element);
39328      xml.enter(FHIR_NS, name);
39329      composeClinicalUseDefinitionElements(element);
39330      composeElementClose(element);
39331      xml.exit(FHIR_NS, name);
39332    }
39333  }
39334
39335  protected void composeClinicalUseDefinitionElements(ClinicalUseDefinition element) throws IOException {
39336    composeDomainResourceElements(element);
39337    if (element.hasIdentifier()) { 
39338      for (Identifier e : element.getIdentifier()) 
39339          composeIdentifier("identifier", e);
39340    }
39341    if (element.hasTypeElement())
39342      composeEnumeration("type", element.getTypeElement(), new ClinicalUseDefinition.ClinicalUseDefinitionTypeEnumFactory());
39343    if (element.hasCategory()) { 
39344      for (CodeableConcept e : element.getCategory()) 
39345          composeCodeableConcept("category", e);
39346    }
39347    if (element.hasSubject()) { 
39348      for (Reference e : element.getSubject()) 
39349          composeReference("subject", e);
39350    }
39351    if (element.hasStatus()) {
39352      composeCodeableConcept("status", element.getStatus());
39353    }
39354    if (element.hasContraindication()) {
39355      composeClinicalUseDefinitionContraindicationComponent("contraindication", element.getContraindication());
39356    }
39357    if (element.hasIndication()) {
39358      composeClinicalUseDefinitionIndicationComponent("indication", element.getIndication());
39359    }
39360    if (element.hasInteraction()) {
39361      composeClinicalUseDefinitionInteractionComponent("interaction", element.getInteraction());
39362    }
39363    if (element.hasPopulation()) { 
39364      for (Reference e : element.getPopulation()) 
39365          composeReference("population", e);
39366    }
39367    if (element.hasLibrary()) { 
39368      for (CanonicalType e : element.getLibrary()) 
39369          composeCanonical("library", e);
39370    }
39371    if (element.hasUndesirableEffect()) {
39372      composeClinicalUseDefinitionUndesirableEffectComponent("undesirableEffect", element.getUndesirableEffect());
39373    }
39374    if (element.hasWarning()) {
39375      composeClinicalUseDefinitionWarningComponent("warning", element.getWarning());
39376    }
39377  }
39378
39379  protected void composeClinicalUseDefinitionContraindicationComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionContraindicationComponent element) throws IOException {
39380    if (element != null) {
39381    composeElementAttributes(element);
39382      xml.enter(FHIR_NS, name);
39383      composeClinicalUseDefinitionContraindicationComponentElements(element);
39384      composeElementClose(element);
39385      xml.exit(FHIR_NS, name);
39386    }
39387  }
39388
39389  protected void composeClinicalUseDefinitionContraindicationComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionContraindicationComponent element) throws IOException {
39390    composeBackboneElementElements(element);
39391    if (element.hasDiseaseSymptomProcedure()) {
39392      composeCodeableReference("diseaseSymptomProcedure", element.getDiseaseSymptomProcedure());
39393    }
39394    if (element.hasDiseaseStatus()) {
39395      composeCodeableReference("diseaseStatus", element.getDiseaseStatus());
39396    }
39397    if (element.hasComorbidity()) { 
39398      for (CodeableReference e : element.getComorbidity()) 
39399          composeCodeableReference("comorbidity", e);
39400    }
39401    if (element.hasIndication()) { 
39402      for (Reference e : element.getIndication()) 
39403          composeReference("indication", e);
39404    }
39405    if (element.hasApplicability()) {
39406      composeExpression("applicability", element.getApplicability());
39407    }
39408    if (element.hasOtherTherapy()) { 
39409      for (ClinicalUseDefinition.ClinicalUseDefinitionContraindicationOtherTherapyComponent e : element.getOtherTherapy()) 
39410          composeClinicalUseDefinitionContraindicationOtherTherapyComponent("otherTherapy", e);
39411    }
39412  }
39413
39414  protected void composeClinicalUseDefinitionContraindicationOtherTherapyComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionContraindicationOtherTherapyComponent element) throws IOException {
39415    if (element != null) {
39416    composeElementAttributes(element);
39417      xml.enter(FHIR_NS, name);
39418      composeClinicalUseDefinitionContraindicationOtherTherapyComponentElements(element);
39419      composeElementClose(element);
39420      xml.exit(FHIR_NS, name);
39421    }
39422  }
39423
39424  protected void composeClinicalUseDefinitionContraindicationOtherTherapyComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionContraindicationOtherTherapyComponent element) throws IOException {
39425    composeBackboneElementElements(element);
39426    if (element.hasRelationshipType()) {
39427      composeCodeableConcept("relationshipType", element.getRelationshipType());
39428    }
39429    if (element.hasTreatment()) {
39430      composeCodeableReference("treatment", element.getTreatment());
39431    }
39432  }
39433
39434  protected void composeClinicalUseDefinitionIndicationComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionIndicationComponent element) throws IOException {
39435    if (element != null) {
39436    composeElementAttributes(element);
39437      xml.enter(FHIR_NS, name);
39438      composeClinicalUseDefinitionIndicationComponentElements(element);
39439      composeElementClose(element);
39440      xml.exit(FHIR_NS, name);
39441    }
39442  }
39443
39444  protected void composeClinicalUseDefinitionIndicationComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionIndicationComponent element) throws IOException {
39445    composeBackboneElementElements(element);
39446    if (element.hasDiseaseSymptomProcedure()) {
39447      composeCodeableReference("diseaseSymptomProcedure", element.getDiseaseSymptomProcedure());
39448    }
39449    if (element.hasDiseaseStatus()) {
39450      composeCodeableReference("diseaseStatus", element.getDiseaseStatus());
39451    }
39452    if (element.hasComorbidity()) { 
39453      for (CodeableReference e : element.getComorbidity()) 
39454          composeCodeableReference("comorbidity", e);
39455    }
39456    if (element.hasIntendedEffect()) {
39457      composeCodeableReference("intendedEffect", element.getIntendedEffect());
39458    }
39459    if (element.hasDuration()) {
39460      composeType("duration", element.getDuration());
39461    }    if (element.hasUndesirableEffect()) { 
39462      for (Reference e : element.getUndesirableEffect()) 
39463          composeReference("undesirableEffect", e);
39464    }
39465    if (element.hasApplicability()) {
39466      composeExpression("applicability", element.getApplicability());
39467    }
39468    if (element.hasOtherTherapy()) { 
39469      for (ClinicalUseDefinition.ClinicalUseDefinitionContraindicationOtherTherapyComponent e : element.getOtherTherapy()) 
39470          composeClinicalUseDefinitionContraindicationOtherTherapyComponent("otherTherapy", e);
39471    }
39472  }
39473
39474  protected void composeClinicalUseDefinitionInteractionComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionInteractionComponent element) throws IOException {
39475    if (element != null) {
39476    composeElementAttributes(element);
39477      xml.enter(FHIR_NS, name);
39478      composeClinicalUseDefinitionInteractionComponentElements(element);
39479      composeElementClose(element);
39480      xml.exit(FHIR_NS, name);
39481    }
39482  }
39483
39484  protected void composeClinicalUseDefinitionInteractionComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionInteractionComponent element) throws IOException {
39485    composeBackboneElementElements(element);
39486    if (element.hasInteractant()) { 
39487      for (ClinicalUseDefinition.ClinicalUseDefinitionInteractionInteractantComponent e : element.getInteractant()) 
39488          composeClinicalUseDefinitionInteractionInteractantComponent("interactant", e);
39489    }
39490    if (element.hasType()) {
39491      composeCodeableConcept("type", element.getType());
39492    }
39493    if (element.hasEffect()) {
39494      composeCodeableReference("effect", element.getEffect());
39495    }
39496    if (element.hasIncidence()) {
39497      composeCodeableConcept("incidence", element.getIncidence());
39498    }
39499    if (element.hasManagement()) { 
39500      for (CodeableConcept e : element.getManagement()) 
39501          composeCodeableConcept("management", e);
39502    }
39503  }
39504
39505  protected void composeClinicalUseDefinitionInteractionInteractantComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionInteractionInteractantComponent element) throws IOException {
39506    if (element != null) {
39507    composeElementAttributes(element);
39508      xml.enter(FHIR_NS, name);
39509      composeClinicalUseDefinitionInteractionInteractantComponentElements(element);
39510      composeElementClose(element);
39511      xml.exit(FHIR_NS, name);
39512    }
39513  }
39514
39515  protected void composeClinicalUseDefinitionInteractionInteractantComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionInteractionInteractantComponent element) throws IOException {
39516    composeBackboneElementElements(element);
39517    if (element.hasItem()) {
39518      composeType("item", element.getItem());
39519    }  }
39520
39521  protected void composeClinicalUseDefinitionUndesirableEffectComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionUndesirableEffectComponent element) throws IOException {
39522    if (element != null) {
39523    composeElementAttributes(element);
39524      xml.enter(FHIR_NS, name);
39525      composeClinicalUseDefinitionUndesirableEffectComponentElements(element);
39526      composeElementClose(element);
39527      xml.exit(FHIR_NS, name);
39528    }
39529  }
39530
39531  protected void composeClinicalUseDefinitionUndesirableEffectComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionUndesirableEffectComponent element) throws IOException {
39532    composeBackboneElementElements(element);
39533    if (element.hasSymptomConditionEffect()) {
39534      composeCodeableReference("symptomConditionEffect", element.getSymptomConditionEffect());
39535    }
39536    if (element.hasClassification()) {
39537      composeCodeableConcept("classification", element.getClassification());
39538    }
39539    if (element.hasFrequencyOfOccurrence()) {
39540      composeCodeableConcept("frequencyOfOccurrence", element.getFrequencyOfOccurrence());
39541    }
39542  }
39543
39544  protected void composeClinicalUseDefinitionWarningComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionWarningComponent element) throws IOException {
39545    if (element != null) {
39546    composeElementAttributes(element);
39547      xml.enter(FHIR_NS, name);
39548      composeClinicalUseDefinitionWarningComponentElements(element);
39549      composeElementClose(element);
39550      xml.exit(FHIR_NS, name);
39551    }
39552  }
39553
39554  protected void composeClinicalUseDefinitionWarningComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionWarningComponent element) throws IOException {
39555    composeBackboneElementElements(element);
39556    if (element.hasDescriptionElement()) {
39557      composeMarkdown("description", element.getDescriptionElement());
39558    }
39559    if (element.hasCode()) {
39560      composeCodeableConcept("code", element.getCode());
39561    }
39562  }
39563
39564  protected void composeCodeSystem(String name, CodeSystem element) throws IOException {
39565    if (element != null) {
39566    composeResourceAttributes(element);
39567      xml.enter(FHIR_NS, name);
39568      composeCodeSystemElements(element);
39569      composeElementClose(element);
39570      xml.exit(FHIR_NS, name);
39571    }
39572  }
39573
39574  protected void composeCodeSystemElements(CodeSystem element) throws IOException {
39575    composeMetadataResourceElements(element);
39576    if (element.hasUrlElement()) {
39577      composeUri("url", element.getUrlElement());
39578    }
39579    if (element.hasIdentifier()) { 
39580      for (Identifier e : element.getIdentifier()) 
39581          composeIdentifier("identifier", e);
39582    }
39583    if (element.hasVersionElement()) {
39584      composeString("version", element.getVersionElement());
39585    }
39586    if (element.hasVersionAlgorithm()) {
39587      composeType("versionAlgorithm", element.getVersionAlgorithm());
39588    }    if (element.hasNameElement()) {
39589      composeString("name", element.getNameElement());
39590    }
39591    if (element.hasTitleElement()) {
39592      composeString("title", element.getTitleElement());
39593    }
39594    if (element.hasStatusElement())
39595      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
39596    if (element.hasExperimentalElement()) {
39597      composeBoolean("experimental", element.getExperimentalElement());
39598    }
39599    if (element.hasDateElement()) {
39600      composeDateTime("date", element.getDateElement());
39601    }
39602    if (element.hasPublisherElement()) {
39603      composeString("publisher", element.getPublisherElement());
39604    }
39605    if (element.hasContact()) { 
39606      for (ContactDetail e : element.getContact()) 
39607          composeContactDetail("contact", e);
39608    }
39609    if (element.hasDescriptionElement()) {
39610      composeMarkdown("description", element.getDescriptionElement());
39611    }
39612    if (element.hasUseContext()) { 
39613      for (UsageContext e : element.getUseContext()) 
39614          composeUsageContext("useContext", e);
39615    }
39616    if (element.hasJurisdiction()) { 
39617      for (CodeableConcept e : element.getJurisdiction()) 
39618          composeCodeableConcept("jurisdiction", e);
39619    }
39620    if (element.hasPurposeElement()) {
39621      composeMarkdown("purpose", element.getPurposeElement());
39622    }
39623    if (element.hasCopyrightElement()) {
39624      composeMarkdown("copyright", element.getCopyrightElement());
39625    }
39626    if (element.hasCopyrightLabelElement()) {
39627      composeString("copyrightLabel", element.getCopyrightLabelElement());
39628    }
39629    if (element.hasApprovalDateElement()) {
39630      composeDate("approvalDate", element.getApprovalDateElement());
39631    }
39632    if (element.hasLastReviewDateElement()) {
39633      composeDate("lastReviewDate", element.getLastReviewDateElement());
39634    }
39635    if (element.hasEffectivePeriod()) {
39636      composePeriod("effectivePeriod", element.getEffectivePeriod());
39637    }
39638    if (element.hasTopic()) { 
39639      for (CodeableConcept e : element.getTopic()) 
39640          composeCodeableConcept("topic", e);
39641    }
39642    if (element.hasAuthor()) { 
39643      for (ContactDetail e : element.getAuthor()) 
39644          composeContactDetail("author", e);
39645    }
39646    if (element.hasEditor()) { 
39647      for (ContactDetail e : element.getEditor()) 
39648          composeContactDetail("editor", e);
39649    }
39650    if (element.hasReviewer()) { 
39651      for (ContactDetail e : element.getReviewer()) 
39652          composeContactDetail("reviewer", e);
39653    }
39654    if (element.hasEndorser()) { 
39655      for (ContactDetail e : element.getEndorser()) 
39656          composeContactDetail("endorser", e);
39657    }
39658    if (element.hasRelatedArtifact()) { 
39659      for (RelatedArtifact e : element.getRelatedArtifact()) 
39660          composeRelatedArtifact("relatedArtifact", e);
39661    }
39662    if (element.hasCaseSensitiveElement()) {
39663      composeBoolean("caseSensitive", element.getCaseSensitiveElement());
39664    }
39665    if (element.hasValueSetElement()) {
39666      composeCanonical("valueSet", element.getValueSetElement());
39667    }
39668    if (element.hasHierarchyMeaningElement())
39669      composeEnumeration("hierarchyMeaning", element.getHierarchyMeaningElement(), new CodeSystem.CodeSystemHierarchyMeaningEnumFactory());
39670    if (element.hasCompositionalElement()) {
39671      composeBoolean("compositional", element.getCompositionalElement());
39672    }
39673    if (element.hasVersionNeededElement()) {
39674      composeBoolean("versionNeeded", element.getVersionNeededElement());
39675    }
39676    if (element.hasContentElement())
39677      composeEnumeration("content", element.getContentElement(), new Enumerations.CodeSystemContentModeEnumFactory());
39678    if (element.hasSupplementsElement()) {
39679      composeCanonical("supplements", element.getSupplementsElement());
39680    }
39681    if (element.hasCountElement()) {
39682      composeUnsignedInt("count", element.getCountElement());
39683    }
39684    if (element.hasFilter()) { 
39685      for (CodeSystem.CodeSystemFilterComponent e : element.getFilter()) 
39686          composeCodeSystemFilterComponent("filter", e);
39687    }
39688    if (element.hasProperty()) { 
39689      for (CodeSystem.PropertyComponent e : element.getProperty()) 
39690          composeCodeSystemPropertyComponent("property", e);
39691    }
39692    if (element.hasConcept()) { 
39693      for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
39694          composeCodeSystemConceptDefinitionComponent("concept", e);
39695    }
39696  }
39697
39698  protected void composeCodeSystemFilterComponent(String name, CodeSystem.CodeSystemFilterComponent element) throws IOException {
39699    if (element != null) {
39700    composeElementAttributes(element);
39701      xml.enter(FHIR_NS, name);
39702      composeCodeSystemFilterComponentElements(element);
39703      composeElementClose(element);
39704      xml.exit(FHIR_NS, name);
39705    }
39706  }
39707
39708  protected void composeCodeSystemFilterComponentElements(CodeSystem.CodeSystemFilterComponent element) throws IOException {
39709    composeBackboneElementElements(element);
39710    if (element.hasCodeElement()) {
39711      composeCode("code", element.getCodeElement());
39712    }
39713    if (element.hasDescriptionElement()) {
39714      composeString("description", element.getDescriptionElement());
39715    }
39716      if (element.hasOperator()) 
39717        for (Enumeration<Enumerations.FilterOperator> e : element.getOperator()) 
39718          composeEnumeration("operator", e, new Enumerations.FilterOperatorEnumFactory());
39719    if (element.hasValueElement()) {
39720      composeString("value", element.getValueElement());
39721    }
39722  }
39723
39724  protected void composeCodeSystemPropertyComponent(String name, CodeSystem.PropertyComponent element) throws IOException {
39725    if (element != null) {
39726    composeElementAttributes(element);
39727      xml.enter(FHIR_NS, name);
39728      composeCodeSystemPropertyComponentElements(element);
39729      composeElementClose(element);
39730      xml.exit(FHIR_NS, name);
39731    }
39732  }
39733
39734  protected void composeCodeSystemPropertyComponentElements(CodeSystem.PropertyComponent element) throws IOException {
39735    composeBackboneElementElements(element);
39736    if (element.hasCodeElement()) {
39737      composeCode("code", element.getCodeElement());
39738    }
39739    if (element.hasUriElement()) {
39740      composeUri("uri", element.getUriElement());
39741    }
39742    if (element.hasDescriptionElement()) {
39743      composeString("description", element.getDescriptionElement());
39744    }
39745    if (element.hasTypeElement())
39746      composeEnumeration("type", element.getTypeElement(), new CodeSystem.PropertyTypeEnumFactory());
39747  }
39748
39749  protected void composeCodeSystemConceptDefinitionComponent(String name, CodeSystem.ConceptDefinitionComponent element) throws IOException {
39750    if (element != null) {
39751    composeElementAttributes(element);
39752      xml.enter(FHIR_NS, name);
39753      composeCodeSystemConceptDefinitionComponentElements(element);
39754      composeElementClose(element);
39755      xml.exit(FHIR_NS, name);
39756    }
39757  }
39758
39759  protected void composeCodeSystemConceptDefinitionComponentElements(CodeSystem.ConceptDefinitionComponent element) throws IOException {
39760    composeBackboneElementElements(element);
39761    if (element.hasCodeElement()) {
39762      composeCode("code", element.getCodeElement());
39763    }
39764    if (element.hasDisplayElement()) {
39765      composeString("display", element.getDisplayElement());
39766    }
39767    if (element.hasDefinitionElement()) {
39768      composeString("definition", element.getDefinitionElement());
39769    }
39770    if (element.hasDesignation()) { 
39771      for (CodeSystem.ConceptDefinitionDesignationComponent e : element.getDesignation()) 
39772          composeCodeSystemConceptDefinitionDesignationComponent("designation", e);
39773    }
39774    if (element.hasProperty()) { 
39775      for (CodeSystem.ConceptPropertyComponent e : element.getProperty()) 
39776          composeCodeSystemConceptPropertyComponent("property", e);
39777    }
39778    if (element.hasConcept()) { 
39779      for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
39780          composeCodeSystemConceptDefinitionComponent("concept", e);
39781    }
39782  }
39783
39784  protected void composeCodeSystemConceptDefinitionDesignationComponent(String name, CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
39785    if (element != null) {
39786    composeElementAttributes(element);
39787      xml.enter(FHIR_NS, name);
39788      composeCodeSystemConceptDefinitionDesignationComponentElements(element);
39789      composeElementClose(element);
39790      xml.exit(FHIR_NS, name);
39791    }
39792  }
39793
39794  protected void composeCodeSystemConceptDefinitionDesignationComponentElements(CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
39795    composeBackboneElementElements(element);
39796    if (element.hasLanguageElement()) {
39797      composeCode("language", element.getLanguageElement());
39798    }
39799    if (element.hasUse()) {
39800      composeCoding("use", element.getUse());
39801    }
39802    if (element.hasAdditionalUse()) { 
39803      for (Coding e : element.getAdditionalUse()) 
39804          composeCoding("additionalUse", e);
39805    }
39806    if (element.hasValueElement()) {
39807      composeString("value", element.getValueElement());
39808    }
39809  }
39810
39811  protected void composeCodeSystemConceptPropertyComponent(String name, CodeSystem.ConceptPropertyComponent element) throws IOException {
39812    if (element != null) {
39813    composeElementAttributes(element);
39814      xml.enter(FHIR_NS, name);
39815      composeCodeSystemConceptPropertyComponentElements(element);
39816      composeElementClose(element);
39817      xml.exit(FHIR_NS, name);
39818    }
39819  }
39820
39821  protected void composeCodeSystemConceptPropertyComponentElements(CodeSystem.ConceptPropertyComponent element) throws IOException {
39822    composeBackboneElementElements(element);
39823    if (element.hasCodeElement()) {
39824      composeCode("code", element.getCodeElement());
39825    }
39826    if (element.hasValue()) {
39827      composeType("value", element.getValue());
39828    }  }
39829
39830  protected void composeCommunication(String name, Communication element) throws IOException {
39831    if (element != null) {
39832    composeResourceAttributes(element);
39833      xml.enter(FHIR_NS, name);
39834      composeCommunicationElements(element);
39835      composeElementClose(element);
39836      xml.exit(FHIR_NS, name);
39837    }
39838  }
39839
39840  protected void composeCommunicationElements(Communication element) throws IOException {
39841    composeDomainResourceElements(element);
39842    if (element.hasIdentifier()) { 
39843      for (Identifier e : element.getIdentifier()) 
39844          composeIdentifier("identifier", e);
39845    }
39846    if (element.hasInstantiatesCanonical()) { 
39847      for (CanonicalType e : element.getInstantiatesCanonical()) 
39848          composeCanonical("instantiatesCanonical", e);
39849    }
39850    if (element.hasInstantiatesUri()) { 
39851      for (UriType e : element.getInstantiatesUri()) 
39852          composeUri("instantiatesUri", e);
39853    }
39854    if (element.hasBasedOn()) { 
39855      for (Reference e : element.getBasedOn()) 
39856          composeReference("basedOn", e);
39857    }
39858    if (element.hasPartOf()) { 
39859      for (Reference e : element.getPartOf()) 
39860          composeReference("partOf", e);
39861    }
39862    if (element.hasInResponseTo()) { 
39863      for (Reference e : element.getInResponseTo()) 
39864          composeReference("inResponseTo", e);
39865    }
39866    if (element.hasStatusElement())
39867      composeEnumeration("status", element.getStatusElement(), new Enumerations.EventStatusEnumFactory());
39868    if (element.hasStatusReason()) {
39869      composeCodeableConcept("statusReason", element.getStatusReason());
39870    }
39871    if (element.hasCategory()) { 
39872      for (CodeableConcept e : element.getCategory()) 
39873          composeCodeableConcept("category", e);
39874    }
39875    if (element.hasPriorityElement())
39876      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
39877    if (element.hasMedium()) { 
39878      for (CodeableConcept e : element.getMedium()) 
39879          composeCodeableConcept("medium", e);
39880    }
39881    if (element.hasSubject()) {
39882      composeReference("subject", element.getSubject());
39883    }
39884    if (element.hasTopic()) {
39885      composeCodeableConcept("topic", element.getTopic());
39886    }
39887    if (element.hasAbout()) { 
39888      for (Reference e : element.getAbout()) 
39889          composeReference("about", e);
39890    }
39891    if (element.hasEncounter()) {
39892      composeReference("encounter", element.getEncounter());
39893    }
39894    if (element.hasSentElement()) {
39895      composeDateTime("sent", element.getSentElement());
39896    }
39897    if (element.hasReceivedElement()) {
39898      composeDateTime("received", element.getReceivedElement());
39899    }
39900    if (element.hasRecipient()) { 
39901      for (Reference e : element.getRecipient()) 
39902          composeReference("recipient", e);
39903    }
39904    if (element.hasSender()) {
39905      composeReference("sender", element.getSender());
39906    }
39907    if (element.hasReason()) { 
39908      for (CodeableReference e : element.getReason()) 
39909          composeCodeableReference("reason", e);
39910    }
39911    if (element.hasPayload()) { 
39912      for (Communication.CommunicationPayloadComponent e : element.getPayload()) 
39913          composeCommunicationPayloadComponent("payload", e);
39914    }
39915    if (element.hasNote()) { 
39916      for (Annotation e : element.getNote()) 
39917          composeAnnotation("note", e);
39918    }
39919  }
39920
39921  protected void composeCommunicationPayloadComponent(String name, Communication.CommunicationPayloadComponent element) throws IOException {
39922    if (element != null) {
39923    composeElementAttributes(element);
39924      xml.enter(FHIR_NS, name);
39925      composeCommunicationPayloadComponentElements(element);
39926      composeElementClose(element);
39927      xml.exit(FHIR_NS, name);
39928    }
39929  }
39930
39931  protected void composeCommunicationPayloadComponentElements(Communication.CommunicationPayloadComponent element) throws IOException {
39932    composeBackboneElementElements(element);
39933    if (element.hasContent()) {
39934      composeType("content", element.getContent());
39935    }  }
39936
39937  protected void composeCommunicationRequest(String name, CommunicationRequest element) throws IOException {
39938    if (element != null) {
39939    composeResourceAttributes(element);
39940      xml.enter(FHIR_NS, name);
39941      composeCommunicationRequestElements(element);
39942      composeElementClose(element);
39943      xml.exit(FHIR_NS, name);
39944    }
39945  }
39946
39947  protected void composeCommunicationRequestElements(CommunicationRequest element) throws IOException {
39948    composeDomainResourceElements(element);
39949    if (element.hasIdentifier()) { 
39950      for (Identifier e : element.getIdentifier()) 
39951          composeIdentifier("identifier", e);
39952    }
39953    if (element.hasBasedOn()) { 
39954      for (Reference e : element.getBasedOn()) 
39955          composeReference("basedOn", e);
39956    }
39957    if (element.hasReplaces()) { 
39958      for (Reference e : element.getReplaces()) 
39959          composeReference("replaces", e);
39960    }
39961    if (element.hasGroupIdentifier()) {
39962      composeIdentifier("groupIdentifier", element.getGroupIdentifier());
39963    }
39964    if (element.hasStatusElement())
39965      composeEnumeration("status", element.getStatusElement(), new Enumerations.RequestStatusEnumFactory());
39966    if (element.hasStatusReason()) {
39967      composeCodeableConcept("statusReason", element.getStatusReason());
39968    }
39969    if (element.hasIntentElement())
39970      composeEnumeration("intent", element.getIntentElement(), new Enumerations.RequestIntentEnumFactory());
39971    if (element.hasCategory()) { 
39972      for (CodeableConcept e : element.getCategory()) 
39973          composeCodeableConcept("category", e);
39974    }
39975    if (element.hasPriorityElement())
39976      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
39977    if (element.hasDoNotPerformElement()) {
39978      composeBoolean("doNotPerform", element.getDoNotPerformElement());
39979    }
39980    if (element.hasMedium()) { 
39981      for (CodeableConcept e : element.getMedium()) 
39982          composeCodeableConcept("medium", e);
39983    }
39984    if (element.hasSubject()) {
39985      composeReference("subject", element.getSubject());
39986    }
39987    if (element.hasAbout()) { 
39988      for (Reference e : element.getAbout()) 
39989          composeReference("about", e);
39990    }
39991    if (element.hasEncounter()) {
39992      composeReference("encounter", element.getEncounter());
39993    }
39994    if (element.hasPayload()) { 
39995      for (CommunicationRequest.CommunicationRequestPayloadComponent e : element.getPayload()) 
39996          composeCommunicationRequestPayloadComponent("payload", e);
39997    }
39998    if (element.hasOccurrence()) {
39999      composeType("occurrence", element.getOccurrence());
40000    }    if (element.hasAuthoredOnElement()) {
40001      composeDateTime("authoredOn", element.getAuthoredOnElement());
40002    }
40003    if (element.hasRequester()) {
40004      composeReference("requester", element.getRequester());
40005    }
40006    if (element.hasRecipient()) { 
40007      for (Reference e : element.getRecipient()) 
40008          composeReference("recipient", e);
40009    }
40010    if (element.hasInformationProvider()) { 
40011      for (Reference e : element.getInformationProvider()) 
40012          composeReference("informationProvider", e);
40013    }
40014    if (element.hasReason()) { 
40015      for (CodeableReference e : element.getReason()) 
40016          composeCodeableReference("reason", e);
40017    }
40018    if (element.hasNote()) { 
40019      for (Annotation e : element.getNote()) 
40020          composeAnnotation("note", e);
40021    }
40022  }
40023
40024  protected void composeCommunicationRequestPayloadComponent(String name, CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
40025    if (element != null) {
40026    composeElementAttributes(element);
40027      xml.enter(FHIR_NS, name);
40028      composeCommunicationRequestPayloadComponentElements(element);
40029      composeElementClose(element);
40030      xml.exit(FHIR_NS, name);
40031    }
40032  }
40033
40034  protected void composeCommunicationRequestPayloadComponentElements(CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
40035    composeBackboneElementElements(element);
40036    if (element.hasContent()) {
40037      composeType("content", element.getContent());
40038    }  }
40039
40040  protected void composeCompartmentDefinition(String name, CompartmentDefinition element) throws IOException {
40041    if (element != null) {
40042    composeResourceAttributes(element);
40043      xml.enter(FHIR_NS, name);
40044      composeCompartmentDefinitionElements(element);
40045      composeElementClose(element);
40046      xml.exit(FHIR_NS, name);
40047    }
40048  }
40049
40050  protected void composeCompartmentDefinitionElements(CompartmentDefinition element) throws IOException {
40051    composeCanonicalResourceElements(element);
40052    if (element.hasUrlElement()) {
40053      composeUri("url", element.getUrlElement());
40054    }
40055    if (element.hasVersionElement()) {
40056      composeString("version", element.getVersionElement());
40057    }
40058    if (element.hasVersionAlgorithm()) {
40059      composeType("versionAlgorithm", element.getVersionAlgorithm());
40060    }    if (element.hasNameElement()) {
40061      composeString("name", element.getNameElement());
40062    }
40063    if (element.hasTitleElement()) {
40064      composeString("title", element.getTitleElement());
40065    }
40066    if (element.hasStatusElement())
40067      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
40068    if (element.hasExperimentalElement()) {
40069      composeBoolean("experimental", element.getExperimentalElement());
40070    }
40071    if (element.hasDateElement()) {
40072      composeDateTime("date", element.getDateElement());
40073    }
40074    if (element.hasPublisherElement()) {
40075      composeString("publisher", element.getPublisherElement());
40076    }
40077    if (element.hasContact()) { 
40078      for (ContactDetail e : element.getContact()) 
40079          composeContactDetail("contact", e);
40080    }
40081    if (element.hasDescriptionElement()) {
40082      composeMarkdown("description", element.getDescriptionElement());
40083    }
40084    if (element.hasUseContext()) { 
40085      for (UsageContext e : element.getUseContext()) 
40086          composeUsageContext("useContext", e);
40087    }
40088    if (element.hasPurposeElement()) {
40089      composeMarkdown("purpose", element.getPurposeElement());
40090    }
40091    if (element.hasCodeElement())
40092      composeEnumeration("code", element.getCodeElement(), new Enumerations.CompartmentTypeEnumFactory());
40093    if (element.hasSearchElement()) {
40094      composeBoolean("search", element.getSearchElement());
40095    }
40096    if (element.hasResource()) { 
40097      for (CompartmentDefinition.CompartmentDefinitionResourceComponent e : element.getResource()) 
40098          composeCompartmentDefinitionResourceComponent("resource", e);
40099    }
40100  }
40101
40102  protected void composeCompartmentDefinitionResourceComponent(String name, CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
40103    if (element != null) {
40104    composeElementAttributes(element);
40105      xml.enter(FHIR_NS, name);
40106      composeCompartmentDefinitionResourceComponentElements(element);
40107      composeElementClose(element);
40108      xml.exit(FHIR_NS, name);
40109    }
40110  }
40111
40112  protected void composeCompartmentDefinitionResourceComponentElements(CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
40113    composeBackboneElementElements(element);
40114    if (element.hasCodeElement()) {
40115      composeCode("code", element.getCodeElement());
40116    }
40117    if (element.hasParam()) { 
40118      for (StringType e : element.getParam()) 
40119          composeString("param", e);
40120    }
40121    if (element.hasDocumentationElement()) {
40122      composeString("documentation", element.getDocumentationElement());
40123    }
40124    if (element.hasStartParamElement()) {
40125      composeUri("startParam", element.getStartParamElement());
40126    }
40127    if (element.hasEndParamElement()) {
40128      composeUri("endParam", element.getEndParamElement());
40129    }
40130  }
40131
40132  protected void composeComposition(String name, Composition element) throws IOException {
40133    if (element != null) {
40134    composeResourceAttributes(element);
40135      xml.enter(FHIR_NS, name);
40136      composeCompositionElements(element);
40137      composeElementClose(element);
40138      xml.exit(FHIR_NS, name);
40139    }
40140  }
40141
40142  protected void composeCompositionElements(Composition element) throws IOException {
40143    composeDomainResourceElements(element);
40144    if (element.hasUrlElement()) {
40145      composeUri("url", element.getUrlElement());
40146    }
40147    if (element.hasIdentifier()) { 
40148      for (Identifier e : element.getIdentifier()) 
40149          composeIdentifier("identifier", e);
40150    }
40151    if (element.hasVersionElement()) {
40152      composeString("version", element.getVersionElement());
40153    }
40154    if (element.hasStatusElement())
40155      composeEnumeration("status", element.getStatusElement(), new Enumerations.CompositionStatusEnumFactory());
40156    if (element.hasType()) {
40157      composeCodeableConcept("type", element.getType());
40158    }
40159    if (element.hasCategory()) { 
40160      for (CodeableConcept e : element.getCategory()) 
40161          composeCodeableConcept("category", e);
40162    }
40163    if (element.hasSubject()) { 
40164      for (Reference e : element.getSubject()) 
40165          composeReference("subject", e);
40166    }
40167    if (element.hasEncounter()) {
40168      composeReference("encounter", element.getEncounter());
40169    }
40170    if (element.hasDateElement()) {
40171      composeDateTime("date", element.getDateElement());
40172    }
40173    if (element.hasUseContext()) { 
40174      for (UsageContext e : element.getUseContext()) 
40175          composeUsageContext("useContext", e);
40176    }
40177    if (element.hasAuthor()) { 
40178      for (Reference e : element.getAuthor()) 
40179          composeReference("author", e);
40180    }
40181    if (element.hasNameElement()) {
40182      composeString("name", element.getNameElement());
40183    }
40184    if (element.hasTitleElement()) {
40185      composeString("title", element.getTitleElement());
40186    }
40187    if (element.hasNote()) { 
40188      for (Annotation e : element.getNote()) 
40189          composeAnnotation("note", e);
40190    }
40191    if (element.hasAttester()) { 
40192      for (Composition.CompositionAttesterComponent e : element.getAttester()) 
40193          composeCompositionAttesterComponent("attester", e);
40194    }
40195    if (element.hasCustodian()) {
40196      composeReference("custodian", element.getCustodian());
40197    }
40198    if (element.hasRelatesTo()) { 
40199      for (RelatedArtifact e : element.getRelatesTo()) 
40200          composeRelatedArtifact("relatesTo", e);
40201    }
40202    if (element.hasEvent()) { 
40203      for (Composition.CompositionEventComponent e : element.getEvent()) 
40204          composeCompositionEventComponent("event", e);
40205    }
40206    if (element.hasSection()) { 
40207      for (Composition.SectionComponent e : element.getSection()) 
40208          composeCompositionSectionComponent("section", e);
40209    }
40210  }
40211
40212  protected void composeCompositionAttesterComponent(String name, Composition.CompositionAttesterComponent element) throws IOException {
40213    if (element != null) {
40214    composeElementAttributes(element);
40215      xml.enter(FHIR_NS, name);
40216      composeCompositionAttesterComponentElements(element);
40217      composeElementClose(element);
40218      xml.exit(FHIR_NS, name);
40219    }
40220  }
40221
40222  protected void composeCompositionAttesterComponentElements(Composition.CompositionAttesterComponent element) throws IOException {
40223    composeBackboneElementElements(element);
40224    if (element.hasMode()) {
40225      composeCodeableConcept("mode", element.getMode());
40226    }
40227    if (element.hasTimeElement()) {
40228      composeDateTime("time", element.getTimeElement());
40229    }
40230    if (element.hasParty()) {
40231      composeReference("party", element.getParty());
40232    }
40233  }
40234
40235  protected void composeCompositionEventComponent(String name, Composition.CompositionEventComponent element) throws IOException {
40236    if (element != null) {
40237    composeElementAttributes(element);
40238      xml.enter(FHIR_NS, name);
40239      composeCompositionEventComponentElements(element);
40240      composeElementClose(element);
40241      xml.exit(FHIR_NS, name);
40242    }
40243  }
40244
40245  protected void composeCompositionEventComponentElements(Composition.CompositionEventComponent element) throws IOException {
40246    composeBackboneElementElements(element);
40247    if (element.hasPeriod()) {
40248      composePeriod("period", element.getPeriod());
40249    }
40250    if (element.hasDetail()) { 
40251      for (CodeableReference e : element.getDetail()) 
40252          composeCodeableReference("detail", e);
40253    }
40254  }
40255
40256  protected void composeCompositionSectionComponent(String name, Composition.SectionComponent element) throws IOException {
40257    if (element != null) {
40258    composeElementAttributes(element);
40259      xml.enter(FHIR_NS, name);
40260      composeCompositionSectionComponentElements(element);
40261      composeElementClose(element);
40262      xml.exit(FHIR_NS, name);
40263    }
40264  }
40265
40266  protected void composeCompositionSectionComponentElements(Composition.SectionComponent element) throws IOException {
40267    composeBackboneElementElements(element);
40268    if (element.hasTitleElement()) {
40269      composeString("title", element.getTitleElement());
40270    }
40271    if (element.hasCode()) {
40272      composeCodeableConcept("code", element.getCode());
40273    }
40274    if (element.hasAuthor()) { 
40275      for (Reference e : element.getAuthor()) 
40276          composeReference("author", e);
40277    }
40278    if (element.hasFocus()) {
40279      composeReference("focus", element.getFocus());
40280    }
40281    if (element.hasText()) {
40282      composeNarrative("text", element.getText());
40283    }
40284    if (element.hasOrderedBy()) {
40285      composeCodeableConcept("orderedBy", element.getOrderedBy());
40286    }
40287    if (element.hasEntry()) { 
40288      for (Reference e : element.getEntry()) 
40289          composeReference("entry", e);
40290    }
40291    if (element.hasEmptyReason()) {
40292      composeCodeableConcept("emptyReason", element.getEmptyReason());
40293    }
40294    if (element.hasSection()) { 
40295      for (Composition.SectionComponent e : element.getSection()) 
40296          composeCompositionSectionComponent("section", e);
40297    }
40298  }
40299
40300  protected void composeConceptMap(String name, ConceptMap element) throws IOException {
40301    if (element != null) {
40302    composeResourceAttributes(element);
40303      xml.enter(FHIR_NS, name);
40304      composeConceptMapElements(element);
40305      composeElementClose(element);
40306      xml.exit(FHIR_NS, name);
40307    }
40308  }
40309
40310  protected void composeConceptMapElements(ConceptMap element) throws IOException {
40311    composeMetadataResourceElements(element);
40312    if (element.hasUrlElement()) {
40313      composeUri("url", element.getUrlElement());
40314    }
40315    if (element.hasIdentifier()) { 
40316      for (Identifier e : element.getIdentifier()) 
40317          composeIdentifier("identifier", e);
40318    }
40319    if (element.hasVersionElement()) {
40320      composeString("version", element.getVersionElement());
40321    }
40322    if (element.hasVersionAlgorithm()) {
40323      composeType("versionAlgorithm", element.getVersionAlgorithm());
40324    }    if (element.hasNameElement()) {
40325      composeString("name", element.getNameElement());
40326    }
40327    if (element.hasTitleElement()) {
40328      composeString("title", element.getTitleElement());
40329    }
40330    if (element.hasStatusElement())
40331      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
40332    if (element.hasExperimentalElement()) {
40333      composeBoolean("experimental", element.getExperimentalElement());
40334    }
40335    if (element.hasDateElement()) {
40336      composeDateTime("date", element.getDateElement());
40337    }
40338    if (element.hasPublisherElement()) {
40339      composeString("publisher", element.getPublisherElement());
40340    }
40341    if (element.hasContact()) { 
40342      for (ContactDetail e : element.getContact()) 
40343          composeContactDetail("contact", e);
40344    }
40345    if (element.hasDescriptionElement()) {
40346      composeMarkdown("description", element.getDescriptionElement());
40347    }
40348    if (element.hasUseContext()) { 
40349      for (UsageContext e : element.getUseContext()) 
40350          composeUsageContext("useContext", e);
40351    }
40352    if (element.hasJurisdiction()) { 
40353      for (CodeableConcept e : element.getJurisdiction()) 
40354          composeCodeableConcept("jurisdiction", e);
40355    }
40356    if (element.hasPurposeElement()) {
40357      composeMarkdown("purpose", element.getPurposeElement());
40358    }
40359    if (element.hasCopyrightElement()) {
40360      composeMarkdown("copyright", element.getCopyrightElement());
40361    }
40362    if (element.hasCopyrightLabelElement()) {
40363      composeString("copyrightLabel", element.getCopyrightLabelElement());
40364    }
40365    if (element.hasApprovalDateElement()) {
40366      composeDate("approvalDate", element.getApprovalDateElement());
40367    }
40368    if (element.hasLastReviewDateElement()) {
40369      composeDate("lastReviewDate", element.getLastReviewDateElement());
40370    }
40371    if (element.hasEffectivePeriod()) {
40372      composePeriod("effectivePeriod", element.getEffectivePeriod());
40373    }
40374    if (element.hasTopic()) { 
40375      for (CodeableConcept e : element.getTopic()) 
40376          composeCodeableConcept("topic", e);
40377    }
40378    if (element.hasAuthor()) { 
40379      for (ContactDetail e : element.getAuthor()) 
40380          composeContactDetail("author", e);
40381    }
40382    if (element.hasEditor()) { 
40383      for (ContactDetail e : element.getEditor()) 
40384          composeContactDetail("editor", e);
40385    }
40386    if (element.hasReviewer()) { 
40387      for (ContactDetail e : element.getReviewer()) 
40388          composeContactDetail("reviewer", e);
40389    }
40390    if (element.hasEndorser()) { 
40391      for (ContactDetail e : element.getEndorser()) 
40392          composeContactDetail("endorser", e);
40393    }
40394    if (element.hasRelatedArtifact()) { 
40395      for (RelatedArtifact e : element.getRelatedArtifact()) 
40396          composeRelatedArtifact("relatedArtifact", e);
40397    }
40398    if (element.hasProperty()) { 
40399      for (ConceptMap.PropertyComponent e : element.getProperty()) 
40400          composeConceptMapPropertyComponent("property", e);
40401    }
40402    if (element.hasAdditionalAttribute()) { 
40403      for (ConceptMap.AdditionalAttributeComponent e : element.getAdditionalAttribute()) 
40404          composeConceptMapAdditionalAttributeComponent("additionalAttribute", e);
40405    }
40406    if (element.hasSourceScope()) {
40407      composeType("sourceScope", element.getSourceScope());
40408    }    if (element.hasTargetScope()) {
40409      composeType("targetScope", element.getTargetScope());
40410    }    if (element.hasGroup()) { 
40411      for (ConceptMap.ConceptMapGroupComponent e : element.getGroup()) 
40412          composeConceptMapGroupComponent("group", e);
40413    }
40414  }
40415
40416  protected void composeConceptMapPropertyComponent(String name, ConceptMap.PropertyComponent element) throws IOException {
40417    if (element != null) {
40418    composeElementAttributes(element);
40419      xml.enter(FHIR_NS, name);
40420      composeConceptMapPropertyComponentElements(element);
40421      composeElementClose(element);
40422      xml.exit(FHIR_NS, name);
40423    }
40424  }
40425
40426  protected void composeConceptMapPropertyComponentElements(ConceptMap.PropertyComponent element) throws IOException {
40427    composeBackboneElementElements(element);
40428    if (element.hasCodeElement()) {
40429      composeCode("code", element.getCodeElement());
40430    }
40431    if (element.hasUriElement()) {
40432      composeUri("uri", element.getUriElement());
40433    }
40434    if (element.hasDescriptionElement()) {
40435      composeString("description", element.getDescriptionElement());
40436    }
40437    if (element.hasTypeElement())
40438      composeEnumeration("type", element.getTypeElement(), new ConceptMap.ConceptMapPropertyTypeEnumFactory());
40439    if (element.hasSystemElement()) {
40440      composeCanonical("system", element.getSystemElement());
40441    }
40442  }
40443
40444  protected void composeConceptMapAdditionalAttributeComponent(String name, ConceptMap.AdditionalAttributeComponent element) throws IOException {
40445    if (element != null) {
40446    composeElementAttributes(element);
40447      xml.enter(FHIR_NS, name);
40448      composeConceptMapAdditionalAttributeComponentElements(element);
40449      composeElementClose(element);
40450      xml.exit(FHIR_NS, name);
40451    }
40452  }
40453
40454  protected void composeConceptMapAdditionalAttributeComponentElements(ConceptMap.AdditionalAttributeComponent element) throws IOException {
40455    composeBackboneElementElements(element);
40456    if (element.hasCodeElement()) {
40457      composeCode("code", element.getCodeElement());
40458    }
40459    if (element.hasUriElement()) {
40460      composeUri("uri", element.getUriElement());
40461    }
40462    if (element.hasDescriptionElement()) {
40463      composeString("description", element.getDescriptionElement());
40464    }
40465    if (element.hasTypeElement())
40466      composeEnumeration("type", element.getTypeElement(), new ConceptMap.ConceptMapAttributeTypeEnumFactory());
40467  }
40468
40469  protected void composeConceptMapGroupComponent(String name, ConceptMap.ConceptMapGroupComponent element) throws IOException {
40470    if (element != null) {
40471    composeElementAttributes(element);
40472      xml.enter(FHIR_NS, name);
40473      composeConceptMapGroupComponentElements(element);
40474      composeElementClose(element);
40475      xml.exit(FHIR_NS, name);
40476    }
40477  }
40478
40479  protected void composeConceptMapGroupComponentElements(ConceptMap.ConceptMapGroupComponent element) throws IOException {
40480    composeBackboneElementElements(element);
40481    if (element.hasSourceElement()) {
40482      composeCanonical("source", element.getSourceElement());
40483    }
40484    if (element.hasTargetElement()) {
40485      composeCanonical("target", element.getTargetElement());
40486    }
40487    if (element.hasElement()) { 
40488      for (ConceptMap.SourceElementComponent e : element.getElement()) 
40489          composeConceptMapSourceElementComponent("element", e);
40490    }
40491    if (element.hasUnmapped()) {
40492      composeConceptMapGroupUnmappedComponent("unmapped", element.getUnmapped());
40493    }
40494  }
40495
40496  protected void composeConceptMapSourceElementComponent(String name, ConceptMap.SourceElementComponent element) throws IOException {
40497    if (element != null) {
40498    composeElementAttributes(element);
40499      xml.enter(FHIR_NS, name);
40500      composeConceptMapSourceElementComponentElements(element);
40501      composeElementClose(element);
40502      xml.exit(FHIR_NS, name);
40503    }
40504  }
40505
40506  protected void composeConceptMapSourceElementComponentElements(ConceptMap.SourceElementComponent element) throws IOException {
40507    composeBackboneElementElements(element);
40508    if (element.hasCodeElement()) {
40509      composeCode("code", element.getCodeElement());
40510    }
40511    if (element.hasDisplayElement()) {
40512      composeString("display", element.getDisplayElement());
40513    }
40514    if (element.hasValueSetElement()) {
40515      composeCanonical("valueSet", element.getValueSetElement());
40516    }
40517    if (element.hasNoMapElement()) {
40518      composeBoolean("noMap", element.getNoMapElement());
40519    }
40520    if (element.hasTarget()) { 
40521      for (ConceptMap.TargetElementComponent e : element.getTarget()) 
40522          composeConceptMapTargetElementComponent("target", e);
40523    }
40524  }
40525
40526  protected void composeConceptMapTargetElementComponent(String name, ConceptMap.TargetElementComponent element) throws IOException {
40527    if (element != null) {
40528    composeElementAttributes(element);
40529      xml.enter(FHIR_NS, name);
40530      composeConceptMapTargetElementComponentElements(element);
40531      composeElementClose(element);
40532      xml.exit(FHIR_NS, name);
40533    }
40534  }
40535
40536  protected void composeConceptMapTargetElementComponentElements(ConceptMap.TargetElementComponent element) throws IOException {
40537    composeBackboneElementElements(element);
40538    if (element.hasCodeElement()) {
40539      composeCode("code", element.getCodeElement());
40540    }
40541    if (element.hasDisplayElement()) {
40542      composeString("display", element.getDisplayElement());
40543    }
40544    if (element.hasValueSetElement()) {
40545      composeCanonical("valueSet", element.getValueSetElement());
40546    }
40547    if (element.hasRelationshipElement())
40548      composeEnumeration("relationship", element.getRelationshipElement(), new Enumerations.ConceptMapRelationshipEnumFactory());
40549    if (element.hasCommentElement()) {
40550      composeString("comment", element.getCommentElement());
40551    }
40552    if (element.hasProperty()) { 
40553      for (ConceptMap.MappingPropertyComponent e : element.getProperty()) 
40554          composeConceptMapMappingPropertyComponent("property", e);
40555    }
40556    if (element.hasDependsOn()) { 
40557      for (ConceptMap.OtherElementComponent e : element.getDependsOn()) 
40558          composeConceptMapOtherElementComponent("dependsOn", e);
40559    }
40560    if (element.hasProduct()) { 
40561      for (ConceptMap.OtherElementComponent e : element.getProduct()) 
40562          composeConceptMapOtherElementComponent("product", e);
40563    }
40564  }
40565
40566  protected void composeConceptMapMappingPropertyComponent(String name, ConceptMap.MappingPropertyComponent element) throws IOException {
40567    if (element != null) {
40568    composeElementAttributes(element);
40569      xml.enter(FHIR_NS, name);
40570      composeConceptMapMappingPropertyComponentElements(element);
40571      composeElementClose(element);
40572      xml.exit(FHIR_NS, name);
40573    }
40574  }
40575
40576  protected void composeConceptMapMappingPropertyComponentElements(ConceptMap.MappingPropertyComponent element) throws IOException {
40577    composeBackboneElementElements(element);
40578    if (element.hasCodeElement()) {
40579      composeCode("code", element.getCodeElement());
40580    }
40581    if (element.hasValue()) {
40582      composeType("value", element.getValue());
40583    }  }
40584
40585  protected void composeConceptMapOtherElementComponent(String name, ConceptMap.OtherElementComponent element) throws IOException {
40586    if (element != null) {
40587    composeElementAttributes(element);
40588      xml.enter(FHIR_NS, name);
40589      composeConceptMapOtherElementComponentElements(element);
40590      composeElementClose(element);
40591      xml.exit(FHIR_NS, name);
40592    }
40593  }
40594
40595  protected void composeConceptMapOtherElementComponentElements(ConceptMap.OtherElementComponent element) throws IOException {
40596    composeBackboneElementElements(element);
40597    if (element.hasAttributeElement()) {
40598      composeCode("attribute", element.getAttributeElement());
40599    }
40600    if (element.hasValue()) {
40601      composeType("value", element.getValue());
40602    }    if (element.hasValueSetElement()) {
40603      composeCanonical("valueSet", element.getValueSetElement());
40604    }
40605  }
40606
40607  protected void composeConceptMapGroupUnmappedComponent(String name, ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
40608    if (element != null) {
40609    composeElementAttributes(element);
40610      xml.enter(FHIR_NS, name);
40611      composeConceptMapGroupUnmappedComponentElements(element);
40612      composeElementClose(element);
40613      xml.exit(FHIR_NS, name);
40614    }
40615  }
40616
40617  protected void composeConceptMapGroupUnmappedComponentElements(ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
40618    composeBackboneElementElements(element);
40619    if (element.hasModeElement())
40620      composeEnumeration("mode", element.getModeElement(), new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory());
40621    if (element.hasCodeElement()) {
40622      composeCode("code", element.getCodeElement());
40623    }
40624    if (element.hasDisplayElement()) {
40625      composeString("display", element.getDisplayElement());
40626    }
40627    if (element.hasValueSetElement()) {
40628      composeCanonical("valueSet", element.getValueSetElement());
40629    }
40630    if (element.hasRelationshipElement())
40631      composeEnumeration("relationship", element.getRelationshipElement(), new Enumerations.ConceptMapRelationshipEnumFactory());
40632    if (element.hasOtherMapElement()) {
40633      composeCanonical("otherMap", element.getOtherMapElement());
40634    }
40635  }
40636
40637  protected void composeCondition(String name, Condition element) throws IOException {
40638    if (element != null) {
40639    composeResourceAttributes(element);
40640      xml.enter(FHIR_NS, name);
40641      composeConditionElements(element);
40642      composeElementClose(element);
40643      xml.exit(FHIR_NS, name);
40644    }
40645  }
40646
40647  protected void composeConditionElements(Condition element) throws IOException {
40648    composeDomainResourceElements(element);
40649    if (element.hasIdentifier()) { 
40650      for (Identifier e : element.getIdentifier()) 
40651          composeIdentifier("identifier", e);
40652    }
40653    if (element.hasClinicalStatus()) {
40654      composeCodeableConcept("clinicalStatus", element.getClinicalStatus());
40655    }
40656    if (element.hasVerificationStatus()) {
40657      composeCodeableConcept("verificationStatus", element.getVerificationStatus());
40658    }
40659    if (element.hasCategory()) { 
40660      for (CodeableConcept e : element.getCategory()) 
40661          composeCodeableConcept("category", e);
40662    }
40663    if (element.hasSeverity()) {
40664      composeCodeableConcept("severity", element.getSeverity());
40665    }
40666    if (element.hasCode()) {
40667      composeCodeableConcept("code", element.getCode());
40668    }
40669    if (element.hasBodySite()) { 
40670      for (CodeableConcept e : element.getBodySite()) 
40671          composeCodeableConcept("bodySite", e);
40672    }
40673    if (element.hasSubject()) {
40674      composeReference("subject", element.getSubject());
40675    }
40676    if (element.hasEncounter()) {
40677      composeReference("encounter", element.getEncounter());
40678    }
40679    if (element.hasOnset()) {
40680      composeType("onset", element.getOnset());
40681    }    if (element.hasAbatement()) {
40682      composeType("abatement", element.getAbatement());
40683    }    if (element.hasRecordedDateElement()) {
40684      composeDateTime("recordedDate", element.getRecordedDateElement());
40685    }
40686    if (element.hasParticipant()) { 
40687      for (Condition.ConditionParticipantComponent e : element.getParticipant()) 
40688          composeConditionParticipantComponent("participant", e);
40689    }
40690    if (element.hasStage()) { 
40691      for (Condition.ConditionStageComponent e : element.getStage()) 
40692          composeConditionStageComponent("stage", e);
40693    }
40694    if (element.hasEvidence()) { 
40695      for (CodeableReference e : element.getEvidence()) 
40696          composeCodeableReference("evidence", e);
40697    }
40698    if (element.hasNote()) { 
40699      for (Annotation e : element.getNote()) 
40700          composeAnnotation("note", e);
40701    }
40702  }
40703
40704  protected void composeConditionParticipantComponent(String name, Condition.ConditionParticipantComponent element) throws IOException {
40705    if (element != null) {
40706    composeElementAttributes(element);
40707      xml.enter(FHIR_NS, name);
40708      composeConditionParticipantComponentElements(element);
40709      composeElementClose(element);
40710      xml.exit(FHIR_NS, name);
40711    }
40712  }
40713
40714  protected void composeConditionParticipantComponentElements(Condition.ConditionParticipantComponent element) throws IOException {
40715    composeBackboneElementElements(element);
40716    if (element.hasFunction()) {
40717      composeCodeableConcept("function", element.getFunction());
40718    }
40719    if (element.hasActor()) {
40720      composeReference("actor", element.getActor());
40721    }
40722  }
40723
40724  protected void composeConditionStageComponent(String name, Condition.ConditionStageComponent element) throws IOException {
40725    if (element != null) {
40726    composeElementAttributes(element);
40727      xml.enter(FHIR_NS, name);
40728      composeConditionStageComponentElements(element);
40729      composeElementClose(element);
40730      xml.exit(FHIR_NS, name);
40731    }
40732  }
40733
40734  protected void composeConditionStageComponentElements(Condition.ConditionStageComponent element) throws IOException {
40735    composeBackboneElementElements(element);
40736    if (element.hasSummary()) {
40737      composeCodeableConcept("summary", element.getSummary());
40738    }
40739    if (element.hasAssessment()) { 
40740      for (Reference e : element.getAssessment()) 
40741          composeReference("assessment", e);
40742    }
40743    if (element.hasType()) {
40744      composeCodeableConcept("type", element.getType());
40745    }
40746  }
40747
40748  protected void composeConditionDefinition(String name, ConditionDefinition element) throws IOException {
40749    if (element != null) {
40750    composeResourceAttributes(element);
40751      xml.enter(FHIR_NS, name);
40752      composeConditionDefinitionElements(element);
40753      composeElementClose(element);
40754      xml.exit(FHIR_NS, name);
40755    }
40756  }
40757
40758  protected void composeConditionDefinitionElements(ConditionDefinition element) throws IOException {
40759    composeMetadataResourceElements(element);
40760    if (element.hasUrlElement()) {
40761      composeUri("url", element.getUrlElement());
40762    }
40763    if (element.hasIdentifier()) { 
40764      for (Identifier e : element.getIdentifier()) 
40765          composeIdentifier("identifier", e);
40766    }
40767    if (element.hasVersionElement()) {
40768      composeString("version", element.getVersionElement());
40769    }
40770    if (element.hasVersionAlgorithm()) {
40771      composeType("versionAlgorithm", element.getVersionAlgorithm());
40772    }    if (element.hasNameElement()) {
40773      composeString("name", element.getNameElement());
40774    }
40775    if (element.hasTitleElement()) {
40776      composeString("title", element.getTitleElement());
40777    }
40778    if (element.hasSubtitleElement()) {
40779      composeString("subtitle", element.getSubtitleElement());
40780    }
40781    if (element.hasStatusElement())
40782      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
40783    if (element.hasExperimentalElement()) {
40784      composeBoolean("experimental", element.getExperimentalElement());
40785    }
40786    if (element.hasDateElement()) {
40787      composeDateTime("date", element.getDateElement());
40788    }
40789    if (element.hasPublisherElement()) {
40790      composeString("publisher", element.getPublisherElement());
40791    }
40792    if (element.hasContact()) { 
40793      for (ContactDetail e : element.getContact()) 
40794          composeContactDetail("contact", e);
40795    }
40796    if (element.hasDescriptionElement()) {
40797      composeMarkdown("description", element.getDescriptionElement());
40798    }
40799    if (element.hasUseContext()) { 
40800      for (UsageContext e : element.getUseContext()) 
40801          composeUsageContext("useContext", e);
40802    }
40803    if (element.hasJurisdiction()) { 
40804      for (CodeableConcept e : element.getJurisdiction()) 
40805          composeCodeableConcept("jurisdiction", e);
40806    }
40807    if (element.hasCode()) {
40808      composeCodeableConcept("code", element.getCode());
40809    }
40810    if (element.hasSeverity()) {
40811      composeCodeableConcept("severity", element.getSeverity());
40812    }
40813    if (element.hasBodySite()) {
40814      composeCodeableConcept("bodySite", element.getBodySite());
40815    }
40816    if (element.hasStage()) {
40817      composeCodeableConcept("stage", element.getStage());
40818    }
40819    if (element.hasHasSeverityElement()) {
40820      composeBoolean("hasSeverity", element.getHasSeverityElement());
40821    }
40822    if (element.hasHasBodySiteElement()) {
40823      composeBoolean("hasBodySite", element.getHasBodySiteElement());
40824    }
40825    if (element.hasHasStageElement()) {
40826      composeBoolean("hasStage", element.getHasStageElement());
40827    }
40828    if (element.hasDefinition()) { 
40829      for (UriType e : element.getDefinition()) 
40830          composeUri("definition", e);
40831    }
40832    if (element.hasObservation()) { 
40833      for (ConditionDefinition.ConditionDefinitionObservationComponent e : element.getObservation()) 
40834          composeConditionDefinitionObservationComponent("observation", e);
40835    }
40836    if (element.hasMedication()) { 
40837      for (ConditionDefinition.ConditionDefinitionMedicationComponent e : element.getMedication()) 
40838          composeConditionDefinitionMedicationComponent("medication", e);
40839    }
40840    if (element.hasPrecondition()) { 
40841      for (ConditionDefinition.ConditionDefinitionPreconditionComponent e : element.getPrecondition()) 
40842          composeConditionDefinitionPreconditionComponent("precondition", e);
40843    }
40844    if (element.hasTeam()) { 
40845      for (Reference e : element.getTeam()) 
40846          composeReference("team", e);
40847    }
40848    if (element.hasQuestionnaire()) { 
40849      for (ConditionDefinition.ConditionDefinitionQuestionnaireComponent e : element.getQuestionnaire()) 
40850          composeConditionDefinitionQuestionnaireComponent("questionnaire", e);
40851    }
40852    if (element.hasPlan()) { 
40853      for (ConditionDefinition.ConditionDefinitionPlanComponent e : element.getPlan()) 
40854          composeConditionDefinitionPlanComponent("plan", e);
40855    }
40856  }
40857
40858  protected void composeConditionDefinitionObservationComponent(String name, ConditionDefinition.ConditionDefinitionObservationComponent element) throws IOException {
40859    if (element != null) {
40860    composeElementAttributes(element);
40861      xml.enter(FHIR_NS, name);
40862      composeConditionDefinitionObservationComponentElements(element);
40863      composeElementClose(element);
40864      xml.exit(FHIR_NS, name);
40865    }
40866  }
40867
40868  protected void composeConditionDefinitionObservationComponentElements(ConditionDefinition.ConditionDefinitionObservationComponent element) throws IOException {
40869    composeBackboneElementElements(element);
40870    if (element.hasCategory()) {
40871      composeCodeableConcept("category", element.getCategory());
40872    }
40873    if (element.hasCode()) {
40874      composeCodeableConcept("code", element.getCode());
40875    }
40876  }
40877
40878  protected void composeConditionDefinitionMedicationComponent(String name, ConditionDefinition.ConditionDefinitionMedicationComponent element) throws IOException {
40879    if (element != null) {
40880    composeElementAttributes(element);
40881      xml.enter(FHIR_NS, name);
40882      composeConditionDefinitionMedicationComponentElements(element);
40883      composeElementClose(element);
40884      xml.exit(FHIR_NS, name);
40885    }
40886  }
40887
40888  protected void composeConditionDefinitionMedicationComponentElements(ConditionDefinition.ConditionDefinitionMedicationComponent element) throws IOException {
40889    composeBackboneElementElements(element);
40890    if (element.hasCategory()) {
40891      composeCodeableConcept("category", element.getCategory());
40892    }
40893    if (element.hasCode()) {
40894      composeCodeableConcept("code", element.getCode());
40895    }
40896  }
40897
40898  protected void composeConditionDefinitionPreconditionComponent(String name, ConditionDefinition.ConditionDefinitionPreconditionComponent element) throws IOException {
40899    if (element != null) {
40900    composeElementAttributes(element);
40901      xml.enter(FHIR_NS, name);
40902      composeConditionDefinitionPreconditionComponentElements(element);
40903      composeElementClose(element);
40904      xml.exit(FHIR_NS, name);
40905    }
40906  }
40907
40908  protected void composeConditionDefinitionPreconditionComponentElements(ConditionDefinition.ConditionDefinitionPreconditionComponent element) throws IOException {
40909    composeBackboneElementElements(element);
40910    if (element.hasTypeElement())
40911      composeEnumeration("type", element.getTypeElement(), new ConditionDefinition.ConditionPreconditionTypeEnumFactory());
40912    if (element.hasCode()) {
40913      composeCodeableConcept("code", element.getCode());
40914    }
40915    if (element.hasValue()) {
40916      composeType("value", element.getValue());
40917    }  }
40918
40919  protected void composeConditionDefinitionQuestionnaireComponent(String name, ConditionDefinition.ConditionDefinitionQuestionnaireComponent element) throws IOException {
40920    if (element != null) {
40921    composeElementAttributes(element);
40922      xml.enter(FHIR_NS, name);
40923      composeConditionDefinitionQuestionnaireComponentElements(element);
40924      composeElementClose(element);
40925      xml.exit(FHIR_NS, name);
40926    }
40927  }
40928
40929  protected void composeConditionDefinitionQuestionnaireComponentElements(ConditionDefinition.ConditionDefinitionQuestionnaireComponent element) throws IOException {
40930    composeBackboneElementElements(element);
40931    if (element.hasPurposeElement())
40932      composeEnumeration("purpose", element.getPurposeElement(), new ConditionDefinition.ConditionQuestionnairePurposeEnumFactory());
40933    if (element.hasReference()) {
40934      composeReference("reference", element.getReference());
40935    }
40936  }
40937
40938  protected void composeConditionDefinitionPlanComponent(String name, ConditionDefinition.ConditionDefinitionPlanComponent element) throws IOException {
40939    if (element != null) {
40940    composeElementAttributes(element);
40941      xml.enter(FHIR_NS, name);
40942      composeConditionDefinitionPlanComponentElements(element);
40943      composeElementClose(element);
40944      xml.exit(FHIR_NS, name);
40945    }
40946  }
40947
40948  protected void composeConditionDefinitionPlanComponentElements(ConditionDefinition.ConditionDefinitionPlanComponent element) throws IOException {
40949    composeBackboneElementElements(element);
40950    if (element.hasRole()) {
40951      composeCodeableConcept("role", element.getRole());
40952    }
40953    if (element.hasReference()) {
40954      composeReference("reference", element.getReference());
40955    }
40956  }
40957
40958  protected void composeConsent(String name, Consent element) throws IOException {
40959    if (element != null) {
40960    composeResourceAttributes(element);
40961      xml.enter(FHIR_NS, name);
40962      composeConsentElements(element);
40963      composeElementClose(element);
40964      xml.exit(FHIR_NS, name);
40965    }
40966  }
40967
40968  protected void composeConsentElements(Consent element) throws IOException {
40969    composeDomainResourceElements(element);
40970    if (element.hasIdentifier()) { 
40971      for (Identifier e : element.getIdentifier()) 
40972          composeIdentifier("identifier", e);
40973    }
40974    if (element.hasStatusElement())
40975      composeEnumeration("status", element.getStatusElement(), new Consent.ConsentStateEnumFactory());
40976    if (element.hasCategory()) { 
40977      for (CodeableConcept e : element.getCategory()) 
40978          composeCodeableConcept("category", e);
40979    }
40980    if (element.hasSubject()) {
40981      composeReference("subject", element.getSubject());
40982    }
40983    if (element.hasDateElement()) {
40984      composeDate("date", element.getDateElement());
40985    }
40986    if (element.hasPeriod()) {
40987      composePeriod("period", element.getPeriod());
40988    }
40989    if (element.hasGrantor()) { 
40990      for (Reference e : element.getGrantor()) 
40991          composeReference("grantor", e);
40992    }
40993    if (element.hasGrantee()) { 
40994      for (Reference e : element.getGrantee()) 
40995          composeReference("grantee", e);
40996    }
40997    if (element.hasManager()) { 
40998      for (Reference e : element.getManager()) 
40999          composeReference("manager", e);
41000    }
41001    if (element.hasController()) { 
41002      for (Reference e : element.getController()) 
41003          composeReference("controller", e);
41004    }
41005    if (element.hasSourceAttachment()) { 
41006      for (Attachment e : element.getSourceAttachment()) 
41007          composeAttachment("sourceAttachment", e);
41008    }
41009    if (element.hasSourceReference()) { 
41010      for (Reference e : element.getSourceReference()) 
41011          composeReference("sourceReference", e);
41012    }
41013    if (element.hasRegulatoryBasis()) { 
41014      for (CodeableConcept e : element.getRegulatoryBasis()) 
41015          composeCodeableConcept("regulatoryBasis", e);
41016    }
41017    if (element.hasPolicyBasis()) {
41018      composeConsentPolicyBasisComponent("policyBasis", element.getPolicyBasis());
41019    }
41020    if (element.hasPolicyText()) { 
41021      for (Reference e : element.getPolicyText()) 
41022          composeReference("policyText", e);
41023    }
41024    if (element.hasVerification()) { 
41025      for (Consent.ConsentVerificationComponent e : element.getVerification()) 
41026          composeConsentVerificationComponent("verification", e);
41027    }
41028    if (element.hasDecisionElement())
41029      composeEnumeration("decision", element.getDecisionElement(), new Enumerations.ConsentProvisionTypeEnumFactory());
41030    if (element.hasProvision()) { 
41031      for (Consent.ProvisionComponent e : element.getProvision()) 
41032          composeConsentProvisionComponent("provision", e);
41033    }
41034  }
41035
41036  protected void composeConsentPolicyBasisComponent(String name, Consent.ConsentPolicyBasisComponent element) throws IOException {
41037    if (element != null) {
41038    composeElementAttributes(element);
41039      xml.enter(FHIR_NS, name);
41040      composeConsentPolicyBasisComponentElements(element);
41041      composeElementClose(element);
41042      xml.exit(FHIR_NS, name);
41043    }
41044  }
41045
41046  protected void composeConsentPolicyBasisComponentElements(Consent.ConsentPolicyBasisComponent element) throws IOException {
41047    composeBackboneElementElements(element);
41048    if (element.hasReference()) {
41049      composeReference("reference", element.getReference());
41050    }
41051    if (element.hasUrlElement()) {
41052      composeUrl("url", element.getUrlElement());
41053    }
41054  }
41055
41056  protected void composeConsentVerificationComponent(String name, Consent.ConsentVerificationComponent element) throws IOException {
41057    if (element != null) {
41058    composeElementAttributes(element);
41059      xml.enter(FHIR_NS, name);
41060      composeConsentVerificationComponentElements(element);
41061      composeElementClose(element);
41062      xml.exit(FHIR_NS, name);
41063    }
41064  }
41065
41066  protected void composeConsentVerificationComponentElements(Consent.ConsentVerificationComponent element) throws IOException {
41067    composeBackboneElementElements(element);
41068    if (element.hasVerifiedElement()) {
41069      composeBoolean("verified", element.getVerifiedElement());
41070    }
41071    if (element.hasVerificationType()) {
41072      composeCodeableConcept("verificationType", element.getVerificationType());
41073    }
41074    if (element.hasVerifiedBy()) {
41075      composeReference("verifiedBy", element.getVerifiedBy());
41076    }
41077    if (element.hasVerifiedWith()) {
41078      composeReference("verifiedWith", element.getVerifiedWith());
41079    }
41080    if (element.hasVerificationDate()) { 
41081      for (DateTimeType e : element.getVerificationDate()) 
41082          composeDateTime("verificationDate", e);
41083    }
41084  }
41085
41086  protected void composeConsentProvisionComponent(String name, Consent.ProvisionComponent element) throws IOException {
41087    if (element != null) {
41088    composeElementAttributes(element);
41089      xml.enter(FHIR_NS, name);
41090      composeConsentProvisionComponentElements(element);
41091      composeElementClose(element);
41092      xml.exit(FHIR_NS, name);
41093    }
41094  }
41095
41096  protected void composeConsentProvisionComponentElements(Consent.ProvisionComponent element) throws IOException {
41097    composeBackboneElementElements(element);
41098    if (element.hasPeriod()) {
41099      composePeriod("period", element.getPeriod());
41100    }
41101    if (element.hasActor()) { 
41102      for (Consent.ProvisionActorComponent e : element.getActor()) 
41103          composeConsentProvisionActorComponent("actor", e);
41104    }
41105    if (element.hasAction()) { 
41106      for (CodeableConcept e : element.getAction()) 
41107          composeCodeableConcept("action", e);
41108    }
41109    if (element.hasSecurityLabel()) { 
41110      for (Coding e : element.getSecurityLabel()) 
41111          composeCoding("securityLabel", e);
41112    }
41113    if (element.hasPurpose()) { 
41114      for (Coding e : element.getPurpose()) 
41115          composeCoding("purpose", e);
41116    }
41117    if (element.hasDocumentType()) { 
41118      for (Coding e : element.getDocumentType()) 
41119          composeCoding("documentType", e);
41120    }
41121    if (element.hasResourceType()) { 
41122      for (Coding e : element.getResourceType()) 
41123          composeCoding("resourceType", e);
41124    }
41125    if (element.hasCode()) { 
41126      for (CodeableConcept e : element.getCode()) 
41127          composeCodeableConcept("code", e);
41128    }
41129    if (element.hasDataPeriod()) {
41130      composePeriod("dataPeriod", element.getDataPeriod());
41131    }
41132    if (element.hasData()) { 
41133      for (Consent.ProvisionDataComponent e : element.getData()) 
41134          composeConsentProvisionDataComponent("data", e);
41135    }
41136    if (element.hasExpression()) {
41137      composeExpression("expression", element.getExpression());
41138    }
41139    if (element.hasProvision()) { 
41140      for (Consent.ProvisionComponent e : element.getProvision()) 
41141          composeConsentProvisionComponent("provision", e);
41142    }
41143  }
41144
41145  protected void composeConsentProvisionActorComponent(String name, Consent.ProvisionActorComponent element) throws IOException {
41146    if (element != null) {
41147    composeElementAttributes(element);
41148      xml.enter(FHIR_NS, name);
41149      composeConsentProvisionActorComponentElements(element);
41150      composeElementClose(element);
41151      xml.exit(FHIR_NS, name);
41152    }
41153  }
41154
41155  protected void composeConsentProvisionActorComponentElements(Consent.ProvisionActorComponent element) throws IOException {
41156    composeBackboneElementElements(element);
41157    if (element.hasRole()) {
41158      composeCodeableConcept("role", element.getRole());
41159    }
41160    if (element.hasReference()) {
41161      composeReference("reference", element.getReference());
41162    }
41163  }
41164
41165  protected void composeConsentProvisionDataComponent(String name, Consent.ProvisionDataComponent element) throws IOException {
41166    if (element != null) {
41167    composeElementAttributes(element);
41168      xml.enter(FHIR_NS, name);
41169      composeConsentProvisionDataComponentElements(element);
41170      composeElementClose(element);
41171      xml.exit(FHIR_NS, name);
41172    }
41173  }
41174
41175  protected void composeConsentProvisionDataComponentElements(Consent.ProvisionDataComponent element) throws IOException {
41176    composeBackboneElementElements(element);
41177    if (element.hasMeaningElement())
41178      composeEnumeration("meaning", element.getMeaningElement(), new Enumerations.ConsentDataMeaningEnumFactory());
41179    if (element.hasReference()) {
41180      composeReference("reference", element.getReference());
41181    }
41182  }
41183
41184  protected void composeContract(String name, Contract element) throws IOException {
41185    if (element != null) {
41186    composeResourceAttributes(element);
41187      xml.enter(FHIR_NS, name);
41188      composeContractElements(element);
41189      composeElementClose(element);
41190      xml.exit(FHIR_NS, name);
41191    }
41192  }
41193
41194  protected void composeContractElements(Contract element) throws IOException {
41195    composeDomainResourceElements(element);
41196    if (element.hasIdentifier()) { 
41197      for (Identifier e : element.getIdentifier()) 
41198          composeIdentifier("identifier", e);
41199    }
41200    if (element.hasUrlElement()) {
41201      composeUri("url", element.getUrlElement());
41202    }
41203    if (element.hasVersionElement()) {
41204      composeString("version", element.getVersionElement());
41205    }
41206    if (element.hasStatusElement())
41207      composeEnumeration("status", element.getStatusElement(), new Contract.ContractResourceStatusCodesEnumFactory());
41208    if (element.hasLegalState()) {
41209      composeCodeableConcept("legalState", element.getLegalState());
41210    }
41211    if (element.hasInstantiatesCanonical()) {
41212      composeReference("instantiatesCanonical", element.getInstantiatesCanonical());
41213    }
41214    if (element.hasInstantiatesUriElement()) {
41215      composeUri("instantiatesUri", element.getInstantiatesUriElement());
41216    }
41217    if (element.hasContentDerivative()) {
41218      composeCodeableConcept("contentDerivative", element.getContentDerivative());
41219    }
41220    if (element.hasIssuedElement()) {
41221      composeDateTime("issued", element.getIssuedElement());
41222    }
41223    if (element.hasApplies()) {
41224      composePeriod("applies", element.getApplies());
41225    }
41226    if (element.hasExpirationType()) {
41227      composeCodeableConcept("expirationType", element.getExpirationType());
41228    }
41229    if (element.hasSubject()) { 
41230      for (Reference e : element.getSubject()) 
41231          composeReference("subject", e);
41232    }
41233    if (element.hasAuthority()) { 
41234      for (Reference e : element.getAuthority()) 
41235          composeReference("authority", e);
41236    }
41237    if (element.hasDomain()) { 
41238      for (Reference e : element.getDomain()) 
41239          composeReference("domain", e);
41240    }
41241    if (element.hasSite()) { 
41242      for (Reference e : element.getSite()) 
41243          composeReference("site", e);
41244    }
41245    if (element.hasNameElement()) {
41246      composeString("name", element.getNameElement());
41247    }
41248    if (element.hasTitleElement()) {
41249      composeString("title", element.getTitleElement());
41250    }
41251    if (element.hasSubtitleElement()) {
41252      composeString("subtitle", element.getSubtitleElement());
41253    }
41254    if (element.hasAlias()) { 
41255      for (StringType e : element.getAlias()) 
41256          composeString("alias", e);
41257    }
41258    if (element.hasAuthor()) {
41259      composeReference("author", element.getAuthor());
41260    }
41261    if (element.hasScope()) {
41262      composeCodeableConcept("scope", element.getScope());
41263    }
41264    if (element.hasTopic()) {
41265      composeType("topic", element.getTopic());
41266    }    if (element.hasType()) {
41267      composeCodeableConcept("type", element.getType());
41268    }
41269    if (element.hasSubType()) { 
41270      for (CodeableConcept e : element.getSubType()) 
41271          composeCodeableConcept("subType", e);
41272    }
41273    if (element.hasContentDefinition()) {
41274      composeContractContentDefinitionComponent("contentDefinition", element.getContentDefinition());
41275    }
41276    if (element.hasTerm()) { 
41277      for (Contract.TermComponent e : element.getTerm()) 
41278          composeContractTermComponent("term", e);
41279    }
41280    if (element.hasSupportingInfo()) { 
41281      for (Reference e : element.getSupportingInfo()) 
41282          composeReference("supportingInfo", e);
41283    }
41284    if (element.hasRelevantHistory()) { 
41285      for (Reference e : element.getRelevantHistory()) 
41286          composeReference("relevantHistory", e);
41287    }
41288    if (element.hasSigner()) { 
41289      for (Contract.SignatoryComponent e : element.getSigner()) 
41290          composeContractSignatoryComponent("signer", e);
41291    }
41292    if (element.hasFriendly()) { 
41293      for (Contract.FriendlyLanguageComponent e : element.getFriendly()) 
41294          composeContractFriendlyLanguageComponent("friendly", e);
41295    }
41296    if (element.hasLegal()) { 
41297      for (Contract.LegalLanguageComponent e : element.getLegal()) 
41298          composeContractLegalLanguageComponent("legal", e);
41299    }
41300    if (element.hasRule()) { 
41301      for (Contract.ComputableLanguageComponent e : element.getRule()) 
41302          composeContractComputableLanguageComponent("rule", e);
41303    }
41304    if (element.hasLegallyBinding()) {
41305      composeType("legallyBinding", element.getLegallyBinding());
41306    }  }
41307
41308  protected void composeContractContentDefinitionComponent(String name, Contract.ContentDefinitionComponent element) throws IOException {
41309    if (element != null) {
41310    composeElementAttributes(element);
41311      xml.enter(FHIR_NS, name);
41312      composeContractContentDefinitionComponentElements(element);
41313      composeElementClose(element);
41314      xml.exit(FHIR_NS, name);
41315    }
41316  }
41317
41318  protected void composeContractContentDefinitionComponentElements(Contract.ContentDefinitionComponent element) throws IOException {
41319    composeBackboneElementElements(element);
41320    if (element.hasType()) {
41321      composeCodeableConcept("type", element.getType());
41322    }
41323    if (element.hasSubType()) {
41324      composeCodeableConcept("subType", element.getSubType());
41325    }
41326    if (element.hasPublisher()) {
41327      composeReference("publisher", element.getPublisher());
41328    }
41329    if (element.hasPublicationDateElement()) {
41330      composeDateTime("publicationDate", element.getPublicationDateElement());
41331    }
41332    if (element.hasPublicationStatusElement())
41333      composeEnumeration("publicationStatus", element.getPublicationStatusElement(), new Contract.ContractResourcePublicationStatusCodesEnumFactory());
41334    if (element.hasCopyrightElement()) {
41335      composeMarkdown("copyright", element.getCopyrightElement());
41336    }
41337  }
41338
41339  protected void composeContractTermComponent(String name, Contract.TermComponent element) throws IOException {
41340    if (element != null) {
41341    composeElementAttributes(element);
41342      xml.enter(FHIR_NS, name);
41343      composeContractTermComponentElements(element);
41344      composeElementClose(element);
41345      xml.exit(FHIR_NS, name);
41346    }
41347  }
41348
41349  protected void composeContractTermComponentElements(Contract.TermComponent element) throws IOException {
41350    composeBackboneElementElements(element);
41351    if (element.hasIdentifier()) {
41352      composeIdentifier("identifier", element.getIdentifier());
41353    }
41354    if (element.hasIssuedElement()) {
41355      composeDateTime("issued", element.getIssuedElement());
41356    }
41357    if (element.hasApplies()) {
41358      composePeriod("applies", element.getApplies());
41359    }
41360    if (element.hasTopic()) {
41361      composeType("topic", element.getTopic());
41362    }    if (element.hasType()) {
41363      composeCodeableConcept("type", element.getType());
41364    }
41365    if (element.hasSubType()) {
41366      composeCodeableConcept("subType", element.getSubType());
41367    }
41368    if (element.hasTextElement()) {
41369      composeString("text", element.getTextElement());
41370    }
41371    if (element.hasSecurityLabel()) { 
41372      for (Contract.SecurityLabelComponent e : element.getSecurityLabel()) 
41373          composeContractSecurityLabelComponent("securityLabel", e);
41374    }
41375    if (element.hasOffer()) {
41376      composeContractOfferComponent("offer", element.getOffer());
41377    }
41378    if (element.hasAsset()) { 
41379      for (Contract.ContractAssetComponent e : element.getAsset()) 
41380          composeContractAssetComponent("asset", e);
41381    }
41382    if (element.hasAction()) { 
41383      for (Contract.ActionComponent e : element.getAction()) 
41384          composeContractActionComponent("action", e);
41385    }
41386    if (element.hasGroup()) { 
41387      for (Contract.TermComponent e : element.getGroup()) 
41388          composeContractTermComponent("group", e);
41389    }
41390  }
41391
41392  protected void composeContractSecurityLabelComponent(String name, Contract.SecurityLabelComponent element) throws IOException {
41393    if (element != null) {
41394    composeElementAttributes(element);
41395      xml.enter(FHIR_NS, name);
41396      composeContractSecurityLabelComponentElements(element);
41397      composeElementClose(element);
41398      xml.exit(FHIR_NS, name);
41399    }
41400  }
41401
41402  protected void composeContractSecurityLabelComponentElements(Contract.SecurityLabelComponent element) throws IOException {
41403    composeBackboneElementElements(element);
41404    if (element.hasNumber()) { 
41405      for (UnsignedIntType e : element.getNumber()) 
41406          composeUnsignedInt("number", e);
41407    }
41408    if (element.hasClassification()) {
41409      composeCoding("classification", element.getClassification());
41410    }
41411    if (element.hasCategory()) { 
41412      for (Coding e : element.getCategory()) 
41413          composeCoding("category", e);
41414    }
41415    if (element.hasControl()) { 
41416      for (Coding e : element.getControl()) 
41417          composeCoding("control", e);
41418    }
41419  }
41420
41421  protected void composeContractOfferComponent(String name, Contract.ContractOfferComponent element) throws IOException {
41422    if (element != null) {
41423    composeElementAttributes(element);
41424      xml.enter(FHIR_NS, name);
41425      composeContractOfferComponentElements(element);
41426      composeElementClose(element);
41427      xml.exit(FHIR_NS, name);
41428    }
41429  }
41430
41431  protected void composeContractOfferComponentElements(Contract.ContractOfferComponent element) throws IOException {
41432    composeBackboneElementElements(element);
41433    if (element.hasIdentifier()) { 
41434      for (Identifier e : element.getIdentifier()) 
41435          composeIdentifier("identifier", e);
41436    }
41437    if (element.hasParty()) { 
41438      for (Contract.ContractPartyComponent e : element.getParty()) 
41439          composeContractPartyComponent("party", e);
41440    }
41441    if (element.hasTopic()) {
41442      composeReference("topic", element.getTopic());
41443    }
41444    if (element.hasType()) {
41445      composeCodeableConcept("type", element.getType());
41446    }
41447    if (element.hasDecision()) {
41448      composeCodeableConcept("decision", element.getDecision());
41449    }
41450    if (element.hasDecisionMode()) { 
41451      for (CodeableConcept e : element.getDecisionMode()) 
41452          composeCodeableConcept("decisionMode", e);
41453    }
41454    if (element.hasAnswer()) { 
41455      for (Contract.AnswerComponent e : element.getAnswer()) 
41456          composeContractAnswerComponent("answer", e);
41457    }
41458    if (element.hasTextElement()) {
41459      composeString("text", element.getTextElement());
41460    }
41461    if (element.hasLinkId()) { 
41462      for (StringType e : element.getLinkId()) 
41463          composeString("linkId", e);
41464    }
41465    if (element.hasSecurityLabelNumber()) { 
41466      for (UnsignedIntType e : element.getSecurityLabelNumber()) 
41467          composeUnsignedInt("securityLabelNumber", e);
41468    }
41469  }
41470
41471  protected void composeContractPartyComponent(String name, Contract.ContractPartyComponent element) throws IOException {
41472    if (element != null) {
41473    composeElementAttributes(element);
41474      xml.enter(FHIR_NS, name);
41475      composeContractPartyComponentElements(element);
41476      composeElementClose(element);
41477      xml.exit(FHIR_NS, name);
41478    }
41479  }
41480
41481  protected void composeContractPartyComponentElements(Contract.ContractPartyComponent element) throws IOException {
41482    composeBackboneElementElements(element);
41483    if (element.hasReference()) { 
41484      for (Reference e : element.getReference()) 
41485          composeReference("reference", e);
41486    }
41487    if (element.hasRole()) {
41488      composeCodeableConcept("role", element.getRole());
41489    }
41490  }
41491
41492  protected void composeContractAnswerComponent(String name, Contract.AnswerComponent element) throws IOException {
41493    if (element != null) {
41494    composeElementAttributes(element);
41495      xml.enter(FHIR_NS, name);
41496      composeContractAnswerComponentElements(element);
41497      composeElementClose(element);
41498      xml.exit(FHIR_NS, name);
41499    }
41500  }
41501
41502  protected void composeContractAnswerComponentElements(Contract.AnswerComponent element) throws IOException {
41503    composeBackboneElementElements(element);
41504    if (element.hasValue()) {
41505      composeType("value", element.getValue());
41506    }  }
41507
41508  protected void composeContractAssetComponent(String name, Contract.ContractAssetComponent element) throws IOException {
41509    if (element != null) {
41510    composeElementAttributes(element);
41511      xml.enter(FHIR_NS, name);
41512      composeContractAssetComponentElements(element);
41513      composeElementClose(element);
41514      xml.exit(FHIR_NS, name);
41515    }
41516  }
41517
41518  protected void composeContractAssetComponentElements(Contract.ContractAssetComponent element) throws IOException {
41519    composeBackboneElementElements(element);
41520    if (element.hasScope()) {
41521      composeCodeableConcept("scope", element.getScope());
41522    }
41523    if (element.hasType()) { 
41524      for (CodeableConcept e : element.getType()) 
41525          composeCodeableConcept("type", e);
41526    }
41527    if (element.hasTypeReference()) { 
41528      for (Reference e : element.getTypeReference()) 
41529          composeReference("typeReference", e);
41530    }
41531    if (element.hasSubtype()) { 
41532      for (CodeableConcept e : element.getSubtype()) 
41533          composeCodeableConcept("subtype", e);
41534    }
41535    if (element.hasRelationship()) {
41536      composeCoding("relationship", element.getRelationship());
41537    }
41538    if (element.hasContext()) { 
41539      for (Contract.AssetContextComponent e : element.getContext()) 
41540          composeContractAssetContextComponent("context", e);
41541    }
41542    if (element.hasConditionElement()) {
41543      composeString("condition", element.getConditionElement());
41544    }
41545    if (element.hasPeriodType()) { 
41546      for (CodeableConcept e : element.getPeriodType()) 
41547          composeCodeableConcept("periodType", e);
41548    }
41549    if (element.hasPeriod()) { 
41550      for (Period e : element.getPeriod()) 
41551          composePeriod("period", e);
41552    }
41553    if (element.hasUsePeriod()) { 
41554      for (Period e : element.getUsePeriod()) 
41555          composePeriod("usePeriod", e);
41556    }
41557    if (element.hasTextElement()) {
41558      composeString("text", element.getTextElement());
41559    }
41560    if (element.hasLinkId()) { 
41561      for (StringType e : element.getLinkId()) 
41562          composeString("linkId", e);
41563    }
41564    if (element.hasAnswer()) { 
41565      for (Contract.AnswerComponent e : element.getAnswer()) 
41566          composeContractAnswerComponent("answer", e);
41567    }
41568    if (element.hasSecurityLabelNumber()) { 
41569      for (UnsignedIntType e : element.getSecurityLabelNumber()) 
41570          composeUnsignedInt("securityLabelNumber", e);
41571    }
41572    if (element.hasValuedItem()) { 
41573      for (Contract.ValuedItemComponent e : element.getValuedItem()) 
41574          composeContractValuedItemComponent("valuedItem", e);
41575    }
41576  }
41577
41578  protected void composeContractAssetContextComponent(String name, Contract.AssetContextComponent element) throws IOException {
41579    if (element != null) {
41580    composeElementAttributes(element);
41581      xml.enter(FHIR_NS, name);
41582      composeContractAssetContextComponentElements(element);
41583      composeElementClose(element);
41584      xml.exit(FHIR_NS, name);
41585    }
41586  }
41587
41588  protected void composeContractAssetContextComponentElements(Contract.AssetContextComponent element) throws IOException {
41589    composeBackboneElementElements(element);
41590    if (element.hasReference()) {
41591      composeReference("reference", element.getReference());
41592    }
41593    if (element.hasCode()) { 
41594      for (CodeableConcept e : element.getCode()) 
41595          composeCodeableConcept("code", e);
41596    }
41597    if (element.hasTextElement()) {
41598      composeString("text", element.getTextElement());
41599    }
41600  }
41601
41602  protected void composeContractValuedItemComponent(String name, Contract.ValuedItemComponent element) throws IOException {
41603    if (element != null) {
41604    composeElementAttributes(element);
41605      xml.enter(FHIR_NS, name);
41606      composeContractValuedItemComponentElements(element);
41607      composeElementClose(element);
41608      xml.exit(FHIR_NS, name);
41609    }
41610  }
41611
41612  protected void composeContractValuedItemComponentElements(Contract.ValuedItemComponent element) throws IOException {
41613    composeBackboneElementElements(element);
41614    if (element.hasEntity()) {
41615      composeType("entity", element.getEntity());
41616    }    if (element.hasIdentifier()) {
41617      composeIdentifier("identifier", element.getIdentifier());
41618    }
41619    if (element.hasEffectiveTimeElement()) {
41620      composeDateTime("effectiveTime", element.getEffectiveTimeElement());
41621    }
41622    if (element.hasQuantity()) {
41623      composeQuantity("quantity", element.getQuantity());
41624    }
41625    if (element.hasUnitPrice()) {
41626      composeMoney("unitPrice", element.getUnitPrice());
41627    }
41628    if (element.hasFactorElement()) {
41629      composeDecimal("factor", element.getFactorElement());
41630    }
41631    if (element.hasPointsElement()) {
41632      composeDecimal("points", element.getPointsElement());
41633    }
41634    if (element.hasNet()) {
41635      composeMoney("net", element.getNet());
41636    }
41637    if (element.hasPaymentElement()) {
41638      composeString("payment", element.getPaymentElement());
41639    }
41640    if (element.hasPaymentDateElement()) {
41641      composeDateTime("paymentDate", element.getPaymentDateElement());
41642    }
41643    if (element.hasResponsible()) {
41644      composeReference("responsible", element.getResponsible());
41645    }
41646    if (element.hasRecipient()) {
41647      composeReference("recipient", element.getRecipient());
41648    }
41649    if (element.hasLinkId()) { 
41650      for (StringType e : element.getLinkId()) 
41651          composeString("linkId", e);
41652    }
41653    if (element.hasSecurityLabelNumber()) { 
41654      for (UnsignedIntType e : element.getSecurityLabelNumber()) 
41655          composeUnsignedInt("securityLabelNumber", e);
41656    }
41657  }
41658
41659  protected void composeContractActionComponent(String name, Contract.ActionComponent element) throws IOException {
41660    if (element != null) {
41661    composeElementAttributes(element);
41662      xml.enter(FHIR_NS, name);
41663      composeContractActionComponentElements(element);
41664      composeElementClose(element);
41665      xml.exit(FHIR_NS, name);
41666    }
41667  }
41668
41669  protected void composeContractActionComponentElements(Contract.ActionComponent element) throws IOException {
41670    composeBackboneElementElements(element);
41671    if (element.hasDoNotPerformElement()) {
41672      composeBoolean("doNotPerform", element.getDoNotPerformElement());
41673    }
41674    if (element.hasType()) {
41675      composeCodeableConcept("type", element.getType());
41676    }
41677    if (element.hasSubject()) { 
41678      for (Contract.ActionSubjectComponent e : element.getSubject()) 
41679          composeContractActionSubjectComponent("subject", e);
41680    }
41681    if (element.hasIntent()) {
41682      composeCodeableConcept("intent", element.getIntent());
41683    }
41684    if (element.hasLinkId()) { 
41685      for (StringType e : element.getLinkId()) 
41686          composeString("linkId", e);
41687    }
41688    if (element.hasStatus()) {
41689      composeCodeableConcept("status", element.getStatus());
41690    }
41691    if (element.hasContext()) {
41692      composeReference("context", element.getContext());
41693    }
41694    if (element.hasContextLinkId()) { 
41695      for (StringType e : element.getContextLinkId()) 
41696          composeString("contextLinkId", e);
41697    }
41698    if (element.hasOccurrence()) {
41699      composeType("occurrence", element.getOccurrence());
41700    }    if (element.hasRequester()) { 
41701      for (Reference e : element.getRequester()) 
41702          composeReference("requester", e);
41703    }
41704    if (element.hasRequesterLinkId()) { 
41705      for (StringType e : element.getRequesterLinkId()) 
41706          composeString("requesterLinkId", e);
41707    }
41708    if (element.hasPerformerType()) { 
41709      for (CodeableConcept e : element.getPerformerType()) 
41710          composeCodeableConcept("performerType", e);
41711    }
41712    if (element.hasPerformerRole()) {
41713      composeCodeableConcept("performerRole", element.getPerformerRole());
41714    }
41715    if (element.hasPerformer()) {
41716      composeReference("performer", element.getPerformer());
41717    }
41718    if (element.hasPerformerLinkId()) { 
41719      for (StringType e : element.getPerformerLinkId()) 
41720          composeString("performerLinkId", e);
41721    }
41722    if (element.hasReason()) { 
41723      for (CodeableReference e : element.getReason()) 
41724          composeCodeableReference("reason", e);
41725    }
41726    if (element.hasReasonLinkId()) { 
41727      for (StringType e : element.getReasonLinkId()) 
41728          composeString("reasonLinkId", e);
41729    }
41730    if (element.hasNote()) { 
41731      for (Annotation e : element.getNote()) 
41732          composeAnnotation("note", e);
41733    }
41734    if (element.hasSecurityLabelNumber()) { 
41735      for (UnsignedIntType e : element.getSecurityLabelNumber()) 
41736          composeUnsignedInt("securityLabelNumber", e);
41737    }
41738  }
41739
41740  protected void composeContractActionSubjectComponent(String name, Contract.ActionSubjectComponent element) throws IOException {
41741    if (element != null) {
41742    composeElementAttributes(element);
41743      xml.enter(FHIR_NS, name);
41744      composeContractActionSubjectComponentElements(element);
41745      composeElementClose(element);
41746      xml.exit(FHIR_NS, name);
41747    }
41748  }
41749
41750  protected void composeContractActionSubjectComponentElements(Contract.ActionSubjectComponent element) throws IOException {
41751    composeBackboneElementElements(element);
41752    if (element.hasReference()) { 
41753      for (Reference e : element.getReference()) 
41754          composeReference("reference", e);
41755    }
41756    if (element.hasRole()) {
41757      composeCodeableConcept("role", element.getRole());
41758    }
41759  }
41760
41761  protected void composeContractSignatoryComponent(String name, Contract.SignatoryComponent element) throws IOException {
41762    if (element != null) {
41763    composeElementAttributes(element);
41764      xml.enter(FHIR_NS, name);
41765      composeContractSignatoryComponentElements(element);
41766      composeElementClose(element);
41767      xml.exit(FHIR_NS, name);
41768    }
41769  }
41770
41771  protected void composeContractSignatoryComponentElements(Contract.SignatoryComponent element) throws IOException {
41772    composeBackboneElementElements(element);
41773    if (element.hasType()) {
41774      composeCoding("type", element.getType());
41775    }
41776    if (element.hasParty()) {
41777      composeReference("party", element.getParty());
41778    }
41779    if (element.hasSignature()) { 
41780      for (Signature e : element.getSignature()) 
41781          composeSignature("signature", e);
41782    }
41783  }
41784
41785  protected void composeContractFriendlyLanguageComponent(String name, Contract.FriendlyLanguageComponent element) throws IOException {
41786    if (element != null) {
41787    composeElementAttributes(element);
41788      xml.enter(FHIR_NS, name);
41789      composeContractFriendlyLanguageComponentElements(element);
41790      composeElementClose(element);
41791      xml.exit(FHIR_NS, name);
41792    }
41793  }
41794
41795  protected void composeContractFriendlyLanguageComponentElements(Contract.FriendlyLanguageComponent element) throws IOException {
41796    composeBackboneElementElements(element);
41797    if (element.hasContent()) {
41798      composeType("content", element.getContent());
41799    }  }
41800
41801  protected void composeContractLegalLanguageComponent(String name, Contract.LegalLanguageComponent element) throws IOException {
41802    if (element != null) {
41803    composeElementAttributes(element);
41804      xml.enter(FHIR_NS, name);
41805      composeContractLegalLanguageComponentElements(element);
41806      composeElementClose(element);
41807      xml.exit(FHIR_NS, name);
41808    }
41809  }
41810
41811  protected void composeContractLegalLanguageComponentElements(Contract.LegalLanguageComponent element) throws IOException {
41812    composeBackboneElementElements(element);
41813    if (element.hasContent()) {
41814      composeType("content", element.getContent());
41815    }  }
41816
41817  protected void composeContractComputableLanguageComponent(String name, Contract.ComputableLanguageComponent element) throws IOException {
41818    if (element != null) {
41819    composeElementAttributes(element);
41820      xml.enter(FHIR_NS, name);
41821      composeContractComputableLanguageComponentElements(element);
41822      composeElementClose(element);
41823      xml.exit(FHIR_NS, name);
41824    }
41825  }
41826
41827  protected void composeContractComputableLanguageComponentElements(Contract.ComputableLanguageComponent element) throws IOException {
41828    composeBackboneElementElements(element);
41829    if (element.hasContent()) {
41830      composeType("content", element.getContent());
41831    }  }
41832
41833  protected void composeCoverage(String name, Coverage element) throws IOException {
41834    if (element != null) {
41835    composeResourceAttributes(element);
41836      xml.enter(FHIR_NS, name);
41837      composeCoverageElements(element);
41838      composeElementClose(element);
41839      xml.exit(FHIR_NS, name);
41840    }
41841  }
41842
41843  protected void composeCoverageElements(Coverage element) throws IOException {
41844    composeDomainResourceElements(element);
41845    if (element.hasIdentifier()) { 
41846      for (Identifier e : element.getIdentifier()) 
41847          composeIdentifier("identifier", e);
41848    }
41849    if (element.hasStatusElement())
41850      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
41851    if (element.hasKindElement())
41852      composeEnumeration("kind", element.getKindElement(), new Coverage.KindEnumFactory());
41853    if (element.hasPaymentBy()) { 
41854      for (Coverage.CoveragePaymentByComponent e : element.getPaymentBy()) 
41855          composeCoveragePaymentByComponent("paymentBy", e);
41856    }
41857    if (element.hasType()) {
41858      composeCodeableConcept("type", element.getType());
41859    }
41860    if (element.hasPolicyHolder()) {
41861      composeReference("policyHolder", element.getPolicyHolder());
41862    }
41863    if (element.hasSubscriber()) {
41864      composeReference("subscriber", element.getSubscriber());
41865    }
41866    if (element.hasSubscriberId()) { 
41867      for (Identifier e : element.getSubscriberId()) 
41868          composeIdentifier("subscriberId", e);
41869    }
41870    if (element.hasBeneficiary()) {
41871      composeReference("beneficiary", element.getBeneficiary());
41872    }
41873    if (element.hasDependentElement()) {
41874      composeString("dependent", element.getDependentElement());
41875    }
41876    if (element.hasRelationship()) {
41877      composeCodeableConcept("relationship", element.getRelationship());
41878    }
41879    if (element.hasPeriod()) {
41880      composePeriod("period", element.getPeriod());
41881    }
41882    if (element.hasInsurer()) {
41883      composeReference("insurer", element.getInsurer());
41884    }
41885    if (element.hasClass_()) { 
41886      for (Coverage.ClassComponent e : element.getClass_()) 
41887          composeCoverageClassComponent("class", e);
41888    }
41889    if (element.hasOrderElement()) {
41890      composePositiveInt("order", element.getOrderElement());
41891    }
41892    if (element.hasNetworkElement()) {
41893      composeString("network", element.getNetworkElement());
41894    }
41895    if (element.hasCostToBeneficiary()) { 
41896      for (Coverage.CostToBeneficiaryComponent e : element.getCostToBeneficiary()) 
41897          composeCoverageCostToBeneficiaryComponent("costToBeneficiary", e);
41898    }
41899    if (element.hasSubrogationElement()) {
41900      composeBoolean("subrogation", element.getSubrogationElement());
41901    }
41902    if (element.hasContract()) { 
41903      for (Reference e : element.getContract()) 
41904          composeReference("contract", e);
41905    }
41906    if (element.hasInsurancePlan()) {
41907      composeReference("insurancePlan", element.getInsurancePlan());
41908    }
41909  }
41910
41911  protected void composeCoveragePaymentByComponent(String name, Coverage.CoveragePaymentByComponent element) throws IOException {
41912    if (element != null) {
41913    composeElementAttributes(element);
41914      xml.enter(FHIR_NS, name);
41915      composeCoveragePaymentByComponentElements(element);
41916      composeElementClose(element);
41917      xml.exit(FHIR_NS, name);
41918    }
41919  }
41920
41921  protected void composeCoveragePaymentByComponentElements(Coverage.CoveragePaymentByComponent element) throws IOException {
41922    composeBackboneElementElements(element);
41923    if (element.hasParty()) {
41924      composeReference("party", element.getParty());
41925    }
41926    if (element.hasResponsibilityElement()) {
41927      composeString("responsibility", element.getResponsibilityElement());
41928    }
41929  }
41930
41931  protected void composeCoverageClassComponent(String name, Coverage.ClassComponent element) throws IOException {
41932    if (element != null) {
41933    composeElementAttributes(element);
41934      xml.enter(FHIR_NS, name);
41935      composeCoverageClassComponentElements(element);
41936      composeElementClose(element);
41937      xml.exit(FHIR_NS, name);
41938    }
41939  }
41940
41941  protected void composeCoverageClassComponentElements(Coverage.ClassComponent element) throws IOException {
41942    composeBackboneElementElements(element);
41943    if (element.hasType()) {
41944      composeCodeableConcept("type", element.getType());
41945    }
41946    if (element.hasValue()) {
41947      composeIdentifier("value", element.getValue());
41948    }
41949    if (element.hasNameElement()) {
41950      composeString("name", element.getNameElement());
41951    }
41952  }
41953
41954  protected void composeCoverageCostToBeneficiaryComponent(String name, Coverage.CostToBeneficiaryComponent element) throws IOException {
41955    if (element != null) {
41956    composeElementAttributes(element);
41957      xml.enter(FHIR_NS, name);
41958      composeCoverageCostToBeneficiaryComponentElements(element);
41959      composeElementClose(element);
41960      xml.exit(FHIR_NS, name);
41961    }
41962  }
41963
41964  protected void composeCoverageCostToBeneficiaryComponentElements(Coverage.CostToBeneficiaryComponent element) throws IOException {
41965    composeBackboneElementElements(element);
41966    if (element.hasType()) {
41967      composeCodeableConcept("type", element.getType());
41968    }
41969    if (element.hasCategory()) {
41970      composeCodeableConcept("category", element.getCategory());
41971    }
41972    if (element.hasNetwork()) {
41973      composeCodeableConcept("network", element.getNetwork());
41974    }
41975    if (element.hasUnit()) {
41976      composeCodeableConcept("unit", element.getUnit());
41977    }
41978    if (element.hasTerm()) {
41979      composeCodeableConcept("term", element.getTerm());
41980    }
41981    if (element.hasValue()) {
41982      composeType("value", element.getValue());
41983    }    if (element.hasException()) { 
41984      for (Coverage.ExemptionComponent e : element.getException()) 
41985          composeCoverageExemptionComponent("exception", e);
41986    }
41987  }
41988
41989  protected void composeCoverageExemptionComponent(String name, Coverage.ExemptionComponent element) throws IOException {
41990    if (element != null) {
41991    composeElementAttributes(element);
41992      xml.enter(FHIR_NS, name);
41993      composeCoverageExemptionComponentElements(element);
41994      composeElementClose(element);
41995      xml.exit(FHIR_NS, name);
41996    }
41997  }
41998
41999  protected void composeCoverageExemptionComponentElements(Coverage.ExemptionComponent element) throws IOException {
42000    composeBackboneElementElements(element);
42001    if (element.hasType()) {
42002      composeCodeableConcept("type", element.getType());
42003    }
42004    if (element.hasPeriod()) {
42005      composePeriod("period", element.getPeriod());
42006    }
42007  }
42008
42009  protected void composeCoverageEligibilityRequest(String name, CoverageEligibilityRequest element) throws IOException {
42010    if (element != null) {
42011    composeResourceAttributes(element);
42012      xml.enter(FHIR_NS, name);
42013      composeCoverageEligibilityRequestElements(element);
42014      composeElementClose(element);
42015      xml.exit(FHIR_NS, name);
42016    }
42017  }
42018
42019  protected void composeCoverageEligibilityRequestElements(CoverageEligibilityRequest element) throws IOException {
42020    composeDomainResourceElements(element);
42021    if (element.hasIdentifier()) { 
42022      for (Identifier e : element.getIdentifier()) 
42023          composeIdentifier("identifier", e);
42024    }
42025    if (element.hasStatusElement())
42026      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
42027    if (element.hasPriority()) {
42028      composeCodeableConcept("priority", element.getPriority());
42029    }
42030      if (element.hasPurpose()) 
42031        for (Enumeration<CoverageEligibilityRequest.EligibilityRequestPurpose> e : element.getPurpose()) 
42032          composeEnumeration("purpose", e, new CoverageEligibilityRequest.EligibilityRequestPurposeEnumFactory());
42033    if (element.hasPatient()) {
42034      composeReference("patient", element.getPatient());
42035    }
42036    if (element.hasEvent()) { 
42037      for (CoverageEligibilityRequest.CoverageEligibilityRequestEventComponent e : element.getEvent()) 
42038          composeCoverageEligibilityRequestEventComponent("event", e);
42039    }
42040    if (element.hasServiced()) {
42041      composeType("serviced", element.getServiced());
42042    }    if (element.hasCreatedElement()) {
42043      composeDateTime("created", element.getCreatedElement());
42044    }
42045    if (element.hasEnterer()) {
42046      composeReference("enterer", element.getEnterer());
42047    }
42048    if (element.hasProvider()) {
42049      composeReference("provider", element.getProvider());
42050    }
42051    if (element.hasInsurer()) {
42052      composeReference("insurer", element.getInsurer());
42053    }
42054    if (element.hasFacility()) {
42055      composeReference("facility", element.getFacility());
42056    }
42057    if (element.hasSupportingInfo()) { 
42058      for (CoverageEligibilityRequest.SupportingInformationComponent e : element.getSupportingInfo()) 
42059          composeCoverageEligibilityRequestSupportingInformationComponent("supportingInfo", e);
42060    }
42061    if (element.hasInsurance()) { 
42062      for (CoverageEligibilityRequest.InsuranceComponent e : element.getInsurance()) 
42063          composeCoverageEligibilityRequestInsuranceComponent("insurance", e);
42064    }
42065    if (element.hasItem()) { 
42066      for (CoverageEligibilityRequest.DetailsComponent e : element.getItem()) 
42067          composeCoverageEligibilityRequestDetailsComponent("item", e);
42068    }
42069  }
42070
42071  protected void composeCoverageEligibilityRequestEventComponent(String name, CoverageEligibilityRequest.CoverageEligibilityRequestEventComponent element) throws IOException {
42072    if (element != null) {
42073    composeElementAttributes(element);
42074      xml.enter(FHIR_NS, name);
42075      composeCoverageEligibilityRequestEventComponentElements(element);
42076      composeElementClose(element);
42077      xml.exit(FHIR_NS, name);
42078    }
42079  }
42080
42081  protected void composeCoverageEligibilityRequestEventComponentElements(CoverageEligibilityRequest.CoverageEligibilityRequestEventComponent element) throws IOException {
42082    composeBackboneElementElements(element);
42083    if (element.hasType()) {
42084      composeCodeableConcept("type", element.getType());
42085    }
42086    if (element.hasWhen()) {
42087      composeType("when", element.getWhen());
42088    }  }
42089
42090  protected void composeCoverageEligibilityRequestSupportingInformationComponent(String name, CoverageEligibilityRequest.SupportingInformationComponent element) throws IOException {
42091    if (element != null) {
42092    composeElementAttributes(element);
42093      xml.enter(FHIR_NS, name);
42094      composeCoverageEligibilityRequestSupportingInformationComponentElements(element);
42095      composeElementClose(element);
42096      xml.exit(FHIR_NS, name);
42097    }
42098  }
42099
42100  protected void composeCoverageEligibilityRequestSupportingInformationComponentElements(CoverageEligibilityRequest.SupportingInformationComponent element) throws IOException {
42101    composeBackboneElementElements(element);
42102    if (element.hasSequenceElement()) {
42103      composePositiveInt("sequence", element.getSequenceElement());
42104    }
42105    if (element.hasInformation()) {
42106      composeReference("information", element.getInformation());
42107    }
42108    if (element.hasAppliesToAllElement()) {
42109      composeBoolean("appliesToAll", element.getAppliesToAllElement());
42110    }
42111  }
42112
42113  protected void composeCoverageEligibilityRequestInsuranceComponent(String name, CoverageEligibilityRequest.InsuranceComponent element) throws IOException {
42114    if (element != null) {
42115    composeElementAttributes(element);
42116      xml.enter(FHIR_NS, name);
42117      composeCoverageEligibilityRequestInsuranceComponentElements(element);
42118      composeElementClose(element);
42119      xml.exit(FHIR_NS, name);
42120    }
42121  }
42122
42123  protected void composeCoverageEligibilityRequestInsuranceComponentElements(CoverageEligibilityRequest.InsuranceComponent element) throws IOException {
42124    composeBackboneElementElements(element);
42125    if (element.hasFocalElement()) {
42126      composeBoolean("focal", element.getFocalElement());
42127    }
42128    if (element.hasCoverage()) {
42129      composeReference("coverage", element.getCoverage());
42130    }
42131    if (element.hasBusinessArrangementElement()) {
42132      composeString("businessArrangement", element.getBusinessArrangementElement());
42133    }
42134  }
42135
42136  protected void composeCoverageEligibilityRequestDetailsComponent(String name, CoverageEligibilityRequest.DetailsComponent element) throws IOException {
42137    if (element != null) {
42138    composeElementAttributes(element);
42139      xml.enter(FHIR_NS, name);
42140      composeCoverageEligibilityRequestDetailsComponentElements(element);
42141      composeElementClose(element);
42142      xml.exit(FHIR_NS, name);
42143    }
42144  }
42145
42146  protected void composeCoverageEligibilityRequestDetailsComponentElements(CoverageEligibilityRequest.DetailsComponent element) throws IOException {
42147    composeBackboneElementElements(element);
42148    if (element.hasSupportingInfoSequence()) { 
42149      for (PositiveIntType e : element.getSupportingInfoSequence()) 
42150          composePositiveInt("supportingInfoSequence", e);
42151    }
42152    if (element.hasCategory()) {
42153      composeCodeableConcept("category", element.getCategory());
42154    }
42155    if (element.hasProductOrService()) {
42156      composeCodeableConcept("productOrService", element.getProductOrService());
42157    }
42158    if (element.hasModifier()) { 
42159      for (CodeableConcept e : element.getModifier()) 
42160          composeCodeableConcept("modifier", e);
42161    }
42162    if (element.hasProvider()) {
42163      composeReference("provider", element.getProvider());
42164    }
42165    if (element.hasQuantity()) {
42166      composeQuantity("quantity", element.getQuantity());
42167    }
42168    if (element.hasUnitPrice()) {
42169      composeMoney("unitPrice", element.getUnitPrice());
42170    }
42171    if (element.hasFacility()) {
42172      composeReference("facility", element.getFacility());
42173    }
42174    if (element.hasDiagnosis()) { 
42175      for (CoverageEligibilityRequest.DiagnosisComponent e : element.getDiagnosis()) 
42176          composeCoverageEligibilityRequestDiagnosisComponent("diagnosis", e);
42177    }
42178    if (element.hasDetail()) { 
42179      for (Reference e : element.getDetail()) 
42180          composeReference("detail", e);
42181    }
42182  }
42183
42184  protected void composeCoverageEligibilityRequestDiagnosisComponent(String name, CoverageEligibilityRequest.DiagnosisComponent element) throws IOException {
42185    if (element != null) {
42186    composeElementAttributes(element);
42187      xml.enter(FHIR_NS, name);
42188      composeCoverageEligibilityRequestDiagnosisComponentElements(element);
42189      composeElementClose(element);
42190      xml.exit(FHIR_NS, name);
42191    }
42192  }
42193
42194  protected void composeCoverageEligibilityRequestDiagnosisComponentElements(CoverageEligibilityRequest.DiagnosisComponent element) throws IOException {
42195    composeBackboneElementElements(element);
42196    if (element.hasDiagnosis()) {
42197      composeType("diagnosis", element.getDiagnosis());
42198    }  }
42199
42200  protected void composeCoverageEligibilityResponse(String name, CoverageEligibilityResponse element) throws IOException {
42201    if (element != null) {
42202    composeResourceAttributes(element);
42203      xml.enter(FHIR_NS, name);
42204      composeCoverageEligibilityResponseElements(element);
42205      composeElementClose(element);
42206      xml.exit(FHIR_NS, name);
42207    }
42208  }
42209
42210  protected void composeCoverageEligibilityResponseElements(CoverageEligibilityResponse element) throws IOException {
42211    composeDomainResourceElements(element);
42212    if (element.hasIdentifier()) { 
42213      for (Identifier e : element.getIdentifier()) 
42214          composeIdentifier("identifier", e);
42215    }
42216    if (element.hasStatusElement())
42217      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
42218      if (element.hasPurpose()) 
42219        for (Enumeration<CoverageEligibilityResponse.EligibilityResponsePurpose> e : element.getPurpose()) 
42220          composeEnumeration("purpose", e, new CoverageEligibilityResponse.EligibilityResponsePurposeEnumFactory());
42221    if (element.hasPatient()) {
42222      composeReference("patient", element.getPatient());
42223    }
42224    if (element.hasEvent()) { 
42225      for (CoverageEligibilityResponse.CoverageEligibilityResponseEventComponent e : element.getEvent()) 
42226          composeCoverageEligibilityResponseEventComponent("event", e);
42227    }
42228    if (element.hasServiced()) {
42229      composeType("serviced", element.getServiced());
42230    }    if (element.hasCreatedElement()) {
42231      composeDateTime("created", element.getCreatedElement());
42232    }
42233    if (element.hasRequestor()) {
42234      composeReference("requestor", element.getRequestor());
42235    }
42236    if (element.hasRequest()) {
42237      composeReference("request", element.getRequest());
42238    }
42239    if (element.hasOutcomeElement())
42240      composeEnumeration("outcome", element.getOutcomeElement(), new CoverageEligibilityResponse.EligibilityOutcomeEnumFactory());
42241    if (element.hasDispositionElement()) {
42242      composeString("disposition", element.getDispositionElement());
42243    }
42244    if (element.hasInsurer()) {
42245      composeReference("insurer", element.getInsurer());
42246    }
42247    if (element.hasInsurance()) { 
42248      for (CoverageEligibilityResponse.InsuranceComponent e : element.getInsurance()) 
42249          composeCoverageEligibilityResponseInsuranceComponent("insurance", e);
42250    }
42251    if (element.hasPreAuthRefElement()) {
42252      composeString("preAuthRef", element.getPreAuthRefElement());
42253    }
42254    if (element.hasForm()) {
42255      composeCodeableConcept("form", element.getForm());
42256    }
42257    if (element.hasError()) { 
42258      for (CoverageEligibilityResponse.ErrorsComponent e : element.getError()) 
42259          composeCoverageEligibilityResponseErrorsComponent("error", e);
42260    }
42261  }
42262
42263  protected void composeCoverageEligibilityResponseEventComponent(String name, CoverageEligibilityResponse.CoverageEligibilityResponseEventComponent element) throws IOException {
42264    if (element != null) {
42265    composeElementAttributes(element);
42266      xml.enter(FHIR_NS, name);
42267      composeCoverageEligibilityResponseEventComponentElements(element);
42268      composeElementClose(element);
42269      xml.exit(FHIR_NS, name);
42270    }
42271  }
42272
42273  protected void composeCoverageEligibilityResponseEventComponentElements(CoverageEligibilityResponse.CoverageEligibilityResponseEventComponent element) throws IOException {
42274    composeBackboneElementElements(element);
42275    if (element.hasType()) {
42276      composeCodeableConcept("type", element.getType());
42277    }
42278    if (element.hasWhen()) {
42279      composeType("when", element.getWhen());
42280    }  }
42281
42282  protected void composeCoverageEligibilityResponseInsuranceComponent(String name, CoverageEligibilityResponse.InsuranceComponent element) throws IOException {
42283    if (element != null) {
42284    composeElementAttributes(element);
42285      xml.enter(FHIR_NS, name);
42286      composeCoverageEligibilityResponseInsuranceComponentElements(element);
42287      composeElementClose(element);
42288      xml.exit(FHIR_NS, name);
42289    }
42290  }
42291
42292  protected void composeCoverageEligibilityResponseInsuranceComponentElements(CoverageEligibilityResponse.InsuranceComponent element) throws IOException {
42293    composeBackboneElementElements(element);
42294    if (element.hasCoverage()) {
42295      composeReference("coverage", element.getCoverage());
42296    }
42297    if (element.hasInforceElement()) {
42298      composeBoolean("inforce", element.getInforceElement());
42299    }
42300    if (element.hasBenefitPeriod()) {
42301      composePeriod("benefitPeriod", element.getBenefitPeriod());
42302    }
42303    if (element.hasItem()) { 
42304      for (CoverageEligibilityResponse.ItemsComponent e : element.getItem()) 
42305          composeCoverageEligibilityResponseItemsComponent("item", e);
42306    }
42307  }
42308
42309  protected void composeCoverageEligibilityResponseItemsComponent(String name, CoverageEligibilityResponse.ItemsComponent element) throws IOException {
42310    if (element != null) {
42311    composeElementAttributes(element);
42312      xml.enter(FHIR_NS, name);
42313      composeCoverageEligibilityResponseItemsComponentElements(element);
42314      composeElementClose(element);
42315      xml.exit(FHIR_NS, name);
42316    }
42317  }
42318
42319  protected void composeCoverageEligibilityResponseItemsComponentElements(CoverageEligibilityResponse.ItemsComponent element) throws IOException {
42320    composeBackboneElementElements(element);
42321    if (element.hasCategory()) {
42322      composeCodeableConcept("category", element.getCategory());
42323    }
42324    if (element.hasProductOrService()) {
42325      composeCodeableConcept("productOrService", element.getProductOrService());
42326    }
42327    if (element.hasModifier()) { 
42328      for (CodeableConcept e : element.getModifier()) 
42329          composeCodeableConcept("modifier", e);
42330    }
42331    if (element.hasProvider()) {
42332      composeReference("provider", element.getProvider());
42333    }
42334    if (element.hasExcludedElement()) {
42335      composeBoolean("excluded", element.getExcludedElement());
42336    }
42337    if (element.hasNameElement()) {
42338      composeString("name", element.getNameElement());
42339    }
42340    if (element.hasDescriptionElement()) {
42341      composeString("description", element.getDescriptionElement());
42342    }
42343    if (element.hasNetwork()) {
42344      composeCodeableConcept("network", element.getNetwork());
42345    }
42346    if (element.hasUnit()) {
42347      composeCodeableConcept("unit", element.getUnit());
42348    }
42349    if (element.hasTerm()) {
42350      composeCodeableConcept("term", element.getTerm());
42351    }
42352    if (element.hasBenefit()) { 
42353      for (CoverageEligibilityResponse.BenefitComponent e : element.getBenefit()) 
42354          composeCoverageEligibilityResponseBenefitComponent("benefit", e);
42355    }
42356    if (element.hasAuthorizationRequiredElement()) {
42357      composeBoolean("authorizationRequired", element.getAuthorizationRequiredElement());
42358    }
42359    if (element.hasAuthorizationSupporting()) { 
42360      for (CodeableConcept e : element.getAuthorizationSupporting()) 
42361          composeCodeableConcept("authorizationSupporting", e);
42362    }
42363    if (element.hasAuthorizationUrlElement()) {
42364      composeUri("authorizationUrl", element.getAuthorizationUrlElement());
42365    }
42366  }
42367
42368  protected void composeCoverageEligibilityResponseBenefitComponent(String name, CoverageEligibilityResponse.BenefitComponent element) throws IOException {
42369    if (element != null) {
42370    composeElementAttributes(element);
42371      xml.enter(FHIR_NS, name);
42372      composeCoverageEligibilityResponseBenefitComponentElements(element);
42373      composeElementClose(element);
42374      xml.exit(FHIR_NS, name);
42375    }
42376  }
42377
42378  protected void composeCoverageEligibilityResponseBenefitComponentElements(CoverageEligibilityResponse.BenefitComponent element) throws IOException {
42379    composeBackboneElementElements(element);
42380    if (element.hasType()) {
42381      composeCodeableConcept("type", element.getType());
42382    }
42383    if (element.hasAllowed()) {
42384      composeType("allowed", element.getAllowed());
42385    }    if (element.hasUsed()) {
42386      composeType("used", element.getUsed());
42387    }  }
42388
42389  protected void composeCoverageEligibilityResponseErrorsComponent(String name, CoverageEligibilityResponse.ErrorsComponent element) throws IOException {
42390    if (element != null) {
42391    composeElementAttributes(element);
42392      xml.enter(FHIR_NS, name);
42393      composeCoverageEligibilityResponseErrorsComponentElements(element);
42394      composeElementClose(element);
42395      xml.exit(FHIR_NS, name);
42396    }
42397  }
42398
42399  protected void composeCoverageEligibilityResponseErrorsComponentElements(CoverageEligibilityResponse.ErrorsComponent element) throws IOException {
42400    composeBackboneElementElements(element);
42401    if (element.hasCode()) {
42402      composeCodeableConcept("code", element.getCode());
42403    }
42404    if (element.hasExpression()) { 
42405      for (StringType e : element.getExpression()) 
42406          composeString("expression", e);
42407    }
42408  }
42409
42410  protected void composeDetectedIssue(String name, DetectedIssue element) throws IOException {
42411    if (element != null) {
42412    composeResourceAttributes(element);
42413      xml.enter(FHIR_NS, name);
42414      composeDetectedIssueElements(element);
42415      composeElementClose(element);
42416      xml.exit(FHIR_NS, name);
42417    }
42418  }
42419
42420  protected void composeDetectedIssueElements(DetectedIssue element) throws IOException {
42421    composeDomainResourceElements(element);
42422    if (element.hasIdentifier()) { 
42423      for (Identifier e : element.getIdentifier()) 
42424          composeIdentifier("identifier", e);
42425    }
42426    if (element.hasStatusElement())
42427      composeEnumeration("status", element.getStatusElement(), new DetectedIssue.DetectedIssueStatusEnumFactory());
42428    if (element.hasCategory()) { 
42429      for (CodeableConcept e : element.getCategory()) 
42430          composeCodeableConcept("category", e);
42431    }
42432    if (element.hasCode()) {
42433      composeCodeableConcept("code", element.getCode());
42434    }
42435    if (element.hasSeverityElement())
42436      composeEnumeration("severity", element.getSeverityElement(), new DetectedIssue.DetectedIssueSeverityEnumFactory());
42437    if (element.hasSubject()) {
42438      composeReference("subject", element.getSubject());
42439    }
42440    if (element.hasEncounter()) {
42441      composeReference("encounter", element.getEncounter());
42442    }
42443    if (element.hasIdentified()) {
42444      composeType("identified", element.getIdentified());
42445    }    if (element.hasAuthor()) {
42446      composeReference("author", element.getAuthor());
42447    }
42448    if (element.hasImplicated()) { 
42449      for (Reference e : element.getImplicated()) 
42450          composeReference("implicated", e);
42451    }
42452    if (element.hasEvidence()) { 
42453      for (DetectedIssue.DetectedIssueEvidenceComponent e : element.getEvidence()) 
42454          composeDetectedIssueEvidenceComponent("evidence", e);
42455    }
42456    if (element.hasDetailElement()) {
42457      composeMarkdown("detail", element.getDetailElement());
42458    }
42459    if (element.hasReferenceElement()) {
42460      composeUri("reference", element.getReferenceElement());
42461    }
42462    if (element.hasMitigation()) { 
42463      for (DetectedIssue.DetectedIssueMitigationComponent e : element.getMitigation()) 
42464          composeDetectedIssueMitigationComponent("mitigation", e);
42465    }
42466  }
42467
42468  protected void composeDetectedIssueEvidenceComponent(String name, DetectedIssue.DetectedIssueEvidenceComponent element) throws IOException {
42469    if (element != null) {
42470    composeElementAttributes(element);
42471      xml.enter(FHIR_NS, name);
42472      composeDetectedIssueEvidenceComponentElements(element);
42473      composeElementClose(element);
42474      xml.exit(FHIR_NS, name);
42475    }
42476  }
42477
42478  protected void composeDetectedIssueEvidenceComponentElements(DetectedIssue.DetectedIssueEvidenceComponent element) throws IOException {
42479    composeBackboneElementElements(element);
42480    if (element.hasCode()) { 
42481      for (CodeableConcept e : element.getCode()) 
42482          composeCodeableConcept("code", e);
42483    }
42484    if (element.hasDetail()) { 
42485      for (Reference e : element.getDetail()) 
42486          composeReference("detail", e);
42487    }
42488  }
42489
42490  protected void composeDetectedIssueMitigationComponent(String name, DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
42491    if (element != null) {
42492    composeElementAttributes(element);
42493      xml.enter(FHIR_NS, name);
42494      composeDetectedIssueMitigationComponentElements(element);
42495      composeElementClose(element);
42496      xml.exit(FHIR_NS, name);
42497    }
42498  }
42499
42500  protected void composeDetectedIssueMitigationComponentElements(DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
42501    composeBackboneElementElements(element);
42502    if (element.hasAction()) {
42503      composeCodeableConcept("action", element.getAction());
42504    }
42505    if (element.hasDateElement()) {
42506      composeDateTime("date", element.getDateElement());
42507    }
42508    if (element.hasAuthor()) {
42509      composeReference("author", element.getAuthor());
42510    }
42511    if (element.hasNote()) { 
42512      for (Annotation e : element.getNote()) 
42513          composeAnnotation("note", e);
42514    }
42515  }
42516
42517  protected void composeDevice(String name, Device element) throws IOException {
42518    if (element != null) {
42519    composeResourceAttributes(element);
42520      xml.enter(FHIR_NS, name);
42521      composeDeviceElements(element);
42522      composeElementClose(element);
42523      xml.exit(FHIR_NS, name);
42524    }
42525  }
42526
42527  protected void composeDeviceElements(Device element) throws IOException {
42528    composeDomainResourceElements(element);
42529    if (element.hasIdentifier()) { 
42530      for (Identifier e : element.getIdentifier()) 
42531          composeIdentifier("identifier", e);
42532    }
42533    if (element.hasDisplayNameElement()) {
42534      composeString("displayName", element.getDisplayNameElement());
42535    }
42536    if (element.hasDefinition()) {
42537      composeCodeableReference("definition", element.getDefinition());
42538    }
42539    if (element.hasUdiCarrier()) { 
42540      for (Device.DeviceUdiCarrierComponent e : element.getUdiCarrier()) 
42541          composeDeviceUdiCarrierComponent("udiCarrier", e);
42542    }
42543    if (element.hasStatusElement())
42544      composeEnumeration("status", element.getStatusElement(), new Device.FHIRDeviceStatusEnumFactory());
42545    if (element.hasAvailabilityStatus()) {
42546      composeCodeableConcept("availabilityStatus", element.getAvailabilityStatus());
42547    }
42548    if (element.hasBiologicalSourceEvent()) {
42549      composeIdentifier("biologicalSourceEvent", element.getBiologicalSourceEvent());
42550    }
42551    if (element.hasManufacturerElement()) {
42552      composeString("manufacturer", element.getManufacturerElement());
42553    }
42554    if (element.hasManufactureDateElement()) {
42555      composeDateTime("manufactureDate", element.getManufactureDateElement());
42556    }
42557    if (element.hasExpirationDateElement()) {
42558      composeDateTime("expirationDate", element.getExpirationDateElement());
42559    }
42560    if (element.hasLotNumberElement()) {
42561      composeString("lotNumber", element.getLotNumberElement());
42562    }
42563    if (element.hasSerialNumberElement()) {
42564      composeString("serialNumber", element.getSerialNumberElement());
42565    }
42566    if (element.hasName()) { 
42567      for (Device.DeviceNameComponent e : element.getName()) 
42568          composeDeviceNameComponent("name", e);
42569    }
42570    if (element.hasModelNumberElement()) {
42571      composeString("modelNumber", element.getModelNumberElement());
42572    }
42573    if (element.hasPartNumberElement()) {
42574      composeString("partNumber", element.getPartNumberElement());
42575    }
42576    if (element.hasCategory()) { 
42577      for (CodeableConcept e : element.getCategory()) 
42578          composeCodeableConcept("category", e);
42579    }
42580    if (element.hasType()) { 
42581      for (CodeableConcept e : element.getType()) 
42582          composeCodeableConcept("type", e);
42583    }
42584    if (element.hasVersion()) { 
42585      for (Device.DeviceVersionComponent e : element.getVersion()) 
42586          composeDeviceVersionComponent("version", e);
42587    }
42588    if (element.hasConformsTo()) { 
42589      for (Device.DeviceConformsToComponent e : element.getConformsTo()) 
42590          composeDeviceConformsToComponent("conformsTo", e);
42591    }
42592    if (element.hasProperty()) { 
42593      for (Device.DevicePropertyComponent e : element.getProperty()) 
42594          composeDevicePropertyComponent("property", e);
42595    }
42596    if (element.hasMode()) {
42597      composeCodeableConcept("mode", element.getMode());
42598    }
42599    if (element.hasCycle()) {
42600      composeCount("cycle", element.getCycle());
42601    }
42602    if (element.hasDuration()) {
42603      composeDuration("duration", element.getDuration());
42604    }
42605    if (element.hasOwner()) {
42606      composeReference("owner", element.getOwner());
42607    }
42608    if (element.hasContact()) { 
42609      for (ContactPoint e : element.getContact()) 
42610          composeContactPoint("contact", e);
42611    }
42612    if (element.hasLocation()) {
42613      composeReference("location", element.getLocation());
42614    }
42615    if (element.hasUrlElement()) {
42616      composeUri("url", element.getUrlElement());
42617    }
42618    if (element.hasEndpoint()) { 
42619      for (Reference e : element.getEndpoint()) 
42620          composeReference("endpoint", e);
42621    }
42622    if (element.hasGateway()) { 
42623      for (CodeableReference e : element.getGateway()) 
42624          composeCodeableReference("gateway", e);
42625    }
42626    if (element.hasNote()) { 
42627      for (Annotation e : element.getNote()) 
42628          composeAnnotation("note", e);
42629    }
42630    if (element.hasSafety()) { 
42631      for (CodeableConcept e : element.getSafety()) 
42632          composeCodeableConcept("safety", e);
42633    }
42634    if (element.hasParent()) {
42635      composeReference("parent", element.getParent());
42636    }
42637  }
42638
42639  protected void composeDeviceUdiCarrierComponent(String name, Device.DeviceUdiCarrierComponent element) throws IOException {
42640    if (element != null) {
42641    composeElementAttributes(element);
42642      xml.enter(FHIR_NS, name);
42643      composeDeviceUdiCarrierComponentElements(element);
42644      composeElementClose(element);
42645      xml.exit(FHIR_NS, name);
42646    }
42647  }
42648
42649  protected void composeDeviceUdiCarrierComponentElements(Device.DeviceUdiCarrierComponent element) throws IOException {
42650    composeBackboneElementElements(element);
42651    if (element.hasDeviceIdentifierElement()) {
42652      composeString("deviceIdentifier", element.getDeviceIdentifierElement());
42653    }
42654    if (element.hasIssuerElement()) {
42655      composeUri("issuer", element.getIssuerElement());
42656    }
42657    if (element.hasJurisdictionElement()) {
42658      composeUri("jurisdiction", element.getJurisdictionElement());
42659    }
42660    if (element.hasCarrierAIDCElement()) {
42661      composeBase64Binary("carrierAIDC", element.getCarrierAIDCElement());
42662    }
42663    if (element.hasCarrierHRFElement()) {
42664      composeString("carrierHRF", element.getCarrierHRFElement());
42665    }
42666    if (element.hasEntryTypeElement())
42667      composeEnumeration("entryType", element.getEntryTypeElement(), new Device.UDIEntryTypeEnumFactory());
42668  }
42669
42670  protected void composeDeviceNameComponent(String name, Device.DeviceNameComponent element) throws IOException {
42671    if (element != null) {
42672    composeElementAttributes(element);
42673      xml.enter(FHIR_NS, name);
42674      composeDeviceNameComponentElements(element);
42675      composeElementClose(element);
42676      xml.exit(FHIR_NS, name);
42677    }
42678  }
42679
42680  protected void composeDeviceNameComponentElements(Device.DeviceNameComponent element) throws IOException {
42681    composeBackboneElementElements(element);
42682    if (element.hasValueElement()) {
42683      composeString("value", element.getValueElement());
42684    }
42685    if (element.hasTypeElement())
42686      composeEnumeration("type", element.getTypeElement(), new Enumerations.DeviceNameTypeEnumFactory());
42687    if (element.hasDisplayElement()) {
42688      composeBoolean("display", element.getDisplayElement());
42689    }
42690  }
42691
42692  protected void composeDeviceVersionComponent(String name, Device.DeviceVersionComponent element) throws IOException {
42693    if (element != null) {
42694    composeElementAttributes(element);
42695      xml.enter(FHIR_NS, name);
42696      composeDeviceVersionComponentElements(element);
42697      composeElementClose(element);
42698      xml.exit(FHIR_NS, name);
42699    }
42700  }
42701
42702  protected void composeDeviceVersionComponentElements(Device.DeviceVersionComponent element) throws IOException {
42703    composeBackboneElementElements(element);
42704    if (element.hasType()) {
42705      composeCodeableConcept("type", element.getType());
42706    }
42707    if (element.hasComponent()) {
42708      composeIdentifier("component", element.getComponent());
42709    }
42710    if (element.hasInstallDateElement()) {
42711      composeDateTime("installDate", element.getInstallDateElement());
42712    }
42713    if (element.hasValueElement()) {
42714      composeString("value", element.getValueElement());
42715    }
42716  }
42717
42718  protected void composeDeviceConformsToComponent(String name, Device.DeviceConformsToComponent element) throws IOException {
42719    if (element != null) {
42720    composeElementAttributes(element);
42721      xml.enter(FHIR_NS, name);
42722      composeDeviceConformsToComponentElements(element);
42723      composeElementClose(element);
42724      xml.exit(FHIR_NS, name);
42725    }
42726  }
42727
42728  protected void composeDeviceConformsToComponentElements(Device.DeviceConformsToComponent element) throws IOException {
42729    composeBackboneElementElements(element);
42730    if (element.hasCategory()) {
42731      composeCodeableConcept("category", element.getCategory());
42732    }
42733    if (element.hasSpecification()) {
42734      composeCodeableConcept("specification", element.getSpecification());
42735    }
42736    if (element.hasVersionElement()) {
42737      composeString("version", element.getVersionElement());
42738    }
42739  }
42740
42741  protected void composeDevicePropertyComponent(String name, Device.DevicePropertyComponent element) throws IOException {
42742    if (element != null) {
42743    composeElementAttributes(element);
42744      xml.enter(FHIR_NS, name);
42745      composeDevicePropertyComponentElements(element);
42746      composeElementClose(element);
42747      xml.exit(FHIR_NS, name);
42748    }
42749  }
42750
42751  protected void composeDevicePropertyComponentElements(Device.DevicePropertyComponent element) throws IOException {
42752    composeBackboneElementElements(element);
42753    if (element.hasType()) {
42754      composeCodeableConcept("type", element.getType());
42755    }
42756    if (element.hasValue()) {
42757      composeType("value", element.getValue());
42758    }  }
42759
42760  protected void composeDeviceAssociation(String name, DeviceAssociation element) throws IOException {
42761    if (element != null) {
42762    composeResourceAttributes(element);
42763      xml.enter(FHIR_NS, name);
42764      composeDeviceAssociationElements(element);
42765      composeElementClose(element);
42766      xml.exit(FHIR_NS, name);
42767    }
42768  }
42769
42770  protected void composeDeviceAssociationElements(DeviceAssociation element) throws IOException {
42771    composeDomainResourceElements(element);
42772    if (element.hasIdentifier()) { 
42773      for (Identifier e : element.getIdentifier()) 
42774          composeIdentifier("identifier", e);
42775    }
42776    if (element.hasDevice()) {
42777      composeReference("device", element.getDevice());
42778    }
42779    if (element.hasCategory()) { 
42780      for (CodeableConcept e : element.getCategory()) 
42781          composeCodeableConcept("category", e);
42782    }
42783    if (element.hasStatus()) {
42784      composeCodeableConcept("status", element.getStatus());
42785    }
42786    if (element.hasStatusReason()) { 
42787      for (CodeableConcept e : element.getStatusReason()) 
42788          composeCodeableConcept("statusReason", e);
42789    }
42790    if (element.hasSubject()) {
42791      composeReference("subject", element.getSubject());
42792    }
42793    if (element.hasBodyStructure()) {
42794      composeReference("bodyStructure", element.getBodyStructure());
42795    }
42796    if (element.hasPeriod()) {
42797      composePeriod("period", element.getPeriod());
42798    }
42799    if (element.hasOperation()) { 
42800      for (DeviceAssociation.DeviceAssociationOperationComponent e : element.getOperation()) 
42801          composeDeviceAssociationOperationComponent("operation", e);
42802    }
42803  }
42804
42805  protected void composeDeviceAssociationOperationComponent(String name, DeviceAssociation.DeviceAssociationOperationComponent element) throws IOException {
42806    if (element != null) {
42807    composeElementAttributes(element);
42808      xml.enter(FHIR_NS, name);
42809      composeDeviceAssociationOperationComponentElements(element);
42810      composeElementClose(element);
42811      xml.exit(FHIR_NS, name);
42812    }
42813  }
42814
42815  protected void composeDeviceAssociationOperationComponentElements(DeviceAssociation.DeviceAssociationOperationComponent element) throws IOException {
42816    composeBackboneElementElements(element);
42817    if (element.hasStatus()) {
42818      composeCodeableConcept("status", element.getStatus());
42819    }
42820    if (element.hasOperator()) { 
42821      for (Reference e : element.getOperator()) 
42822          composeReference("operator", e);
42823    }
42824    if (element.hasPeriod()) {
42825      composePeriod("period", element.getPeriod());
42826    }
42827  }
42828
42829  protected void composeDeviceDefinition(String name, DeviceDefinition element) throws IOException {
42830    if (element != null) {
42831    composeResourceAttributes(element);
42832      xml.enter(FHIR_NS, name);
42833      composeDeviceDefinitionElements(element);
42834      composeElementClose(element);
42835      xml.exit(FHIR_NS, name);
42836    }
42837  }
42838
42839  protected void composeDeviceDefinitionElements(DeviceDefinition element) throws IOException {
42840    composeDomainResourceElements(element);
42841    if (element.hasDescriptionElement()) {
42842      composeMarkdown("description", element.getDescriptionElement());
42843    }
42844    if (element.hasIdentifier()) { 
42845      for (Identifier e : element.getIdentifier()) 
42846          composeIdentifier("identifier", e);
42847    }
42848    if (element.hasUdiDeviceIdentifier()) { 
42849      for (DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent e : element.getUdiDeviceIdentifier()) 
42850          composeDeviceDefinitionUdiDeviceIdentifierComponent("udiDeviceIdentifier", e);
42851    }
42852    if (element.hasRegulatoryIdentifier()) { 
42853      for (DeviceDefinition.DeviceDefinitionRegulatoryIdentifierComponent e : element.getRegulatoryIdentifier()) 
42854          composeDeviceDefinitionRegulatoryIdentifierComponent("regulatoryIdentifier", e);
42855    }
42856    if (element.hasPartNumberElement()) {
42857      composeString("partNumber", element.getPartNumberElement());
42858    }
42859    if (element.hasManufacturer()) {
42860      composeReference("manufacturer", element.getManufacturer());
42861    }
42862    if (element.hasDeviceName()) { 
42863      for (DeviceDefinition.DeviceDefinitionDeviceNameComponent e : element.getDeviceName()) 
42864          composeDeviceDefinitionDeviceNameComponent("deviceName", e);
42865    }
42866    if (element.hasModelNumberElement()) {
42867      composeString("modelNumber", element.getModelNumberElement());
42868    }
42869    if (element.hasClassification()) { 
42870      for (DeviceDefinition.DeviceDefinitionClassificationComponent e : element.getClassification()) 
42871          composeDeviceDefinitionClassificationComponent("classification", e);
42872    }
42873    if (element.hasConformsTo()) { 
42874      for (DeviceDefinition.DeviceDefinitionConformsToComponent e : element.getConformsTo()) 
42875          composeDeviceDefinitionConformsToComponent("conformsTo", e);
42876    }
42877    if (element.hasHasPart()) { 
42878      for (DeviceDefinition.DeviceDefinitionHasPartComponent e : element.getHasPart()) 
42879          composeDeviceDefinitionHasPartComponent("hasPart", e);
42880    }
42881    if (element.hasPackaging()) { 
42882      for (DeviceDefinition.DeviceDefinitionPackagingComponent e : element.getPackaging()) 
42883          composeDeviceDefinitionPackagingComponent("packaging", e);
42884    }
42885    if (element.hasVersion()) { 
42886      for (DeviceDefinition.DeviceDefinitionVersionComponent e : element.getVersion()) 
42887          composeDeviceDefinitionVersionComponent("version", e);
42888    }
42889    if (element.hasSafety()) { 
42890      for (CodeableConcept e : element.getSafety()) 
42891          composeCodeableConcept("safety", e);
42892    }
42893    if (element.hasShelfLifeStorage()) { 
42894      for (ProductShelfLife e : element.getShelfLifeStorage()) 
42895          composeProductShelfLife("shelfLifeStorage", e);
42896    }
42897    if (element.hasLanguageCode()) { 
42898      for (CodeableConcept e : element.getLanguageCode()) 
42899          composeCodeableConcept("languageCode", e);
42900    }
42901    if (element.hasProperty()) { 
42902      for (DeviceDefinition.DeviceDefinitionPropertyComponent e : element.getProperty()) 
42903          composeDeviceDefinitionPropertyComponent("property", e);
42904    }
42905    if (element.hasOwner()) {
42906      composeReference("owner", element.getOwner());
42907    }
42908    if (element.hasContact()) { 
42909      for (ContactPoint e : element.getContact()) 
42910          composeContactPoint("contact", e);
42911    }
42912    if (element.hasLink()) { 
42913      for (DeviceDefinition.DeviceDefinitionLinkComponent e : element.getLink()) 
42914          composeDeviceDefinitionLinkComponent("link", e);
42915    }
42916    if (element.hasNote()) { 
42917      for (Annotation e : element.getNote()) 
42918          composeAnnotation("note", e);
42919    }
42920    if (element.hasMaterial()) { 
42921      for (DeviceDefinition.DeviceDefinitionMaterialComponent e : element.getMaterial()) 
42922          composeDeviceDefinitionMaterialComponent("material", e);
42923    }
42924      if (element.hasProductionIdentifierInUDI()) 
42925        for (Enumeration<DeviceDefinition.DeviceProductionIdentifierInUDI> e : element.getProductionIdentifierInUDI()) 
42926          composeEnumeration("productionIdentifierInUDI", e, new DeviceDefinition.DeviceProductionIdentifierInUDIEnumFactory());
42927    if (element.hasGuideline()) {
42928      composeDeviceDefinitionGuidelineComponent("guideline", element.getGuideline());
42929    }
42930    if (element.hasCorrectiveAction()) {
42931      composeDeviceDefinitionCorrectiveActionComponent("correctiveAction", element.getCorrectiveAction());
42932    }
42933    if (element.hasChargeItem()) { 
42934      for (DeviceDefinition.DeviceDefinitionChargeItemComponent e : element.getChargeItem()) 
42935          composeDeviceDefinitionChargeItemComponent("chargeItem", e);
42936    }
42937  }
42938
42939  protected void composeDeviceDefinitionUdiDeviceIdentifierComponent(String name, DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent element) throws IOException {
42940    if (element != null) {
42941    composeElementAttributes(element);
42942      xml.enter(FHIR_NS, name);
42943      composeDeviceDefinitionUdiDeviceIdentifierComponentElements(element);
42944      composeElementClose(element);
42945      xml.exit(FHIR_NS, name);
42946    }
42947  }
42948
42949  protected void composeDeviceDefinitionUdiDeviceIdentifierComponentElements(DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent element) throws IOException {
42950    composeBackboneElementElements(element);
42951    if (element.hasDeviceIdentifierElement()) {
42952      composeString("deviceIdentifier", element.getDeviceIdentifierElement());
42953    }
42954    if (element.hasIssuerElement()) {
42955      composeUri("issuer", element.getIssuerElement());
42956    }
42957    if (element.hasJurisdictionElement()) {
42958      composeUri("jurisdiction", element.getJurisdictionElement());
42959    }
42960    if (element.hasMarketDistribution()) { 
42961      for (DeviceDefinition.UdiDeviceIdentifierMarketDistributionComponent e : element.getMarketDistribution()) 
42962          composeDeviceDefinitionUdiDeviceIdentifierMarketDistributionComponent("marketDistribution", e);
42963    }
42964  }
42965
42966  protected void composeDeviceDefinitionUdiDeviceIdentifierMarketDistributionComponent(String name, DeviceDefinition.UdiDeviceIdentifierMarketDistributionComponent element) throws IOException {
42967    if (element != null) {
42968    composeElementAttributes(element);
42969      xml.enter(FHIR_NS, name);
42970      composeDeviceDefinitionUdiDeviceIdentifierMarketDistributionComponentElements(element);
42971      composeElementClose(element);
42972      xml.exit(FHIR_NS, name);
42973    }
42974  }
42975
42976  protected void composeDeviceDefinitionUdiDeviceIdentifierMarketDistributionComponentElements(DeviceDefinition.UdiDeviceIdentifierMarketDistributionComponent element) throws IOException {
42977    composeBackboneElementElements(element);
42978    if (element.hasMarketPeriod()) {
42979      composePeriod("marketPeriod", element.getMarketPeriod());
42980    }
42981    if (element.hasSubJurisdictionElement()) {
42982      composeUri("subJurisdiction", element.getSubJurisdictionElement());
42983    }
42984  }
42985
42986  protected void composeDeviceDefinitionRegulatoryIdentifierComponent(String name, DeviceDefinition.DeviceDefinitionRegulatoryIdentifierComponent element) throws IOException {
42987    if (element != null) {
42988    composeElementAttributes(element);
42989      xml.enter(FHIR_NS, name);
42990      composeDeviceDefinitionRegulatoryIdentifierComponentElements(element);
42991      composeElementClose(element);
42992      xml.exit(FHIR_NS, name);
42993    }
42994  }
42995
42996  protected void composeDeviceDefinitionRegulatoryIdentifierComponentElements(DeviceDefinition.DeviceDefinitionRegulatoryIdentifierComponent element) throws IOException {
42997    composeBackboneElementElements(element);
42998    if (element.hasTypeElement())
42999      composeEnumeration("type", element.getTypeElement(), new DeviceDefinition.DeviceDefinitionRegulatoryIdentifierTypeEnumFactory());
43000    if (element.hasDeviceIdentifierElement()) {
43001      composeString("deviceIdentifier", element.getDeviceIdentifierElement());
43002    }
43003    if (element.hasIssuerElement()) {
43004      composeUri("issuer", element.getIssuerElement());
43005    }
43006    if (element.hasJurisdictionElement()) {
43007      composeUri("jurisdiction", element.getJurisdictionElement());
43008    }
43009  }
43010
43011  protected void composeDeviceDefinitionDeviceNameComponent(String name, DeviceDefinition.DeviceDefinitionDeviceNameComponent element) throws IOException {
43012    if (element != null) {
43013    composeElementAttributes(element);
43014      xml.enter(FHIR_NS, name);
43015      composeDeviceDefinitionDeviceNameComponentElements(element);
43016      composeElementClose(element);
43017      xml.exit(FHIR_NS, name);
43018    }
43019  }
43020
43021  protected void composeDeviceDefinitionDeviceNameComponentElements(DeviceDefinition.DeviceDefinitionDeviceNameComponent element) throws IOException {
43022    composeBackboneElementElements(element);
43023    if (element.hasNameElement()) {
43024      composeString("name", element.getNameElement());
43025    }
43026    if (element.hasTypeElement())
43027      composeEnumeration("type", element.getTypeElement(), new Enumerations.DeviceNameTypeEnumFactory());
43028  }
43029
43030  protected void composeDeviceDefinitionClassificationComponent(String name, DeviceDefinition.DeviceDefinitionClassificationComponent element) throws IOException {
43031    if (element != null) {
43032    composeElementAttributes(element);
43033      xml.enter(FHIR_NS, name);
43034      composeDeviceDefinitionClassificationComponentElements(element);
43035      composeElementClose(element);
43036      xml.exit(FHIR_NS, name);
43037    }
43038  }
43039
43040  protected void composeDeviceDefinitionClassificationComponentElements(DeviceDefinition.DeviceDefinitionClassificationComponent element) throws IOException {
43041    composeBackboneElementElements(element);
43042    if (element.hasType()) {
43043      composeCodeableConcept("type", element.getType());
43044    }
43045    if (element.hasJustification()) { 
43046      for (RelatedArtifact e : element.getJustification()) 
43047          composeRelatedArtifact("justification", e);
43048    }
43049  }
43050
43051  protected void composeDeviceDefinitionConformsToComponent(String name, DeviceDefinition.DeviceDefinitionConformsToComponent element) throws IOException {
43052    if (element != null) {
43053    composeElementAttributes(element);
43054      xml.enter(FHIR_NS, name);
43055      composeDeviceDefinitionConformsToComponentElements(element);
43056      composeElementClose(element);
43057      xml.exit(FHIR_NS, name);
43058    }
43059  }
43060
43061  protected void composeDeviceDefinitionConformsToComponentElements(DeviceDefinition.DeviceDefinitionConformsToComponent element) throws IOException {
43062    composeBackboneElementElements(element);
43063    if (element.hasCategory()) {
43064      composeCodeableConcept("category", element.getCategory());
43065    }
43066    if (element.hasSpecification()) {
43067      composeCodeableConcept("specification", element.getSpecification());
43068    }
43069    if (element.hasVersion()) { 
43070      for (StringType e : element.getVersion()) 
43071          composeString("version", e);
43072    }
43073    if (element.hasSource()) { 
43074      for (RelatedArtifact e : element.getSource()) 
43075          composeRelatedArtifact("source", e);
43076    }
43077  }
43078
43079  protected void composeDeviceDefinitionHasPartComponent(String name, DeviceDefinition.DeviceDefinitionHasPartComponent element) throws IOException {
43080    if (element != null) {
43081    composeElementAttributes(element);
43082      xml.enter(FHIR_NS, name);
43083      composeDeviceDefinitionHasPartComponentElements(element);
43084      composeElementClose(element);
43085      xml.exit(FHIR_NS, name);
43086    }
43087  }
43088
43089  protected void composeDeviceDefinitionHasPartComponentElements(DeviceDefinition.DeviceDefinitionHasPartComponent element) throws IOException {
43090    composeBackboneElementElements(element);
43091    if (element.hasReference()) {
43092      composeReference("reference", element.getReference());
43093    }
43094    if (element.hasCountElement()) {
43095      composeInteger("count", element.getCountElement());
43096    }
43097  }
43098
43099  protected void composeDeviceDefinitionPackagingComponent(String name, DeviceDefinition.DeviceDefinitionPackagingComponent element) throws IOException {
43100    if (element != null) {
43101    composeElementAttributes(element);
43102      xml.enter(FHIR_NS, name);
43103      composeDeviceDefinitionPackagingComponentElements(element);
43104      composeElementClose(element);
43105      xml.exit(FHIR_NS, name);
43106    }
43107  }
43108
43109  protected void composeDeviceDefinitionPackagingComponentElements(DeviceDefinition.DeviceDefinitionPackagingComponent element) throws IOException {
43110    composeBackboneElementElements(element);
43111    if (element.hasIdentifier()) {
43112      composeIdentifier("identifier", element.getIdentifier());
43113    }
43114    if (element.hasType()) {
43115      composeCodeableConcept("type", element.getType());
43116    }
43117    if (element.hasCountElement()) {
43118      composeInteger("count", element.getCountElement());
43119    }
43120    if (element.hasDistributor()) { 
43121      for (DeviceDefinition.PackagingDistributorComponent e : element.getDistributor()) 
43122          composeDeviceDefinitionPackagingDistributorComponent("distributor", e);
43123    }
43124    if (element.hasUdiDeviceIdentifier()) { 
43125      for (DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent e : element.getUdiDeviceIdentifier()) 
43126          composeDeviceDefinitionUdiDeviceIdentifierComponent("udiDeviceIdentifier", e);
43127    }
43128    if (element.hasPackaging()) { 
43129      for (DeviceDefinition.DeviceDefinitionPackagingComponent e : element.getPackaging()) 
43130          composeDeviceDefinitionPackagingComponent("packaging", e);
43131    }
43132  }
43133
43134  protected void composeDeviceDefinitionPackagingDistributorComponent(String name, DeviceDefinition.PackagingDistributorComponent element) throws IOException {
43135    if (element != null) {
43136    composeElementAttributes(element);
43137      xml.enter(FHIR_NS, name);
43138      composeDeviceDefinitionPackagingDistributorComponentElements(element);
43139      composeElementClose(element);
43140      xml.exit(FHIR_NS, name);
43141    }
43142  }
43143
43144  protected void composeDeviceDefinitionPackagingDistributorComponentElements(DeviceDefinition.PackagingDistributorComponent element) throws IOException {
43145    composeBackboneElementElements(element);
43146    if (element.hasNameElement()) {
43147      composeString("name", element.getNameElement());
43148    }
43149    if (element.hasOrganizationReference()) { 
43150      for (Reference e : element.getOrganizationReference()) 
43151          composeReference("organizationReference", e);
43152    }
43153  }
43154
43155  protected void composeDeviceDefinitionVersionComponent(String name, DeviceDefinition.DeviceDefinitionVersionComponent element) throws IOException {
43156    if (element != null) {
43157    composeElementAttributes(element);
43158      xml.enter(FHIR_NS, name);
43159      composeDeviceDefinitionVersionComponentElements(element);
43160      composeElementClose(element);
43161      xml.exit(FHIR_NS, name);
43162    }
43163  }
43164
43165  protected void composeDeviceDefinitionVersionComponentElements(DeviceDefinition.DeviceDefinitionVersionComponent element) throws IOException {
43166    composeBackboneElementElements(element);
43167    if (element.hasType()) {
43168      composeCodeableConcept("type", element.getType());
43169    }
43170    if (element.hasComponent()) {
43171      composeIdentifier("component", element.getComponent());
43172    }
43173    if (element.hasValueElement()) {
43174      composeString("value", element.getValueElement());
43175    }
43176  }
43177
43178  protected void composeDeviceDefinitionPropertyComponent(String name, DeviceDefinition.DeviceDefinitionPropertyComponent element) throws IOException {
43179    if (element != null) {
43180    composeElementAttributes(element);
43181      xml.enter(FHIR_NS, name);
43182      composeDeviceDefinitionPropertyComponentElements(element);
43183      composeElementClose(element);
43184      xml.exit(FHIR_NS, name);
43185    }
43186  }
43187
43188  protected void composeDeviceDefinitionPropertyComponentElements(DeviceDefinition.DeviceDefinitionPropertyComponent element) throws IOException {
43189    composeBackboneElementElements(element);
43190    if (element.hasType()) {
43191      composeCodeableConcept("type", element.getType());
43192    }
43193    if (element.hasValue()) {
43194      composeType("value", element.getValue());
43195    }  }
43196
43197  protected void composeDeviceDefinitionLinkComponent(String name, DeviceDefinition.DeviceDefinitionLinkComponent element) throws IOException {
43198    if (element != null) {
43199    composeElementAttributes(element);
43200      xml.enter(FHIR_NS, name);
43201      composeDeviceDefinitionLinkComponentElements(element);
43202      composeElementClose(element);
43203      xml.exit(FHIR_NS, name);
43204    }
43205  }
43206
43207  protected void composeDeviceDefinitionLinkComponentElements(DeviceDefinition.DeviceDefinitionLinkComponent element) throws IOException {
43208    composeBackboneElementElements(element);
43209    if (element.hasRelation()) {
43210      composeCoding("relation", element.getRelation());
43211    }
43212    if (element.hasRelatedDevice()) {
43213      composeCodeableReference("relatedDevice", element.getRelatedDevice());
43214    }
43215  }
43216
43217  protected void composeDeviceDefinitionMaterialComponent(String name, DeviceDefinition.DeviceDefinitionMaterialComponent element) throws IOException {
43218    if (element != null) {
43219    composeElementAttributes(element);
43220      xml.enter(FHIR_NS, name);
43221      composeDeviceDefinitionMaterialComponentElements(element);
43222      composeElementClose(element);
43223      xml.exit(FHIR_NS, name);
43224    }
43225  }
43226
43227  protected void composeDeviceDefinitionMaterialComponentElements(DeviceDefinition.DeviceDefinitionMaterialComponent element) throws IOException {
43228    composeBackboneElementElements(element);
43229    if (element.hasSubstance()) {
43230      composeCodeableConcept("substance", element.getSubstance());
43231    }
43232    if (element.hasAlternateElement()) {
43233      composeBoolean("alternate", element.getAlternateElement());
43234    }
43235    if (element.hasAllergenicIndicatorElement()) {
43236      composeBoolean("allergenicIndicator", element.getAllergenicIndicatorElement());
43237    }
43238  }
43239
43240  protected void composeDeviceDefinitionGuidelineComponent(String name, DeviceDefinition.DeviceDefinitionGuidelineComponent element) throws IOException {
43241    if (element != null) {
43242    composeElementAttributes(element);
43243      xml.enter(FHIR_NS, name);
43244      composeDeviceDefinitionGuidelineComponentElements(element);
43245      composeElementClose(element);
43246      xml.exit(FHIR_NS, name);
43247    }
43248  }
43249
43250  protected void composeDeviceDefinitionGuidelineComponentElements(DeviceDefinition.DeviceDefinitionGuidelineComponent element) throws IOException {
43251    composeBackboneElementElements(element);
43252    if (element.hasUseContext()) { 
43253      for (UsageContext e : element.getUseContext()) 
43254          composeUsageContext("useContext", e);
43255    }
43256    if (element.hasUsageInstructionElement()) {
43257      composeMarkdown("usageInstruction", element.getUsageInstructionElement());
43258    }
43259    if (element.hasRelatedArtifact()) { 
43260      for (RelatedArtifact e : element.getRelatedArtifact()) 
43261          composeRelatedArtifact("relatedArtifact", e);
43262    }
43263    if (element.hasIndication()) { 
43264      for (CodeableConcept e : element.getIndication()) 
43265          composeCodeableConcept("indication", e);
43266    }
43267    if (element.hasContraindication()) { 
43268      for (CodeableConcept e : element.getContraindication()) 
43269          composeCodeableConcept("contraindication", e);
43270    }
43271    if (element.hasWarning()) { 
43272      for (CodeableConcept e : element.getWarning()) 
43273          composeCodeableConcept("warning", e);
43274    }
43275    if (element.hasIntendedUseElement()) {
43276      composeString("intendedUse", element.getIntendedUseElement());
43277    }
43278  }
43279
43280  protected void composeDeviceDefinitionCorrectiveActionComponent(String name, DeviceDefinition.DeviceDefinitionCorrectiveActionComponent element) throws IOException {
43281    if (element != null) {
43282    composeElementAttributes(element);
43283      xml.enter(FHIR_NS, name);
43284      composeDeviceDefinitionCorrectiveActionComponentElements(element);
43285      composeElementClose(element);
43286      xml.exit(FHIR_NS, name);
43287    }
43288  }
43289
43290  protected void composeDeviceDefinitionCorrectiveActionComponentElements(DeviceDefinition.DeviceDefinitionCorrectiveActionComponent element) throws IOException {
43291    composeBackboneElementElements(element);
43292    if (element.hasRecallElement()) {
43293      composeBoolean("recall", element.getRecallElement());
43294    }
43295    if (element.hasScopeElement())
43296      composeEnumeration("scope", element.getScopeElement(), new DeviceDefinition.DeviceCorrectiveActionScopeEnumFactory());
43297    if (element.hasPeriod()) {
43298      composePeriod("period", element.getPeriod());
43299    }
43300  }
43301
43302  protected void composeDeviceDefinitionChargeItemComponent(String name, DeviceDefinition.DeviceDefinitionChargeItemComponent element) throws IOException {
43303    if (element != null) {
43304    composeElementAttributes(element);
43305      xml.enter(FHIR_NS, name);
43306      composeDeviceDefinitionChargeItemComponentElements(element);
43307      composeElementClose(element);
43308      xml.exit(FHIR_NS, name);
43309    }
43310  }
43311
43312  protected void composeDeviceDefinitionChargeItemComponentElements(DeviceDefinition.DeviceDefinitionChargeItemComponent element) throws IOException {
43313    composeBackboneElementElements(element);
43314    if (element.hasChargeItemCode()) {
43315      composeCodeableReference("chargeItemCode", element.getChargeItemCode());
43316    }
43317    if (element.hasCount()) {
43318      composeQuantity("count", element.getCount());
43319    }
43320    if (element.hasEffectivePeriod()) {
43321      composePeriod("effectivePeriod", element.getEffectivePeriod());
43322    }
43323    if (element.hasUseContext()) { 
43324      for (UsageContext e : element.getUseContext()) 
43325          composeUsageContext("useContext", e);
43326    }
43327  }
43328
43329  protected void composeDeviceDispense(String name, DeviceDispense element) throws IOException {
43330    if (element != null) {
43331    composeResourceAttributes(element);
43332      xml.enter(FHIR_NS, name);
43333      composeDeviceDispenseElements(element);
43334      composeElementClose(element);
43335      xml.exit(FHIR_NS, name);
43336    }
43337  }
43338
43339  protected void composeDeviceDispenseElements(DeviceDispense element) throws IOException {
43340    composeDomainResourceElements(element);
43341    if (element.hasIdentifier()) { 
43342      for (Identifier e : element.getIdentifier()) 
43343          composeIdentifier("identifier", e);
43344    }
43345    if (element.hasBasedOn()) { 
43346      for (Reference e : element.getBasedOn()) 
43347          composeReference("basedOn", e);
43348    }
43349    if (element.hasPartOf()) { 
43350      for (Reference e : element.getPartOf()) 
43351          composeReference("partOf", e);
43352    }
43353    if (element.hasStatusElement())
43354      composeEnumeration("status", element.getStatusElement(), new DeviceDispense.DeviceDispenseStatusCodesEnumFactory());
43355    if (element.hasStatusReason()) {
43356      composeCodeableReference("statusReason", element.getStatusReason());
43357    }
43358    if (element.hasCategory()) { 
43359      for (CodeableConcept e : element.getCategory()) 
43360          composeCodeableConcept("category", e);
43361    }
43362    if (element.hasDevice()) {
43363      composeCodeableReference("device", element.getDevice());
43364    }
43365    if (element.hasSubject()) {
43366      composeReference("subject", element.getSubject());
43367    }
43368    if (element.hasReceiver()) {
43369      composeReference("receiver", element.getReceiver());
43370    }
43371    if (element.hasEncounter()) {
43372      composeReference("encounter", element.getEncounter());
43373    }
43374    if (element.hasSupportingInformation()) { 
43375      for (Reference e : element.getSupportingInformation()) 
43376          composeReference("supportingInformation", e);
43377    }
43378    if (element.hasPerformer()) { 
43379      for (DeviceDispense.DeviceDispensePerformerComponent e : element.getPerformer()) 
43380          composeDeviceDispensePerformerComponent("performer", e);
43381    }
43382    if (element.hasLocation()) {
43383      composeReference("location", element.getLocation());
43384    }
43385    if (element.hasType()) {
43386      composeCodeableConcept("type", element.getType());
43387    }
43388    if (element.hasQuantity()) {
43389      composeQuantity("quantity", element.getQuantity());
43390    }
43391    if (element.hasPreparedDateElement()) {
43392      composeDateTime("preparedDate", element.getPreparedDateElement());
43393    }
43394    if (element.hasWhenHandedOverElement()) {
43395      composeDateTime("whenHandedOver", element.getWhenHandedOverElement());
43396    }
43397    if (element.hasDestination()) {
43398      composeReference("destination", element.getDestination());
43399    }
43400    if (element.hasNote()) { 
43401      for (Annotation e : element.getNote()) 
43402          composeAnnotation("note", e);
43403    }
43404    if (element.hasUsageInstructionElement()) {
43405      composeMarkdown("usageInstruction", element.getUsageInstructionElement());
43406    }
43407    if (element.hasEventHistory()) { 
43408      for (Reference e : element.getEventHistory()) 
43409          composeReference("eventHistory", e);
43410    }
43411  }
43412
43413  protected void composeDeviceDispensePerformerComponent(String name, DeviceDispense.DeviceDispensePerformerComponent element) throws IOException {
43414    if (element != null) {
43415    composeElementAttributes(element);
43416      xml.enter(FHIR_NS, name);
43417      composeDeviceDispensePerformerComponentElements(element);
43418      composeElementClose(element);
43419      xml.exit(FHIR_NS, name);
43420    }
43421  }
43422
43423  protected void composeDeviceDispensePerformerComponentElements(DeviceDispense.DeviceDispensePerformerComponent element) throws IOException {
43424    composeBackboneElementElements(element);
43425    if (element.hasFunction()) {
43426      composeCodeableConcept("function", element.getFunction());
43427    }
43428    if (element.hasActor()) {
43429      composeReference("actor", element.getActor());
43430    }
43431  }
43432
43433  protected void composeDeviceMetric(String name, DeviceMetric element) throws IOException {
43434    if (element != null) {
43435    composeResourceAttributes(element);
43436      xml.enter(FHIR_NS, name);
43437      composeDeviceMetricElements(element);
43438      composeElementClose(element);
43439      xml.exit(FHIR_NS, name);
43440    }
43441  }
43442
43443  protected void composeDeviceMetricElements(DeviceMetric element) throws IOException {
43444    composeDomainResourceElements(element);
43445    if (element.hasIdentifier()) { 
43446      for (Identifier e : element.getIdentifier()) 
43447          composeIdentifier("identifier", e);
43448    }
43449    if (element.hasType()) {
43450      composeCodeableConcept("type", element.getType());
43451    }
43452    if (element.hasUnit()) {
43453      composeCodeableConcept("unit", element.getUnit());
43454    }
43455    if (element.hasDevice()) {
43456      composeReference("device", element.getDevice());
43457    }
43458    if (element.hasOperationalStatusElement())
43459      composeEnumeration("operationalStatus", element.getOperationalStatusElement(), new DeviceMetric.DeviceMetricOperationalStatusEnumFactory());
43460    if (element.hasColorElement()) {
43461      composeCode("color", element.getColorElement());
43462    }
43463    if (element.hasCategoryElement())
43464      composeEnumeration("category", element.getCategoryElement(), new DeviceMetric.DeviceMetricCategoryEnumFactory());
43465    if (element.hasMeasurementFrequency()) {
43466      composeQuantity("measurementFrequency", element.getMeasurementFrequency());
43467    }
43468    if (element.hasCalibration()) { 
43469      for (DeviceMetric.DeviceMetricCalibrationComponent e : element.getCalibration()) 
43470          composeDeviceMetricCalibrationComponent("calibration", e);
43471    }
43472  }
43473
43474  protected void composeDeviceMetricCalibrationComponent(String name, DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
43475    if (element != null) {
43476    composeElementAttributes(element);
43477      xml.enter(FHIR_NS, name);
43478      composeDeviceMetricCalibrationComponentElements(element);
43479      composeElementClose(element);
43480      xml.exit(FHIR_NS, name);
43481    }
43482  }
43483
43484  protected void composeDeviceMetricCalibrationComponentElements(DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
43485    composeBackboneElementElements(element);
43486    if (element.hasTypeElement())
43487      composeEnumeration("type", element.getTypeElement(), new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory());
43488    if (element.hasStateElement())
43489      composeEnumeration("state", element.getStateElement(), new DeviceMetric.DeviceMetricCalibrationStateEnumFactory());
43490    if (element.hasTimeElement()) {
43491      composeInstant("time", element.getTimeElement());
43492    }
43493  }
43494
43495  protected void composeDeviceRequest(String name, DeviceRequest element) throws IOException {
43496    if (element != null) {
43497    composeResourceAttributes(element);
43498      xml.enter(FHIR_NS, name);
43499      composeDeviceRequestElements(element);
43500      composeElementClose(element);
43501      xml.exit(FHIR_NS, name);
43502    }
43503  }
43504
43505  protected void composeDeviceRequestElements(DeviceRequest element) throws IOException {
43506    composeDomainResourceElements(element);
43507    if (element.hasIdentifier()) { 
43508      for (Identifier e : element.getIdentifier()) 
43509          composeIdentifier("identifier", e);
43510    }
43511    if (element.hasInstantiatesCanonical()) { 
43512      for (CanonicalType e : element.getInstantiatesCanonical()) 
43513          composeCanonical("instantiatesCanonical", e);
43514    }
43515    if (element.hasInstantiatesUri()) { 
43516      for (UriType e : element.getInstantiatesUri()) 
43517          composeUri("instantiatesUri", e);
43518    }
43519    if (element.hasBasedOn()) { 
43520      for (Reference e : element.getBasedOn()) 
43521          composeReference("basedOn", e);
43522    }
43523    if (element.hasReplaces()) { 
43524      for (Reference e : element.getReplaces()) 
43525          composeReference("replaces", e);
43526    }
43527    if (element.hasGroupIdentifier()) {
43528      composeIdentifier("groupIdentifier", element.getGroupIdentifier());
43529    }
43530    if (element.hasStatusElement())
43531      composeEnumeration("status", element.getStatusElement(), new Enumerations.RequestStatusEnumFactory());
43532    if (element.hasIntentElement())
43533      composeEnumeration("intent", element.getIntentElement(), new Enumerations.RequestIntentEnumFactory());
43534    if (element.hasPriorityElement())
43535      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
43536    if (element.hasDoNotPerformElement()) {
43537      composeBoolean("doNotPerform", element.getDoNotPerformElement());
43538    }
43539    if (element.hasCode()) {
43540      composeCodeableReference("code", element.getCode());
43541    }
43542    if (element.hasQuantityElement()) {
43543      composeInteger("quantity", element.getQuantityElement());
43544    }
43545    if (element.hasParameter()) { 
43546      for (DeviceRequest.DeviceRequestParameterComponent e : element.getParameter()) 
43547          composeDeviceRequestParameterComponent("parameter", e);
43548    }
43549    if (element.hasSubject()) {
43550      composeReference("subject", element.getSubject());
43551    }
43552    if (element.hasEncounter()) {
43553      composeReference("encounter", element.getEncounter());
43554    }
43555    if (element.hasOccurrence()) {
43556      composeType("occurrence", element.getOccurrence());
43557    }    if (element.hasAuthoredOnElement()) {
43558      composeDateTime("authoredOn", element.getAuthoredOnElement());
43559    }
43560    if (element.hasRequester()) {
43561      composeReference("requester", element.getRequester());
43562    }
43563    if (element.hasPerformer()) {
43564      composeCodeableReference("performer", element.getPerformer());
43565    }
43566    if (element.hasReason()) { 
43567      for (CodeableReference e : element.getReason()) 
43568          composeCodeableReference("reason", e);
43569    }
43570    if (element.hasAsNeededElement()) {
43571      composeBoolean("asNeeded", element.getAsNeededElement());
43572    }
43573    if (element.hasAsNeededFor()) {
43574      composeCodeableConcept("asNeededFor", element.getAsNeededFor());
43575    }
43576    if (element.hasInsurance()) { 
43577      for (Reference e : element.getInsurance()) 
43578          composeReference("insurance", e);
43579    }
43580    if (element.hasSupportingInfo()) { 
43581      for (Reference e : element.getSupportingInfo()) 
43582          composeReference("supportingInfo", e);
43583    }
43584    if (element.hasNote()) { 
43585      for (Annotation e : element.getNote()) 
43586          composeAnnotation("note", e);
43587    }
43588    if (element.hasRelevantHistory()) { 
43589      for (Reference e : element.getRelevantHistory()) 
43590          composeReference("relevantHistory", e);
43591    }
43592  }
43593
43594  protected void composeDeviceRequestParameterComponent(String name, DeviceRequest.DeviceRequestParameterComponent element) throws IOException {
43595    if (element != null) {
43596    composeElementAttributes(element);
43597      xml.enter(FHIR_NS, name);
43598      composeDeviceRequestParameterComponentElements(element);
43599      composeElementClose(element);
43600      xml.exit(FHIR_NS, name);
43601    }
43602  }
43603
43604  protected void composeDeviceRequestParameterComponentElements(DeviceRequest.DeviceRequestParameterComponent element) throws IOException {
43605    composeBackboneElementElements(element);
43606    if (element.hasCode()) {
43607      composeCodeableConcept("code", element.getCode());
43608    }
43609    if (element.hasValue()) {
43610      composeType("value", element.getValue());
43611    }  }
43612
43613  protected void composeDeviceUsage(String name, DeviceUsage element) throws IOException {
43614    if (element != null) {
43615    composeResourceAttributes(element);
43616      xml.enter(FHIR_NS, name);
43617      composeDeviceUsageElements(element);
43618      composeElementClose(element);
43619      xml.exit(FHIR_NS, name);
43620    }
43621  }
43622
43623  protected void composeDeviceUsageElements(DeviceUsage element) throws IOException {
43624    composeDomainResourceElements(element);
43625    if (element.hasIdentifier()) { 
43626      for (Identifier e : element.getIdentifier()) 
43627          composeIdentifier("identifier", e);
43628    }
43629    if (element.hasBasedOn()) { 
43630      for (Reference e : element.getBasedOn()) 
43631          composeReference("basedOn", e);
43632    }
43633    if (element.hasStatusElement())
43634      composeEnumeration("status", element.getStatusElement(), new DeviceUsage.DeviceUsageStatusEnumFactory());
43635    if (element.hasCategory()) { 
43636      for (CodeableConcept e : element.getCategory()) 
43637          composeCodeableConcept("category", e);
43638    }
43639    if (element.hasPatient()) {
43640      composeReference("patient", element.getPatient());
43641    }
43642    if (element.hasDerivedFrom()) { 
43643      for (Reference e : element.getDerivedFrom()) 
43644          composeReference("derivedFrom", e);
43645    }
43646    if (element.hasContext()) {
43647      composeReference("context", element.getContext());
43648    }
43649    if (element.hasTiming()) {
43650      composeType("timing", element.getTiming());
43651    }    if (element.hasDateAssertedElement()) {
43652      composeDateTime("dateAsserted", element.getDateAssertedElement());
43653    }
43654    if (element.hasUsageStatus()) {
43655      composeCodeableConcept("usageStatus", element.getUsageStatus());
43656    }
43657    if (element.hasUsageReason()) { 
43658      for (CodeableConcept e : element.getUsageReason()) 
43659          composeCodeableConcept("usageReason", e);
43660    }
43661    if (element.hasAdherence()) {
43662      composeDeviceUsageAdherenceComponent("adherence", element.getAdherence());
43663    }
43664    if (element.hasInformationSource()) {
43665      composeReference("informationSource", element.getInformationSource());
43666    }
43667    if (element.hasDevice()) {
43668      composeCodeableReference("device", element.getDevice());
43669    }
43670    if (element.hasReason()) { 
43671      for (CodeableReference e : element.getReason()) 
43672          composeCodeableReference("reason", e);
43673    }
43674    if (element.hasBodySite()) {
43675      composeCodeableReference("bodySite", element.getBodySite());
43676    }
43677    if (element.hasNote()) { 
43678      for (Annotation e : element.getNote()) 
43679          composeAnnotation("note", e);
43680    }
43681  }
43682
43683  protected void composeDeviceUsageAdherenceComponent(String name, DeviceUsage.DeviceUsageAdherenceComponent element) throws IOException {
43684    if (element != null) {
43685    composeElementAttributes(element);
43686      xml.enter(FHIR_NS, name);
43687      composeDeviceUsageAdherenceComponentElements(element);
43688      composeElementClose(element);
43689      xml.exit(FHIR_NS, name);
43690    }
43691  }
43692
43693  protected void composeDeviceUsageAdherenceComponentElements(DeviceUsage.DeviceUsageAdherenceComponent element) throws IOException {
43694    composeBackboneElementElements(element);
43695    if (element.hasCode()) {
43696      composeCodeableConcept("code", element.getCode());
43697    }
43698    if (element.hasReason()) { 
43699      for (CodeableConcept e : element.getReason()) 
43700          composeCodeableConcept("reason", e);
43701    }
43702  }
43703
43704  protected void composeDiagnosticReport(String name, DiagnosticReport element) throws IOException {
43705    if (element != null) {
43706    composeResourceAttributes(element);
43707      xml.enter(FHIR_NS, name);
43708      composeDiagnosticReportElements(element);
43709      composeElementClose(element);
43710      xml.exit(FHIR_NS, name);
43711    }
43712  }
43713
43714  protected void composeDiagnosticReportElements(DiagnosticReport element) throws IOException {
43715    composeDomainResourceElements(element);
43716    if (element.hasIdentifier()) { 
43717      for (Identifier e : element.getIdentifier()) 
43718          composeIdentifier("identifier", e);
43719    }
43720    if (element.hasBasedOn()) { 
43721      for (Reference e : element.getBasedOn()) 
43722          composeReference("basedOn", e);
43723    }
43724    if (element.hasStatusElement())
43725      composeEnumeration("status", element.getStatusElement(), new DiagnosticReport.DiagnosticReportStatusEnumFactory());
43726    if (element.hasCategory()) { 
43727      for (CodeableConcept e : element.getCategory()) 
43728          composeCodeableConcept("category", e);
43729    }
43730    if (element.hasCode()) {
43731      composeCodeableConcept("code", element.getCode());
43732    }
43733    if (element.hasSubject()) {
43734      composeReference("subject", element.getSubject());
43735    }
43736    if (element.hasEncounter()) {
43737      composeReference("encounter", element.getEncounter());
43738    }
43739    if (element.hasEffective()) {
43740      composeType("effective", element.getEffective());
43741    }    if (element.hasIssuedElement()) {
43742      composeInstant("issued", element.getIssuedElement());
43743    }
43744    if (element.hasPerformer()) { 
43745      for (Reference e : element.getPerformer()) 
43746          composeReference("performer", e);
43747    }
43748    if (element.hasResultsInterpreter()) { 
43749      for (Reference e : element.getResultsInterpreter()) 
43750          composeReference("resultsInterpreter", e);
43751    }
43752    if (element.hasSpecimen()) { 
43753      for (Reference e : element.getSpecimen()) 
43754          composeReference("specimen", e);
43755    }
43756    if (element.hasResult()) { 
43757      for (Reference e : element.getResult()) 
43758          composeReference("result", e);
43759    }
43760    if (element.hasNote()) { 
43761      for (Annotation e : element.getNote()) 
43762          composeAnnotation("note", e);
43763    }
43764    if (element.hasStudy()) { 
43765      for (Reference e : element.getStudy()) 
43766          composeReference("study", e);
43767    }
43768    if (element.hasSupportingInfo()) { 
43769      for (DiagnosticReport.DiagnosticReportSupportingInfoComponent e : element.getSupportingInfo()) 
43770          composeDiagnosticReportSupportingInfoComponent("supportingInfo", e);
43771    }
43772    if (element.hasMedia()) { 
43773      for (DiagnosticReport.DiagnosticReportMediaComponent e : element.getMedia()) 
43774          composeDiagnosticReportMediaComponent("media", e);
43775    }
43776    if (element.hasComposition()) {
43777      composeReference("composition", element.getComposition());
43778    }
43779    if (element.hasConclusionElement()) {
43780      composeMarkdown("conclusion", element.getConclusionElement());
43781    }
43782    if (element.hasConclusionCode()) { 
43783      for (CodeableConcept e : element.getConclusionCode()) 
43784          composeCodeableConcept("conclusionCode", e);
43785    }
43786    if (element.hasPresentedForm()) { 
43787      for (Attachment e : element.getPresentedForm()) 
43788          composeAttachment("presentedForm", e);
43789    }
43790  }
43791
43792  protected void composeDiagnosticReportSupportingInfoComponent(String name, DiagnosticReport.DiagnosticReportSupportingInfoComponent element) throws IOException {
43793    if (element != null) {
43794    composeElementAttributes(element);
43795      xml.enter(FHIR_NS, name);
43796      composeDiagnosticReportSupportingInfoComponentElements(element);
43797      composeElementClose(element);
43798      xml.exit(FHIR_NS, name);
43799    }
43800  }
43801
43802  protected void composeDiagnosticReportSupportingInfoComponentElements(DiagnosticReport.DiagnosticReportSupportingInfoComponent element) throws IOException {
43803    composeBackboneElementElements(element);
43804    if (element.hasType()) {
43805      composeCodeableConcept("type", element.getType());
43806    }
43807    if (element.hasReference()) {
43808      composeReference("reference", element.getReference());
43809    }
43810  }
43811
43812  protected void composeDiagnosticReportMediaComponent(String name, DiagnosticReport.DiagnosticReportMediaComponent element) throws IOException {
43813    if (element != null) {
43814    composeElementAttributes(element);
43815      xml.enter(FHIR_NS, name);
43816      composeDiagnosticReportMediaComponentElements(element);
43817      composeElementClose(element);
43818      xml.exit(FHIR_NS, name);
43819    }
43820  }
43821
43822  protected void composeDiagnosticReportMediaComponentElements(DiagnosticReport.DiagnosticReportMediaComponent element) throws IOException {
43823    composeBackboneElementElements(element);
43824    if (element.hasCommentElement()) {
43825      composeString("comment", element.getCommentElement());
43826    }
43827    if (element.hasLink()) {
43828      composeReference("link", element.getLink());
43829    }
43830  }
43831
43832  protected void composeDocumentReference(String name, DocumentReference element) throws IOException {
43833    if (element != null) {
43834    composeResourceAttributes(element);
43835      xml.enter(FHIR_NS, name);
43836      composeDocumentReferenceElements(element);
43837      composeElementClose(element);
43838      xml.exit(FHIR_NS, name);
43839    }
43840  }
43841
43842  protected void composeDocumentReferenceElements(DocumentReference element) throws IOException {
43843    composeDomainResourceElements(element);
43844    if (element.hasIdentifier()) { 
43845      for (Identifier e : element.getIdentifier()) 
43846          composeIdentifier("identifier", e);
43847    }
43848    if (element.hasVersionElement()) {
43849      composeString("version", element.getVersionElement());
43850    }
43851    if (element.hasBasedOn()) { 
43852      for (Reference e : element.getBasedOn()) 
43853          composeReference("basedOn", e);
43854    }
43855    if (element.hasStatusElement())
43856      composeEnumeration("status", element.getStatusElement(), new DocumentReference.DocumentReferenceStatusEnumFactory());
43857    if (element.hasDocStatusElement())
43858      composeEnumeration("docStatus", element.getDocStatusElement(), new Enumerations.CompositionStatusEnumFactory());
43859    if (element.hasModality()) { 
43860      for (CodeableConcept e : element.getModality()) 
43861          composeCodeableConcept("modality", e);
43862    }
43863    if (element.hasType()) {
43864      composeCodeableConcept("type", element.getType());
43865    }
43866    if (element.hasCategory()) { 
43867      for (CodeableConcept e : element.getCategory()) 
43868          composeCodeableConcept("category", e);
43869    }
43870    if (element.hasSubject()) {
43871      composeReference("subject", element.getSubject());
43872    }
43873    if (element.hasContext()) { 
43874      for (Reference e : element.getContext()) 
43875          composeReference("context", e);
43876    }
43877    if (element.hasEvent()) { 
43878      for (CodeableReference e : element.getEvent()) 
43879          composeCodeableReference("event", e);
43880    }
43881    if (element.hasBodySite()) { 
43882      for (CodeableReference e : element.getBodySite()) 
43883          composeCodeableReference("bodySite", e);
43884    }
43885    if (element.hasFacilityType()) {
43886      composeCodeableConcept("facilityType", element.getFacilityType());
43887    }
43888    if (element.hasPracticeSetting()) {
43889      composeCodeableConcept("practiceSetting", element.getPracticeSetting());
43890    }
43891    if (element.hasPeriod()) {
43892      composePeriod("period", element.getPeriod());
43893    }
43894    if (element.hasDateElement()) {
43895      composeInstant("date", element.getDateElement());
43896    }
43897    if (element.hasAuthor()) { 
43898      for (Reference e : element.getAuthor()) 
43899          composeReference("author", e);
43900    }
43901    if (element.hasAttester()) { 
43902      for (DocumentReference.DocumentReferenceAttesterComponent e : element.getAttester()) 
43903          composeDocumentReferenceAttesterComponent("attester", e);
43904    }
43905    if (element.hasCustodian()) {
43906      composeReference("custodian", element.getCustodian());
43907    }
43908    if (element.hasRelatesTo()) { 
43909      for (DocumentReference.DocumentReferenceRelatesToComponent e : element.getRelatesTo()) 
43910          composeDocumentReferenceRelatesToComponent("relatesTo", e);
43911    }
43912    if (element.hasDescriptionElement()) {
43913      composeMarkdown("description", element.getDescriptionElement());
43914    }
43915    if (element.hasSecurityLabel()) { 
43916      for (CodeableConcept e : element.getSecurityLabel()) 
43917          composeCodeableConcept("securityLabel", e);
43918    }
43919    if (element.hasContent()) { 
43920      for (DocumentReference.DocumentReferenceContentComponent e : element.getContent()) 
43921          composeDocumentReferenceContentComponent("content", e);
43922    }
43923  }
43924
43925  protected void composeDocumentReferenceAttesterComponent(String name, DocumentReference.DocumentReferenceAttesterComponent element) throws IOException {
43926    if (element != null) {
43927    composeElementAttributes(element);
43928      xml.enter(FHIR_NS, name);
43929      composeDocumentReferenceAttesterComponentElements(element);
43930      composeElementClose(element);
43931      xml.exit(FHIR_NS, name);
43932    }
43933  }
43934
43935  protected void composeDocumentReferenceAttesterComponentElements(DocumentReference.DocumentReferenceAttesterComponent element) throws IOException {
43936    composeBackboneElementElements(element);
43937    if (element.hasMode()) {
43938      composeCodeableConcept("mode", element.getMode());
43939    }
43940    if (element.hasTimeElement()) {
43941      composeDateTime("time", element.getTimeElement());
43942    }
43943    if (element.hasParty()) {
43944      composeReference("party", element.getParty());
43945    }
43946  }
43947
43948  protected void composeDocumentReferenceRelatesToComponent(String name, DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
43949    if (element != null) {
43950    composeElementAttributes(element);
43951      xml.enter(FHIR_NS, name);
43952      composeDocumentReferenceRelatesToComponentElements(element);
43953      composeElementClose(element);
43954      xml.exit(FHIR_NS, name);
43955    }
43956  }
43957
43958  protected void composeDocumentReferenceRelatesToComponentElements(DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
43959    composeBackboneElementElements(element);
43960    if (element.hasCode()) {
43961      composeCodeableConcept("code", element.getCode());
43962    }
43963    if (element.hasTarget()) {
43964      composeReference("target", element.getTarget());
43965    }
43966  }
43967
43968  protected void composeDocumentReferenceContentComponent(String name, DocumentReference.DocumentReferenceContentComponent element) throws IOException {
43969    if (element != null) {
43970    composeElementAttributes(element);
43971      xml.enter(FHIR_NS, name);
43972      composeDocumentReferenceContentComponentElements(element);
43973      composeElementClose(element);
43974      xml.exit(FHIR_NS, name);
43975    }
43976  }
43977
43978  protected void composeDocumentReferenceContentComponentElements(DocumentReference.DocumentReferenceContentComponent element) throws IOException {
43979    composeBackboneElementElements(element);
43980    if (element.hasAttachment()) {
43981      composeAttachment("attachment", element.getAttachment());
43982    }
43983    if (element.hasProfile()) { 
43984      for (DocumentReference.DocumentReferenceContentProfileComponent e : element.getProfile()) 
43985          composeDocumentReferenceContentProfileComponent("profile", e);
43986    }
43987  }
43988
43989  protected void composeDocumentReferenceContentProfileComponent(String name, DocumentReference.DocumentReferenceContentProfileComponent element) throws IOException {
43990    if (element != null) {
43991    composeElementAttributes(element);
43992      xml.enter(FHIR_NS, name);
43993      composeDocumentReferenceContentProfileComponentElements(element);
43994      composeElementClose(element);
43995      xml.exit(FHIR_NS, name);
43996    }
43997  }
43998
43999  protected void composeDocumentReferenceContentProfileComponentElements(DocumentReference.DocumentReferenceContentProfileComponent element) throws IOException {
44000    composeBackboneElementElements(element);
44001    if (element.hasValue()) {
44002      composeType("value", element.getValue());
44003    }  }
44004
44005  protected void composeEncounter(String name, Encounter element) throws IOException {
44006    if (element != null) {
44007    composeResourceAttributes(element);
44008      xml.enter(FHIR_NS, name);
44009      composeEncounterElements(element);
44010      composeElementClose(element);
44011      xml.exit(FHIR_NS, name);
44012    }
44013  }
44014
44015  protected void composeEncounterElements(Encounter element) throws IOException {
44016    composeDomainResourceElements(element);
44017    if (element.hasIdentifier()) { 
44018      for (Identifier e : element.getIdentifier()) 
44019          composeIdentifier("identifier", e);
44020    }
44021    if (element.hasStatusElement())
44022      composeEnumeration("status", element.getStatusElement(), new Enumerations.EncounterStatusEnumFactory());
44023    if (element.hasClass_()) { 
44024      for (CodeableConcept e : element.getClass_()) 
44025          composeCodeableConcept("class", e);
44026    }
44027    if (element.hasPriority()) {
44028      composeCodeableConcept("priority", element.getPriority());
44029    }
44030    if (element.hasType()) { 
44031      for (CodeableConcept e : element.getType()) 
44032          composeCodeableConcept("type", e);
44033    }
44034    if (element.hasServiceType()) { 
44035      for (CodeableReference e : element.getServiceType()) 
44036          composeCodeableReference("serviceType", e);
44037    }
44038    if (element.hasSubject()) {
44039      composeReference("subject", element.getSubject());
44040    }
44041    if (element.hasSubjectStatus()) {
44042      composeCodeableConcept("subjectStatus", element.getSubjectStatus());
44043    }
44044    if (element.hasEpisodeOfCare()) { 
44045      for (Reference e : element.getEpisodeOfCare()) 
44046          composeReference("episodeOfCare", e);
44047    }
44048    if (element.hasBasedOn()) { 
44049      for (Reference e : element.getBasedOn()) 
44050          composeReference("basedOn", e);
44051    }
44052    if (element.hasCareTeam()) { 
44053      for (Reference e : element.getCareTeam()) 
44054          composeReference("careTeam", e);
44055    }
44056    if (element.hasPartOf()) {
44057      composeReference("partOf", element.getPartOf());
44058    }
44059    if (element.hasServiceProvider()) {
44060      composeReference("serviceProvider", element.getServiceProvider());
44061    }
44062    if (element.hasParticipant()) { 
44063      for (Encounter.EncounterParticipantComponent e : element.getParticipant()) 
44064          composeEncounterParticipantComponent("participant", e);
44065    }
44066    if (element.hasAppointment()) { 
44067      for (Reference e : element.getAppointment()) 
44068          composeReference("appointment", e);
44069    }
44070    if (element.hasVirtualService()) { 
44071      for (VirtualServiceDetail e : element.getVirtualService()) 
44072          composeVirtualServiceDetail("virtualService", e);
44073    }
44074    if (element.hasActualPeriod()) {
44075      composePeriod("actualPeriod", element.getActualPeriod());
44076    }
44077    if (element.hasPlannedStartDateElement()) {
44078      composeDateTime("plannedStartDate", element.getPlannedStartDateElement());
44079    }
44080    if (element.hasPlannedEndDateElement()) {
44081      composeDateTime("plannedEndDate", element.getPlannedEndDateElement());
44082    }
44083    if (element.hasLength()) {
44084      composeDuration("length", element.getLength());
44085    }
44086    if (element.hasReason()) { 
44087      for (Encounter.ReasonComponent e : element.getReason()) 
44088          composeEncounterReasonComponent("reason", e);
44089    }
44090    if (element.hasDiagnosis()) { 
44091      for (Encounter.DiagnosisComponent e : element.getDiagnosis()) 
44092          composeEncounterDiagnosisComponent("diagnosis", e);
44093    }
44094    if (element.hasAccount()) { 
44095      for (Reference e : element.getAccount()) 
44096          composeReference("account", e);
44097    }
44098    if (element.hasDietPreference()) { 
44099      for (CodeableConcept e : element.getDietPreference()) 
44100          composeCodeableConcept("dietPreference", e);
44101    }
44102    if (element.hasSpecialArrangement()) { 
44103      for (CodeableConcept e : element.getSpecialArrangement()) 
44104          composeCodeableConcept("specialArrangement", e);
44105    }
44106    if (element.hasSpecialCourtesy()) { 
44107      for (CodeableConcept e : element.getSpecialCourtesy()) 
44108          composeCodeableConcept("specialCourtesy", e);
44109    }
44110    if (element.hasAdmission()) {
44111      composeEncounterAdmissionComponent("admission", element.getAdmission());
44112    }
44113    if (element.hasLocation()) { 
44114      for (Encounter.EncounterLocationComponent e : element.getLocation()) 
44115          composeEncounterLocationComponent("location", e);
44116    }
44117  }
44118
44119  protected void composeEncounterParticipantComponent(String name, Encounter.EncounterParticipantComponent element) throws IOException {
44120    if (element != null) {
44121    composeElementAttributes(element);
44122      xml.enter(FHIR_NS, name);
44123      composeEncounterParticipantComponentElements(element);
44124      composeElementClose(element);
44125      xml.exit(FHIR_NS, name);
44126    }
44127  }
44128
44129  protected void composeEncounterParticipantComponentElements(Encounter.EncounterParticipantComponent element) throws IOException {
44130    composeBackboneElementElements(element);
44131    if (element.hasType()) { 
44132      for (CodeableConcept e : element.getType()) 
44133          composeCodeableConcept("type", e);
44134    }
44135    if (element.hasPeriod()) {
44136      composePeriod("period", element.getPeriod());
44137    }
44138    if (element.hasActor()) {
44139      composeReference("actor", element.getActor());
44140    }
44141  }
44142
44143  protected void composeEncounterReasonComponent(String name, Encounter.ReasonComponent element) throws IOException {
44144    if (element != null) {
44145    composeElementAttributes(element);
44146      xml.enter(FHIR_NS, name);
44147      composeEncounterReasonComponentElements(element);
44148      composeElementClose(element);
44149      xml.exit(FHIR_NS, name);
44150    }
44151  }
44152
44153  protected void composeEncounterReasonComponentElements(Encounter.ReasonComponent element) throws IOException {
44154    composeBackboneElementElements(element);
44155    if (element.hasUse()) { 
44156      for (CodeableConcept e : element.getUse()) 
44157          composeCodeableConcept("use", e);
44158    }
44159    if (element.hasValue()) { 
44160      for (CodeableReference e : element.getValue()) 
44161          composeCodeableReference("value", e);
44162    }
44163  }
44164
44165  protected void composeEncounterDiagnosisComponent(String name, Encounter.DiagnosisComponent element) throws IOException {
44166    if (element != null) {
44167    composeElementAttributes(element);
44168      xml.enter(FHIR_NS, name);
44169      composeEncounterDiagnosisComponentElements(element);
44170      composeElementClose(element);
44171      xml.exit(FHIR_NS, name);
44172    }
44173  }
44174
44175  protected void composeEncounterDiagnosisComponentElements(Encounter.DiagnosisComponent element) throws IOException {
44176    composeBackboneElementElements(element);
44177    if (element.hasCondition()) { 
44178      for (CodeableReference e : element.getCondition()) 
44179          composeCodeableReference("condition", e);
44180    }
44181    if (element.hasUse()) { 
44182      for (CodeableConcept e : element.getUse()) 
44183          composeCodeableConcept("use", e);
44184    }
44185  }
44186
44187  protected void composeEncounterAdmissionComponent(String name, Encounter.EncounterAdmissionComponent element) throws IOException {
44188    if (element != null) {
44189    composeElementAttributes(element);
44190      xml.enter(FHIR_NS, name);
44191      composeEncounterAdmissionComponentElements(element);
44192      composeElementClose(element);
44193      xml.exit(FHIR_NS, name);
44194    }
44195  }
44196
44197  protected void composeEncounterAdmissionComponentElements(Encounter.EncounterAdmissionComponent element) throws IOException {
44198    composeBackboneElementElements(element);
44199    if (element.hasPreAdmissionIdentifier()) {
44200      composeIdentifier("preAdmissionIdentifier", element.getPreAdmissionIdentifier());
44201    }
44202    if (element.hasOrigin()) {
44203      composeReference("origin", element.getOrigin());
44204    }
44205    if (element.hasAdmitSource()) {
44206      composeCodeableConcept("admitSource", element.getAdmitSource());
44207    }
44208    if (element.hasReAdmission()) {
44209      composeCodeableConcept("reAdmission", element.getReAdmission());
44210    }
44211    if (element.hasDestination()) {
44212      composeReference("destination", element.getDestination());
44213    }
44214    if (element.hasDischargeDisposition()) {
44215      composeCodeableConcept("dischargeDisposition", element.getDischargeDisposition());
44216    }
44217  }
44218
44219  protected void composeEncounterLocationComponent(String name, Encounter.EncounterLocationComponent element) throws IOException {
44220    if (element != null) {
44221    composeElementAttributes(element);
44222      xml.enter(FHIR_NS, name);
44223      composeEncounterLocationComponentElements(element);
44224      composeElementClose(element);
44225      xml.exit(FHIR_NS, name);
44226    }
44227  }
44228
44229  protected void composeEncounterLocationComponentElements(Encounter.EncounterLocationComponent element) throws IOException {
44230    composeBackboneElementElements(element);
44231    if (element.hasLocation()) {
44232      composeReference("location", element.getLocation());
44233    }
44234    if (element.hasStatusElement())
44235      composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterLocationStatusEnumFactory());
44236    if (element.hasForm()) {
44237      composeCodeableConcept("form", element.getForm());
44238    }
44239    if (element.hasPeriod()) {
44240      composePeriod("period", element.getPeriod());
44241    }
44242  }
44243
44244  protected void composeEncounterHistory(String name, EncounterHistory element) throws IOException {
44245    if (element != null) {
44246    composeResourceAttributes(element);
44247      xml.enter(FHIR_NS, name);
44248      composeEncounterHistoryElements(element);
44249      composeElementClose(element);
44250      xml.exit(FHIR_NS, name);
44251    }
44252  }
44253
44254  protected void composeEncounterHistoryElements(EncounterHistory element) throws IOException {
44255    composeDomainResourceElements(element);
44256    if (element.hasEncounter()) {
44257      composeReference("encounter", element.getEncounter());
44258    }
44259    if (element.hasIdentifier()) { 
44260      for (Identifier e : element.getIdentifier()) 
44261          composeIdentifier("identifier", e);
44262    }
44263    if (element.hasStatusElement())
44264      composeEnumeration("status", element.getStatusElement(), new Enumerations.EncounterStatusEnumFactory());
44265    if (element.hasClass_()) {
44266      composeCodeableConcept("class", element.getClass_());
44267    }
44268    if (element.hasType()) { 
44269      for (CodeableConcept e : element.getType()) 
44270          composeCodeableConcept("type", e);
44271    }
44272    if (element.hasServiceType()) { 
44273      for (CodeableReference e : element.getServiceType()) 
44274          composeCodeableReference("serviceType", e);
44275    }
44276    if (element.hasSubject()) {
44277      composeReference("subject", element.getSubject());
44278    }
44279    if (element.hasSubjectStatus()) {
44280      composeCodeableConcept("subjectStatus", element.getSubjectStatus());
44281    }
44282    if (element.hasActualPeriod()) {
44283      composePeriod("actualPeriod", element.getActualPeriod());
44284    }
44285    if (element.hasPlannedStartDateElement()) {
44286      composeDateTime("plannedStartDate", element.getPlannedStartDateElement());
44287    }
44288    if (element.hasPlannedEndDateElement()) {
44289      composeDateTime("plannedEndDate", element.getPlannedEndDateElement());
44290    }
44291    if (element.hasLength()) {
44292      composeDuration("length", element.getLength());
44293    }
44294    if (element.hasLocation()) { 
44295      for (EncounterHistory.EncounterHistoryLocationComponent e : element.getLocation()) 
44296          composeEncounterHistoryLocationComponent("location", e);
44297    }
44298  }
44299
44300  protected void composeEncounterHistoryLocationComponent(String name, EncounterHistory.EncounterHistoryLocationComponent element) throws IOException {
44301    if (element != null) {
44302    composeElementAttributes(element);
44303      xml.enter(FHIR_NS, name);
44304      composeEncounterHistoryLocationComponentElements(element);
44305      composeElementClose(element);
44306      xml.exit(FHIR_NS, name);
44307    }
44308  }
44309
44310  protected void composeEncounterHistoryLocationComponentElements(EncounterHistory.EncounterHistoryLocationComponent element) throws IOException {
44311    composeBackboneElementElements(element);
44312    if (element.hasLocation()) {
44313      composeReference("location", element.getLocation());
44314    }
44315    if (element.hasForm()) {
44316      composeCodeableConcept("form", element.getForm());
44317    }
44318  }
44319
44320  protected void composeEndpoint(String name, Endpoint element) throws IOException {
44321    if (element != null) {
44322    composeResourceAttributes(element);
44323      xml.enter(FHIR_NS, name);
44324      composeEndpointElements(element);
44325      composeElementClose(element);
44326      xml.exit(FHIR_NS, name);
44327    }
44328  }
44329
44330  protected void composeEndpointElements(Endpoint element) throws IOException {
44331    composeDomainResourceElements(element);
44332    if (element.hasIdentifier()) { 
44333      for (Identifier e : element.getIdentifier()) 
44334          composeIdentifier("identifier", e);
44335    }
44336    if (element.hasStatusElement())
44337      composeEnumeration("status", element.getStatusElement(), new Endpoint.EndpointStatusEnumFactory());
44338    if (element.hasConnectionType()) { 
44339      for (CodeableConcept e : element.getConnectionType()) 
44340          composeCodeableConcept("connectionType", e);
44341    }
44342    if (element.hasNameElement()) {
44343      composeString("name", element.getNameElement());
44344    }
44345    if (element.hasDescriptionElement()) {
44346      composeString("description", element.getDescriptionElement());
44347    }
44348    if (element.hasEnvironmentType()) { 
44349      for (CodeableConcept e : element.getEnvironmentType()) 
44350          composeCodeableConcept("environmentType", e);
44351    }
44352    if (element.hasManagingOrganization()) {
44353      composeReference("managingOrganization", element.getManagingOrganization());
44354    }
44355    if (element.hasContact()) { 
44356      for (ContactPoint e : element.getContact()) 
44357          composeContactPoint("contact", e);
44358    }
44359    if (element.hasPeriod()) {
44360      composePeriod("period", element.getPeriod());
44361    }
44362    if (element.hasPayload()) { 
44363      for (Endpoint.EndpointPayloadComponent e : element.getPayload()) 
44364          composeEndpointPayloadComponent("payload", e);
44365    }
44366    if (element.hasAddressElement()) {
44367      composeUrl("address", element.getAddressElement());
44368    }
44369    if (element.hasHeader()) { 
44370      for (StringType e : element.getHeader()) 
44371          composeString("header", e);
44372    }
44373  }
44374
44375  protected void composeEndpointPayloadComponent(String name, Endpoint.EndpointPayloadComponent element) throws IOException {
44376    if (element != null) {
44377    composeElementAttributes(element);
44378      xml.enter(FHIR_NS, name);
44379      composeEndpointPayloadComponentElements(element);
44380      composeElementClose(element);
44381      xml.exit(FHIR_NS, name);
44382    }
44383  }
44384
44385  protected void composeEndpointPayloadComponentElements(Endpoint.EndpointPayloadComponent element) throws IOException {
44386    composeBackboneElementElements(element);
44387    if (element.hasType()) { 
44388      for (CodeableConcept e : element.getType()) 
44389          composeCodeableConcept("type", e);
44390    }
44391    if (element.hasMimeType()) { 
44392      for (CodeType e : element.getMimeType()) 
44393          composeCode("mimeType", e);
44394    }
44395  }
44396
44397  protected void composeEnrollmentRequest(String name, EnrollmentRequest element) throws IOException {
44398    if (element != null) {
44399    composeResourceAttributes(element);
44400      xml.enter(FHIR_NS, name);
44401      composeEnrollmentRequestElements(element);
44402      composeElementClose(element);
44403      xml.exit(FHIR_NS, name);
44404    }
44405  }
44406
44407  protected void composeEnrollmentRequestElements(EnrollmentRequest element) throws IOException {
44408    composeDomainResourceElements(element);
44409    if (element.hasIdentifier()) { 
44410      for (Identifier e : element.getIdentifier()) 
44411          composeIdentifier("identifier", e);
44412    }
44413    if (element.hasStatusElement())
44414      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
44415    if (element.hasCreatedElement()) {
44416      composeDateTime("created", element.getCreatedElement());
44417    }
44418    if (element.hasInsurer()) {
44419      composeReference("insurer", element.getInsurer());
44420    }
44421    if (element.hasProvider()) {
44422      composeReference("provider", element.getProvider());
44423    }
44424    if (element.hasCandidate()) {
44425      composeReference("candidate", element.getCandidate());
44426    }
44427    if (element.hasCoverage()) {
44428      composeReference("coverage", element.getCoverage());
44429    }
44430  }
44431
44432  protected void composeEnrollmentResponse(String name, EnrollmentResponse element) throws IOException {
44433    if (element != null) {
44434    composeResourceAttributes(element);
44435      xml.enter(FHIR_NS, name);
44436      composeEnrollmentResponseElements(element);
44437      composeElementClose(element);
44438      xml.exit(FHIR_NS, name);
44439    }
44440  }
44441
44442  protected void composeEnrollmentResponseElements(EnrollmentResponse element) throws IOException {
44443    composeDomainResourceElements(element);
44444    if (element.hasIdentifier()) { 
44445      for (Identifier e : element.getIdentifier()) 
44446          composeIdentifier("identifier", e);
44447    }
44448    if (element.hasStatusElement())
44449      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
44450    if (element.hasRequest()) {
44451      composeReference("request", element.getRequest());
44452    }
44453    if (element.hasOutcomeElement())
44454      composeEnumeration("outcome", element.getOutcomeElement(), new EnrollmentResponse.EnrollmentOutcomeEnumFactory());
44455    if (element.hasDispositionElement()) {
44456      composeString("disposition", element.getDispositionElement());
44457    }
44458    if (element.hasCreatedElement()) {
44459      composeDateTime("created", element.getCreatedElement());
44460    }
44461    if (element.hasOrganization()) {
44462      composeReference("organization", element.getOrganization());
44463    }
44464    if (element.hasRequestProvider()) {
44465      composeReference("requestProvider", element.getRequestProvider());
44466    }
44467  }
44468
44469  protected void composeEpisodeOfCare(String name, EpisodeOfCare element) throws IOException {
44470    if (element != null) {
44471    composeResourceAttributes(element);
44472      xml.enter(FHIR_NS, name);
44473      composeEpisodeOfCareElements(element);
44474      composeElementClose(element);
44475      xml.exit(FHIR_NS, name);
44476    }
44477  }
44478
44479  protected void composeEpisodeOfCareElements(EpisodeOfCare element) throws IOException {
44480    composeDomainResourceElements(element);
44481    if (element.hasIdentifier()) { 
44482      for (Identifier e : element.getIdentifier()) 
44483          composeIdentifier("identifier", e);
44484    }
44485    if (element.hasStatusElement())
44486      composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
44487    if (element.hasStatusHistory()) { 
44488      for (EpisodeOfCare.EpisodeOfCareStatusHistoryComponent e : element.getStatusHistory()) 
44489          composeEpisodeOfCareStatusHistoryComponent("statusHistory", e);
44490    }
44491    if (element.hasType()) { 
44492      for (CodeableConcept e : element.getType()) 
44493          composeCodeableConcept("type", e);
44494    }
44495    if (element.hasReason()) { 
44496      for (EpisodeOfCare.ReasonComponent e : element.getReason()) 
44497          composeEpisodeOfCareReasonComponent("reason", e);
44498    }
44499    if (element.hasDiagnosis()) { 
44500      for (EpisodeOfCare.DiagnosisComponent e : element.getDiagnosis()) 
44501          composeEpisodeOfCareDiagnosisComponent("diagnosis", e);
44502    }
44503    if (element.hasPatient()) {
44504      composeReference("patient", element.getPatient());
44505    }
44506    if (element.hasManagingOrganization()) {
44507      composeReference("managingOrganization", element.getManagingOrganization());
44508    }
44509    if (element.hasPeriod()) {
44510      composePeriod("period", element.getPeriod());
44511    }
44512    if (element.hasReferralRequest()) { 
44513      for (Reference e : element.getReferralRequest()) 
44514          composeReference("referralRequest", e);
44515    }
44516    if (element.hasCareManager()) {
44517      composeReference("careManager", element.getCareManager());
44518    }
44519    if (element.hasCareTeam()) { 
44520      for (Reference e : element.getCareTeam()) 
44521          composeReference("careTeam", e);
44522    }
44523    if (element.hasAccount()) { 
44524      for (Reference e : element.getAccount()) 
44525          composeReference("account", e);
44526    }
44527  }
44528
44529  protected void composeEpisodeOfCareStatusHistoryComponent(String name, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
44530    if (element != null) {
44531    composeElementAttributes(element);
44532      xml.enter(FHIR_NS, name);
44533      composeEpisodeOfCareStatusHistoryComponentElements(element);
44534      composeElementClose(element);
44535      xml.exit(FHIR_NS, name);
44536    }
44537  }
44538
44539  protected void composeEpisodeOfCareStatusHistoryComponentElements(EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
44540    composeBackboneElementElements(element);
44541    if (element.hasStatusElement())
44542      composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
44543    if (element.hasPeriod()) {
44544      composePeriod("period", element.getPeriod());
44545    }
44546  }
44547
44548  protected void composeEpisodeOfCareReasonComponent(String name, EpisodeOfCare.ReasonComponent element) throws IOException {
44549    if (element != null) {
44550    composeElementAttributes(element);
44551      xml.enter(FHIR_NS, name);
44552      composeEpisodeOfCareReasonComponentElements(element);
44553      composeElementClose(element);
44554      xml.exit(FHIR_NS, name);
44555    }
44556  }
44557
44558  protected void composeEpisodeOfCareReasonComponentElements(EpisodeOfCare.ReasonComponent element) throws IOException {
44559    composeBackboneElementElements(element);
44560    if (element.hasUse()) {
44561      composeCodeableConcept("use", element.getUse());
44562    }
44563    if (element.hasValue()) { 
44564      for (CodeableReference e : element.getValue()) 
44565          composeCodeableReference("value", e);
44566    }
44567  }
44568
44569  protected void composeEpisodeOfCareDiagnosisComponent(String name, EpisodeOfCare.DiagnosisComponent element) throws IOException {
44570    if (element != null) {
44571    composeElementAttributes(element);
44572      xml.enter(FHIR_NS, name);
44573      composeEpisodeOfCareDiagnosisComponentElements(element);
44574      composeElementClose(element);
44575      xml.exit(FHIR_NS, name);
44576    }
44577  }
44578
44579  protected void composeEpisodeOfCareDiagnosisComponentElements(EpisodeOfCare.DiagnosisComponent element) throws IOException {
44580    composeBackboneElementElements(element);
44581    if (element.hasCondition()) { 
44582      for (CodeableReference e : element.getCondition()) 
44583          composeCodeableReference("condition", e);
44584    }
44585    if (element.hasUse()) {
44586      composeCodeableConcept("use", element.getUse());
44587    }
44588  }
44589
44590  protected void composeEventDefinition(String name, EventDefinition element) throws IOException {
44591    if (element != null) {
44592    composeResourceAttributes(element);
44593      xml.enter(FHIR_NS, name);
44594      composeEventDefinitionElements(element);
44595      composeElementClose(element);
44596      xml.exit(FHIR_NS, name);
44597    }
44598  }
44599
44600  protected void composeEventDefinitionElements(EventDefinition element) throws IOException {
44601    composeMetadataResourceElements(element);
44602    if (element.hasUrlElement()) {
44603      composeUri("url", element.getUrlElement());
44604    }
44605    if (element.hasIdentifier()) { 
44606      for (Identifier e : element.getIdentifier()) 
44607          composeIdentifier("identifier", e);
44608    }
44609    if (element.hasVersionElement()) {
44610      composeString("version", element.getVersionElement());
44611    }
44612    if (element.hasVersionAlgorithm()) {
44613      composeType("versionAlgorithm", element.getVersionAlgorithm());
44614    }    if (element.hasNameElement()) {
44615      composeString("name", element.getNameElement());
44616    }
44617    if (element.hasTitleElement()) {
44618      composeString("title", element.getTitleElement());
44619    }
44620    if (element.hasSubtitleElement()) {
44621      composeString("subtitle", element.getSubtitleElement());
44622    }
44623    if (element.hasStatusElement())
44624      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
44625    if (element.hasExperimentalElement()) {
44626      composeBoolean("experimental", element.getExperimentalElement());
44627    }
44628    if (element.hasSubject()) {
44629      composeType("subject", element.getSubject());
44630    }    if (element.hasDateElement()) {
44631      composeDateTime("date", element.getDateElement());
44632    }
44633    if (element.hasPublisherElement()) {
44634      composeString("publisher", element.getPublisherElement());
44635    }
44636    if (element.hasContact()) { 
44637      for (ContactDetail e : element.getContact()) 
44638          composeContactDetail("contact", e);
44639    }
44640    if (element.hasDescriptionElement()) {
44641      composeMarkdown("description", element.getDescriptionElement());
44642    }
44643    if (element.hasUseContext()) { 
44644      for (UsageContext e : element.getUseContext()) 
44645          composeUsageContext("useContext", e);
44646    }
44647    if (element.hasJurisdiction()) { 
44648      for (CodeableConcept e : element.getJurisdiction()) 
44649          composeCodeableConcept("jurisdiction", e);
44650    }
44651    if (element.hasPurposeElement()) {
44652      composeMarkdown("purpose", element.getPurposeElement());
44653    }
44654    if (element.hasUsageElement()) {
44655      composeMarkdown("usage", element.getUsageElement());
44656    }
44657    if (element.hasCopyrightElement()) {
44658      composeMarkdown("copyright", element.getCopyrightElement());
44659    }
44660    if (element.hasCopyrightLabelElement()) {
44661      composeString("copyrightLabel", element.getCopyrightLabelElement());
44662    }
44663    if (element.hasApprovalDateElement()) {
44664      composeDate("approvalDate", element.getApprovalDateElement());
44665    }
44666    if (element.hasLastReviewDateElement()) {
44667      composeDate("lastReviewDate", element.getLastReviewDateElement());
44668    }
44669    if (element.hasEffectivePeriod()) {
44670      composePeriod("effectivePeriod", element.getEffectivePeriod());
44671    }
44672    if (element.hasTopic()) { 
44673      for (CodeableConcept e : element.getTopic()) 
44674          composeCodeableConcept("topic", e);
44675    }
44676    if (element.hasAuthor()) { 
44677      for (ContactDetail e : element.getAuthor()) 
44678          composeContactDetail("author", e);
44679    }
44680    if (element.hasEditor()) { 
44681      for (ContactDetail e : element.getEditor()) 
44682          composeContactDetail("editor", e);
44683    }
44684    if (element.hasReviewer()) { 
44685      for (ContactDetail e : element.getReviewer()) 
44686          composeContactDetail("reviewer", e);
44687    }
44688    if (element.hasEndorser()) { 
44689      for (ContactDetail e : element.getEndorser()) 
44690          composeContactDetail("endorser", e);
44691    }
44692    if (element.hasRelatedArtifact()) { 
44693      for (RelatedArtifact e : element.getRelatedArtifact()) 
44694          composeRelatedArtifact("relatedArtifact", e);
44695    }
44696    if (element.hasTrigger()) { 
44697      for (TriggerDefinition e : element.getTrigger()) 
44698          composeTriggerDefinition("trigger", e);
44699    }
44700  }
44701
44702  protected void composeEvidence(String name, Evidence element) throws IOException {
44703    if (element != null) {
44704    composeResourceAttributes(element);
44705      xml.enter(FHIR_NS, name);
44706      composeEvidenceElements(element);
44707      composeElementClose(element);
44708      xml.exit(FHIR_NS, name);
44709    }
44710  }
44711
44712  protected void composeEvidenceElements(Evidence element) throws IOException {
44713    composeMetadataResourceElements(element);
44714    if (element.hasUrlElement()) {
44715      composeUri("url", element.getUrlElement());
44716    }
44717    if (element.hasIdentifier()) { 
44718      for (Identifier e : element.getIdentifier()) 
44719          composeIdentifier("identifier", e);
44720    }
44721    if (element.hasVersionElement()) {
44722      composeString("version", element.getVersionElement());
44723    }
44724    if (element.hasVersionAlgorithm()) {
44725      composeType("versionAlgorithm", element.getVersionAlgorithm());
44726    }    if (element.hasNameElement()) {
44727      composeString("name", element.getNameElement());
44728    }
44729    if (element.hasTitleElement()) {
44730      composeString("title", element.getTitleElement());
44731    }
44732    if (element.hasCiteAs()) {
44733      composeType("citeAs", element.getCiteAs());
44734    }    if (element.hasStatusElement())
44735      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
44736    if (element.hasExperimentalElement()) {
44737      composeBoolean("experimental", element.getExperimentalElement());
44738    }
44739    if (element.hasDateElement()) {
44740      composeDateTime("date", element.getDateElement());
44741    }
44742    if (element.hasApprovalDateElement()) {
44743      composeDate("approvalDate", element.getApprovalDateElement());
44744    }
44745    if (element.hasLastReviewDateElement()) {
44746      composeDate("lastReviewDate", element.getLastReviewDateElement());
44747    }
44748    if (element.hasPublisherElement()) {
44749      composeString("publisher", element.getPublisherElement());
44750    }
44751    if (element.hasContact()) { 
44752      for (ContactDetail e : element.getContact()) 
44753          composeContactDetail("contact", e);
44754    }
44755    if (element.hasAuthor()) { 
44756      for (ContactDetail e : element.getAuthor()) 
44757          composeContactDetail("author", e);
44758    }
44759    if (element.hasEditor()) { 
44760      for (ContactDetail e : element.getEditor()) 
44761          composeContactDetail("editor", e);
44762    }
44763    if (element.hasReviewer()) { 
44764      for (ContactDetail e : element.getReviewer()) 
44765          composeContactDetail("reviewer", e);
44766    }
44767    if (element.hasEndorser()) { 
44768      for (ContactDetail e : element.getEndorser()) 
44769          composeContactDetail("endorser", e);
44770    }
44771    if (element.hasUseContext()) { 
44772      for (UsageContext e : element.getUseContext()) 
44773          composeUsageContext("useContext", e);
44774    }
44775    if (element.hasPurposeElement()) {
44776      composeMarkdown("purpose", element.getPurposeElement());
44777    }
44778    if (element.hasCopyrightElement()) {
44779      composeMarkdown("copyright", element.getCopyrightElement());
44780    }
44781    if (element.hasCopyrightLabelElement()) {
44782      composeString("copyrightLabel", element.getCopyrightLabelElement());
44783    }
44784    if (element.hasRelatedArtifact()) { 
44785      for (RelatedArtifact e : element.getRelatedArtifact()) 
44786          composeRelatedArtifact("relatedArtifact", e);
44787    }
44788    if (element.hasDescriptionElement()) {
44789      composeMarkdown("description", element.getDescriptionElement());
44790    }
44791    if (element.hasAssertionElement()) {
44792      composeMarkdown("assertion", element.getAssertionElement());
44793    }
44794    if (element.hasNote()) { 
44795      for (Annotation e : element.getNote()) 
44796          composeAnnotation("note", e);
44797    }
44798    if (element.hasVariableDefinition()) { 
44799      for (Evidence.EvidenceVariableDefinitionComponent e : element.getVariableDefinition()) 
44800          composeEvidenceVariableDefinitionComponent("variableDefinition", e);
44801    }
44802    if (element.hasSynthesisType()) {
44803      composeCodeableConcept("synthesisType", element.getSynthesisType());
44804    }
44805    if (element.hasStudyDesign()) { 
44806      for (CodeableConcept e : element.getStudyDesign()) 
44807          composeCodeableConcept("studyDesign", e);
44808    }
44809    if (element.hasStatistic()) { 
44810      for (Evidence.EvidenceStatisticComponent e : element.getStatistic()) 
44811          composeEvidenceStatisticComponent("statistic", e);
44812    }
44813    if (element.hasCertainty()) { 
44814      for (Evidence.EvidenceCertaintyComponent e : element.getCertainty()) 
44815          composeEvidenceCertaintyComponent("certainty", e);
44816    }
44817  }
44818
44819  protected void composeEvidenceVariableDefinitionComponent(String name, Evidence.EvidenceVariableDefinitionComponent element) throws IOException {
44820    if (element != null) {
44821    composeElementAttributes(element);
44822      xml.enter(FHIR_NS, name);
44823      composeEvidenceVariableDefinitionComponentElements(element);
44824      composeElementClose(element);
44825      xml.exit(FHIR_NS, name);
44826    }
44827  }
44828
44829  protected void composeEvidenceVariableDefinitionComponentElements(Evidence.EvidenceVariableDefinitionComponent element) throws IOException {
44830    composeBackboneElementElements(element);
44831    if (element.hasDescriptionElement()) {
44832      composeMarkdown("description", element.getDescriptionElement());
44833    }
44834    if (element.hasNote()) { 
44835      for (Annotation e : element.getNote()) 
44836          composeAnnotation("note", e);
44837    }
44838    if (element.hasVariableRole()) {
44839      composeCodeableConcept("variableRole", element.getVariableRole());
44840    }
44841    if (element.hasObserved()) {
44842      composeReference("observed", element.getObserved());
44843    }
44844    if (element.hasIntended()) {
44845      composeReference("intended", element.getIntended());
44846    }
44847    if (element.hasDirectnessMatch()) {
44848      composeCodeableConcept("directnessMatch", element.getDirectnessMatch());
44849    }
44850  }
44851
44852  protected void composeEvidenceStatisticComponent(String name, Evidence.EvidenceStatisticComponent element) throws IOException {
44853    if (element != null) {
44854    composeElementAttributes(element);
44855      xml.enter(FHIR_NS, name);
44856      composeEvidenceStatisticComponentElements(element);
44857      composeElementClose(element);
44858      xml.exit(FHIR_NS, name);
44859    }
44860  }
44861
44862  protected void composeEvidenceStatisticComponentElements(Evidence.EvidenceStatisticComponent element) throws IOException {
44863    composeBackboneElementElements(element);
44864    if (element.hasDescriptionElement()) {
44865      composeMarkdown("description", element.getDescriptionElement());
44866    }
44867    if (element.hasNote()) { 
44868      for (Annotation e : element.getNote()) 
44869          composeAnnotation("note", e);
44870    }
44871    if (element.hasStatisticType()) {
44872      composeCodeableConcept("statisticType", element.getStatisticType());
44873    }
44874    if (element.hasCategory()) {
44875      composeCodeableConcept("category", element.getCategory());
44876    }
44877    if (element.hasQuantity()) {
44878      composeQuantity("quantity", element.getQuantity());
44879    }
44880    if (element.hasNumberOfEventsElement()) {
44881      composeUnsignedInt("numberOfEvents", element.getNumberOfEventsElement());
44882    }
44883    if (element.hasNumberAffectedElement()) {
44884      composeUnsignedInt("numberAffected", element.getNumberAffectedElement());
44885    }
44886    if (element.hasSampleSize()) {
44887      composeEvidenceStatisticSampleSizeComponent("sampleSize", element.getSampleSize());
44888    }
44889    if (element.hasAttributeEstimate()) { 
44890      for (Evidence.EvidenceStatisticAttributeEstimateComponent e : element.getAttributeEstimate()) 
44891          composeEvidenceStatisticAttributeEstimateComponent("attributeEstimate", e);
44892    }
44893    if (element.hasModelCharacteristic()) { 
44894      for (Evidence.EvidenceStatisticModelCharacteristicComponent e : element.getModelCharacteristic()) 
44895          composeEvidenceStatisticModelCharacteristicComponent("modelCharacteristic", e);
44896    }
44897  }
44898
44899  protected void composeEvidenceStatisticSampleSizeComponent(String name, Evidence.EvidenceStatisticSampleSizeComponent element) throws IOException {
44900    if (element != null) {
44901    composeElementAttributes(element);
44902      xml.enter(FHIR_NS, name);
44903      composeEvidenceStatisticSampleSizeComponentElements(element);
44904      composeElementClose(element);
44905      xml.exit(FHIR_NS, name);
44906    }
44907  }
44908
44909  protected void composeEvidenceStatisticSampleSizeComponentElements(Evidence.EvidenceStatisticSampleSizeComponent element) throws IOException {
44910    composeBackboneElementElements(element);
44911    if (element.hasDescriptionElement()) {
44912      composeMarkdown("description", element.getDescriptionElement());
44913    }
44914    if (element.hasNote()) { 
44915      for (Annotation e : element.getNote()) 
44916          composeAnnotation("note", e);
44917    }
44918    if (element.hasNumberOfStudiesElement()) {
44919      composeUnsignedInt("numberOfStudies", element.getNumberOfStudiesElement());
44920    }
44921    if (element.hasNumberOfParticipantsElement()) {
44922      composeUnsignedInt("numberOfParticipants", element.getNumberOfParticipantsElement());
44923    }
44924    if (element.hasKnownDataCountElement()) {
44925      composeUnsignedInt("knownDataCount", element.getKnownDataCountElement());
44926    }
44927  }
44928
44929  protected void composeEvidenceStatisticAttributeEstimateComponent(String name, Evidence.EvidenceStatisticAttributeEstimateComponent element) throws IOException {
44930    if (element != null) {
44931    composeElementAttributes(element);
44932      xml.enter(FHIR_NS, name);
44933      composeEvidenceStatisticAttributeEstimateComponentElements(element);
44934      composeElementClose(element);
44935      xml.exit(FHIR_NS, name);
44936    }
44937  }
44938
44939  protected void composeEvidenceStatisticAttributeEstimateComponentElements(Evidence.EvidenceStatisticAttributeEstimateComponent element) throws IOException {
44940    composeBackboneElementElements(element);
44941    if (element.hasDescriptionElement()) {
44942      composeMarkdown("description", element.getDescriptionElement());
44943    }
44944    if (element.hasNote()) { 
44945      for (Annotation e : element.getNote()) 
44946          composeAnnotation("note", e);
44947    }
44948    if (element.hasType()) {
44949      composeCodeableConcept("type", element.getType());
44950    }
44951    if (element.hasQuantity()) {
44952      composeQuantity("quantity", element.getQuantity());
44953    }
44954    if (element.hasLevelElement()) {
44955      composeDecimal("level", element.getLevelElement());
44956    }
44957    if (element.hasRange()) {
44958      composeRange("range", element.getRange());
44959    }
44960    if (element.hasAttributeEstimate()) { 
44961      for (Evidence.EvidenceStatisticAttributeEstimateComponent e : element.getAttributeEstimate()) 
44962          composeEvidenceStatisticAttributeEstimateComponent("attributeEstimate", e);
44963    }
44964  }
44965
44966  protected void composeEvidenceStatisticModelCharacteristicComponent(String name, Evidence.EvidenceStatisticModelCharacteristicComponent element) throws IOException {
44967    if (element != null) {
44968    composeElementAttributes(element);
44969      xml.enter(FHIR_NS, name);
44970      composeEvidenceStatisticModelCharacteristicComponentElements(element);
44971      composeElementClose(element);
44972      xml.exit(FHIR_NS, name);
44973    }
44974  }
44975
44976  protected void composeEvidenceStatisticModelCharacteristicComponentElements(Evidence.EvidenceStatisticModelCharacteristicComponent element) throws IOException {
44977    composeBackboneElementElements(element);
44978    if (element.hasCode()) {
44979      composeCodeableConcept("code", element.getCode());
44980    }
44981    if (element.hasValue()) {
44982      composeQuantity("value", element.getValue());
44983    }
44984    if (element.hasVariable()) { 
44985      for (Evidence.EvidenceStatisticModelCharacteristicVariableComponent e : element.getVariable()) 
44986          composeEvidenceStatisticModelCharacteristicVariableComponent("variable", e);
44987    }
44988    if (element.hasAttributeEstimate()) { 
44989      for (Evidence.EvidenceStatisticAttributeEstimateComponent e : element.getAttributeEstimate()) 
44990          composeEvidenceStatisticAttributeEstimateComponent("attributeEstimate", e);
44991    }
44992  }
44993
44994  protected void composeEvidenceStatisticModelCharacteristicVariableComponent(String name, Evidence.EvidenceStatisticModelCharacteristicVariableComponent element) throws IOException {
44995    if (element != null) {
44996    composeElementAttributes(element);
44997      xml.enter(FHIR_NS, name);
44998      composeEvidenceStatisticModelCharacteristicVariableComponentElements(element);
44999      composeElementClose(element);
45000      xml.exit(FHIR_NS, name);
45001    }
45002  }
45003
45004  protected void composeEvidenceStatisticModelCharacteristicVariableComponentElements(Evidence.EvidenceStatisticModelCharacteristicVariableComponent element) throws IOException {
45005    composeBackboneElementElements(element);
45006    if (element.hasVariableDefinition()) {
45007      composeReference("variableDefinition", element.getVariableDefinition());
45008    }
45009    if (element.hasHandlingElement())
45010      composeEnumeration("handling", element.getHandlingElement(), new Enumerations.EvidenceVariableHandlingEnumFactory());
45011    if (element.hasValueCategory()) { 
45012      for (CodeableConcept e : element.getValueCategory()) 
45013          composeCodeableConcept("valueCategory", e);
45014    }
45015    if (element.hasValueQuantity()) { 
45016      for (Quantity e : element.getValueQuantity()) 
45017          composeQuantity("valueQuantity", e);
45018    }
45019    if (element.hasValueRange()) { 
45020      for (Range e : element.getValueRange()) 
45021          composeRange("valueRange", e);
45022    }
45023  }
45024
45025  protected void composeEvidenceCertaintyComponent(String name, Evidence.EvidenceCertaintyComponent element) throws IOException {
45026    if (element != null) {
45027    composeElementAttributes(element);
45028      xml.enter(FHIR_NS, name);
45029      composeEvidenceCertaintyComponentElements(element);
45030      composeElementClose(element);
45031      xml.exit(FHIR_NS, name);
45032    }
45033  }
45034
45035  protected void composeEvidenceCertaintyComponentElements(Evidence.EvidenceCertaintyComponent element) throws IOException {
45036    composeBackboneElementElements(element);
45037    if (element.hasDescriptionElement()) {
45038      composeMarkdown("description", element.getDescriptionElement());
45039    }
45040    if (element.hasNote()) { 
45041      for (Annotation e : element.getNote()) 
45042          composeAnnotation("note", e);
45043    }
45044    if (element.hasType()) {
45045      composeCodeableConcept("type", element.getType());
45046    }
45047    if (element.hasRating()) {
45048      composeCodeableConcept("rating", element.getRating());
45049    }
45050    if (element.hasRaterElement()) {
45051      composeString("rater", element.getRaterElement());
45052    }
45053    if (element.hasSubcomponent()) { 
45054      for (Evidence.EvidenceCertaintyComponent e : element.getSubcomponent()) 
45055          composeEvidenceCertaintyComponent("subcomponent", e);
45056    }
45057  }
45058
45059  protected void composeEvidenceReport(String name, EvidenceReport element) throws IOException {
45060    if (element != null) {
45061    composeResourceAttributes(element);
45062      xml.enter(FHIR_NS, name);
45063      composeEvidenceReportElements(element);
45064      composeElementClose(element);
45065      xml.exit(FHIR_NS, name);
45066    }
45067  }
45068
45069  protected void composeEvidenceReportElements(EvidenceReport element) throws IOException {
45070    composeMetadataResourceElements(element);
45071    if (element.hasUrlElement()) {
45072      composeUri("url", element.getUrlElement());
45073    }
45074    if (element.hasStatusElement())
45075      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
45076    if (element.hasUseContext()) { 
45077      for (UsageContext e : element.getUseContext()) 
45078          composeUsageContext("useContext", e);
45079    }
45080    if (element.hasIdentifier()) { 
45081      for (Identifier e : element.getIdentifier()) 
45082          composeIdentifier("identifier", e);
45083    }
45084    if (element.hasRelatedIdentifier()) { 
45085      for (Identifier e : element.getRelatedIdentifier()) 
45086          composeIdentifier("relatedIdentifier", e);
45087    }
45088    if (element.hasCiteAs()) {
45089      composeType("citeAs", element.getCiteAs());
45090    }    if (element.hasType()) {
45091      composeCodeableConcept("type", element.getType());
45092    }
45093    if (element.hasNote()) { 
45094      for (Annotation e : element.getNote()) 
45095          composeAnnotation("note", e);
45096    }
45097    if (element.hasRelatedArtifact()) { 
45098      for (RelatedArtifact e : element.getRelatedArtifact()) 
45099          composeRelatedArtifact("relatedArtifact", e);
45100    }
45101    if (element.hasSubject()) {
45102      composeEvidenceReportSubjectComponent("subject", element.getSubject());
45103    }
45104    if (element.hasPublisherElement()) {
45105      composeString("publisher", element.getPublisherElement());
45106    }
45107    if (element.hasContact()) { 
45108      for (ContactDetail e : element.getContact()) 
45109          composeContactDetail("contact", e);
45110    }
45111    if (element.hasAuthor()) { 
45112      for (ContactDetail e : element.getAuthor()) 
45113          composeContactDetail("author", e);
45114    }
45115    if (element.hasEditor()) { 
45116      for (ContactDetail e : element.getEditor()) 
45117          composeContactDetail("editor", e);
45118    }
45119    if (element.hasReviewer()) { 
45120      for (ContactDetail e : element.getReviewer()) 
45121          composeContactDetail("reviewer", e);
45122    }
45123    if (element.hasEndorser()) { 
45124      for (ContactDetail e : element.getEndorser()) 
45125          composeContactDetail("endorser", e);
45126    }
45127    if (element.hasRelatesTo()) { 
45128      for (EvidenceReport.EvidenceReportRelatesToComponent e : element.getRelatesTo()) 
45129          composeEvidenceReportRelatesToComponent("relatesTo", e);
45130    }
45131    if (element.hasSection()) { 
45132      for (EvidenceReport.SectionComponent e : element.getSection()) 
45133          composeEvidenceReportSectionComponent("section", e);
45134    }
45135  }
45136
45137  protected void composeEvidenceReportSubjectComponent(String name, EvidenceReport.EvidenceReportSubjectComponent element) throws IOException {
45138    if (element != null) {
45139    composeElementAttributes(element);
45140      xml.enter(FHIR_NS, name);
45141      composeEvidenceReportSubjectComponentElements(element);
45142      composeElementClose(element);
45143      xml.exit(FHIR_NS, name);
45144    }
45145  }
45146
45147  protected void composeEvidenceReportSubjectComponentElements(EvidenceReport.EvidenceReportSubjectComponent element) throws IOException {
45148    composeBackboneElementElements(element);
45149    if (element.hasCharacteristic()) { 
45150      for (EvidenceReport.EvidenceReportSubjectCharacteristicComponent e : element.getCharacteristic()) 
45151          composeEvidenceReportSubjectCharacteristicComponent("characteristic", e);
45152    }
45153    if (element.hasNote()) { 
45154      for (Annotation e : element.getNote()) 
45155          composeAnnotation("note", e);
45156    }
45157  }
45158
45159  protected void composeEvidenceReportSubjectCharacteristicComponent(String name, EvidenceReport.EvidenceReportSubjectCharacteristicComponent element) throws IOException {
45160    if (element != null) {
45161    composeElementAttributes(element);
45162      xml.enter(FHIR_NS, name);
45163      composeEvidenceReportSubjectCharacteristicComponentElements(element);
45164      composeElementClose(element);
45165      xml.exit(FHIR_NS, name);
45166    }
45167  }
45168
45169  protected void composeEvidenceReportSubjectCharacteristicComponentElements(EvidenceReport.EvidenceReportSubjectCharacteristicComponent element) throws IOException {
45170    composeBackboneElementElements(element);
45171    if (element.hasCode()) {
45172      composeCodeableConcept("code", element.getCode());
45173    }
45174    if (element.hasValue()) {
45175      composeType("value", element.getValue());
45176    }    if (element.hasExcludeElement()) {
45177      composeBoolean("exclude", element.getExcludeElement());
45178    }
45179    if (element.hasPeriod()) {
45180      composePeriod("period", element.getPeriod());
45181    }
45182  }
45183
45184  protected void composeEvidenceReportRelatesToComponent(String name, EvidenceReport.EvidenceReportRelatesToComponent element) throws IOException {
45185    if (element != null) {
45186    composeElementAttributes(element);
45187      xml.enter(FHIR_NS, name);
45188      composeEvidenceReportRelatesToComponentElements(element);
45189      composeElementClose(element);
45190      xml.exit(FHIR_NS, name);
45191    }
45192  }
45193
45194  protected void composeEvidenceReportRelatesToComponentElements(EvidenceReport.EvidenceReportRelatesToComponent element) throws IOException {
45195    composeBackboneElementElements(element);
45196    if (element.hasCodeElement())
45197      composeEnumeration("code", element.getCodeElement(), new EvidenceReport.ReportRelationshipTypeEnumFactory());
45198    if (element.hasTarget()) {
45199      composeEvidenceReportRelatesToTargetComponent("target", element.getTarget());
45200    }
45201  }
45202
45203  protected void composeEvidenceReportRelatesToTargetComponent(String name, EvidenceReport.EvidenceReportRelatesToTargetComponent element) throws IOException {
45204    if (element != null) {
45205    composeElementAttributes(element);
45206      xml.enter(FHIR_NS, name);
45207      composeEvidenceReportRelatesToTargetComponentElements(element);
45208      composeElementClose(element);
45209      xml.exit(FHIR_NS, name);
45210    }
45211  }
45212
45213  protected void composeEvidenceReportRelatesToTargetComponentElements(EvidenceReport.EvidenceReportRelatesToTargetComponent element) throws IOException {
45214    composeBackboneElementElements(element);
45215    if (element.hasUrlElement()) {
45216      composeUri("url", element.getUrlElement());
45217    }
45218    if (element.hasIdentifier()) {
45219      composeIdentifier("identifier", element.getIdentifier());
45220    }
45221    if (element.hasDisplayElement()) {
45222      composeMarkdown("display", element.getDisplayElement());
45223    }
45224    if (element.hasResource()) {
45225      composeReference("resource", element.getResource());
45226    }
45227  }
45228
45229  protected void composeEvidenceReportSectionComponent(String name, EvidenceReport.SectionComponent element) throws IOException {
45230    if (element != null) {
45231    composeElementAttributes(element);
45232      xml.enter(FHIR_NS, name);
45233      composeEvidenceReportSectionComponentElements(element);
45234      composeElementClose(element);
45235      xml.exit(FHIR_NS, name);
45236    }
45237  }
45238
45239  protected void composeEvidenceReportSectionComponentElements(EvidenceReport.SectionComponent element) throws IOException {
45240    composeBackboneElementElements(element);
45241    if (element.hasTitleElement()) {
45242      composeString("title", element.getTitleElement());
45243    }
45244    if (element.hasFocus()) {
45245      composeCodeableConcept("focus", element.getFocus());
45246    }
45247    if (element.hasFocusReference()) {
45248      composeReference("focusReference", element.getFocusReference());
45249    }
45250    if (element.hasAuthor()) { 
45251      for (Reference e : element.getAuthor()) 
45252          composeReference("author", e);
45253    }
45254    if (element.hasText()) {
45255      composeNarrative("text", element.getText());
45256    }
45257    if (element.hasModeElement())
45258      composeEnumeration("mode", element.getModeElement(), new Enumerations.ListModeEnumFactory());
45259    if (element.hasOrderedBy()) {
45260      composeCodeableConcept("orderedBy", element.getOrderedBy());
45261    }
45262    if (element.hasEntryClassifier()) { 
45263      for (CodeableConcept e : element.getEntryClassifier()) 
45264          composeCodeableConcept("entryClassifier", e);
45265    }
45266    if (element.hasEntryReference()) { 
45267      for (Reference e : element.getEntryReference()) 
45268          composeReference("entryReference", e);
45269    }
45270    if (element.hasEntryQuantity()) { 
45271      for (Quantity e : element.getEntryQuantity()) 
45272          composeQuantity("entryQuantity", e);
45273    }
45274    if (element.hasEmptyReason()) {
45275      composeCodeableConcept("emptyReason", element.getEmptyReason());
45276    }
45277    if (element.hasSection()) { 
45278      for (EvidenceReport.SectionComponent e : element.getSection()) 
45279          composeEvidenceReportSectionComponent("section", e);
45280    }
45281  }
45282
45283  protected void composeEvidenceVariable(String name, EvidenceVariable element) throws IOException {
45284    if (element != null) {
45285    composeResourceAttributes(element);
45286      xml.enter(FHIR_NS, name);
45287      composeEvidenceVariableElements(element);
45288      composeElementClose(element);
45289      xml.exit(FHIR_NS, name);
45290    }
45291  }
45292
45293  protected void composeEvidenceVariableElements(EvidenceVariable element) throws IOException {
45294    composeMetadataResourceElements(element);
45295    if (element.hasUrlElement()) {
45296      composeUri("url", element.getUrlElement());
45297    }
45298    if (element.hasIdentifier()) { 
45299      for (Identifier e : element.getIdentifier()) 
45300          composeIdentifier("identifier", e);
45301    }
45302    if (element.hasVersionElement()) {
45303      composeString("version", element.getVersionElement());
45304    }
45305    if (element.hasVersionAlgorithm()) {
45306      composeType("versionAlgorithm", element.getVersionAlgorithm());
45307    }    if (element.hasNameElement()) {
45308      composeString("name", element.getNameElement());
45309    }
45310    if (element.hasTitleElement()) {
45311      composeString("title", element.getTitleElement());
45312    }
45313    if (element.hasShortTitleElement()) {
45314      composeString("shortTitle", element.getShortTitleElement());
45315    }
45316    if (element.hasStatusElement())
45317      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
45318    if (element.hasExperimentalElement()) {
45319      composeBoolean("experimental", element.getExperimentalElement());
45320    }
45321    if (element.hasDateElement()) {
45322      composeDateTime("date", element.getDateElement());
45323    }
45324    if (element.hasPublisherElement()) {
45325      composeString("publisher", element.getPublisherElement());
45326    }
45327    if (element.hasContact()) { 
45328      for (ContactDetail e : element.getContact()) 
45329          composeContactDetail("contact", e);
45330    }
45331    if (element.hasDescriptionElement()) {
45332      composeMarkdown("description", element.getDescriptionElement());
45333    }
45334    if (element.hasNote()) { 
45335      for (Annotation e : element.getNote()) 
45336          composeAnnotation("note", e);
45337    }
45338    if (element.hasUseContext()) { 
45339      for (UsageContext e : element.getUseContext()) 
45340          composeUsageContext("useContext", e);
45341    }
45342    if (element.hasPurposeElement()) {
45343      composeMarkdown("purpose", element.getPurposeElement());
45344    }
45345    if (element.hasCopyrightElement()) {
45346      composeMarkdown("copyright", element.getCopyrightElement());
45347    }
45348    if (element.hasCopyrightLabelElement()) {
45349      composeString("copyrightLabel", element.getCopyrightLabelElement());
45350    }
45351    if (element.hasApprovalDateElement()) {
45352      composeDate("approvalDate", element.getApprovalDateElement());
45353    }
45354    if (element.hasLastReviewDateElement()) {
45355      composeDate("lastReviewDate", element.getLastReviewDateElement());
45356    }
45357    if (element.hasEffectivePeriod()) {
45358      composePeriod("effectivePeriod", element.getEffectivePeriod());
45359    }
45360    if (element.hasAuthor()) { 
45361      for (ContactDetail e : element.getAuthor()) 
45362          composeContactDetail("author", e);
45363    }
45364    if (element.hasEditor()) { 
45365      for (ContactDetail e : element.getEditor()) 
45366          composeContactDetail("editor", e);
45367    }
45368    if (element.hasReviewer()) { 
45369      for (ContactDetail e : element.getReviewer()) 
45370          composeContactDetail("reviewer", e);
45371    }
45372    if (element.hasEndorser()) { 
45373      for (ContactDetail e : element.getEndorser()) 
45374          composeContactDetail("endorser", e);
45375    }
45376    if (element.hasRelatedArtifact()) { 
45377      for (RelatedArtifact e : element.getRelatedArtifact()) 
45378          composeRelatedArtifact("relatedArtifact", e);
45379    }
45380    if (element.hasActualElement()) {
45381      composeBoolean("actual", element.getActualElement());
45382    }
45383    if (element.hasCharacteristic()) { 
45384      for (EvidenceVariable.EvidenceVariableCharacteristicComponent e : element.getCharacteristic()) 
45385          composeEvidenceVariableCharacteristicComponent("characteristic", e);
45386    }
45387    if (element.hasHandlingElement())
45388      composeEnumeration("handling", element.getHandlingElement(), new Enumerations.EvidenceVariableHandlingEnumFactory());
45389    if (element.hasCategory()) { 
45390      for (EvidenceVariable.EvidenceVariableCategoryComponent e : element.getCategory()) 
45391          composeEvidenceVariableCategoryComponent("category", e);
45392    }
45393  }
45394
45395  protected void composeEvidenceVariableCharacteristicComponent(String name, EvidenceVariable.EvidenceVariableCharacteristicComponent element) throws IOException {
45396    if (element != null) {
45397    composeElementAttributes(element);
45398      xml.enter(FHIR_NS, name);
45399      composeEvidenceVariableCharacteristicComponentElements(element);
45400      composeElementClose(element);
45401      xml.exit(FHIR_NS, name);
45402    }
45403  }
45404
45405  protected void composeEvidenceVariableCharacteristicComponentElements(EvidenceVariable.EvidenceVariableCharacteristicComponent element) throws IOException {
45406    composeBackboneElementElements(element);
45407    if (element.hasLinkIdElement()) {
45408      composeId("linkId", element.getLinkIdElement());
45409    }
45410    if (element.hasDescriptionElement()) {
45411      composeMarkdown("description", element.getDescriptionElement());
45412    }
45413    if (element.hasNote()) { 
45414      for (Annotation e : element.getNote()) 
45415          composeAnnotation("note", e);
45416    }
45417    if (element.hasExcludeElement()) {
45418      composeBoolean("exclude", element.getExcludeElement());
45419    }
45420    if (element.hasDefinitionReference()) {
45421      composeReference("definitionReference", element.getDefinitionReference());
45422    }
45423    if (element.hasDefinitionCanonicalElement()) {
45424      composeCanonical("definitionCanonical", element.getDefinitionCanonicalElement());
45425    }
45426    if (element.hasDefinitionCodeableConcept()) {
45427      composeCodeableConcept("definitionCodeableConcept", element.getDefinitionCodeableConcept());
45428    }
45429    if (element.hasDefinitionExpression()) {
45430      composeExpression("definitionExpression", element.getDefinitionExpression());
45431    }
45432    if (element.hasDefinitionIdElement()) {
45433      composeId("definitionId", element.getDefinitionIdElement());
45434    }
45435    if (element.hasDefinitionByTypeAndValue()) {
45436      composeEvidenceVariableCharacteristicDefinitionByTypeAndValueComponent("definitionByTypeAndValue", element.getDefinitionByTypeAndValue());
45437    }
45438    if (element.hasDefinitionByCombination()) {
45439      composeEvidenceVariableCharacteristicDefinitionByCombinationComponent("definitionByCombination", element.getDefinitionByCombination());
45440    }
45441    if (element.hasInstances()) {
45442      composeType("instances", element.getInstances());
45443    }    if (element.hasDuration()) {
45444      composeType("duration", element.getDuration());
45445    }    if (element.hasTimeFromEvent()) { 
45446      for (EvidenceVariable.EvidenceVariableCharacteristicTimeFromEventComponent e : element.getTimeFromEvent()) 
45447          composeEvidenceVariableCharacteristicTimeFromEventComponent("timeFromEvent", e);
45448    }
45449  }
45450
45451  protected void composeEvidenceVariableCharacteristicDefinitionByTypeAndValueComponent(String name, EvidenceVariable.EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent element) throws IOException {
45452    if (element != null) {
45453    composeElementAttributes(element);
45454      xml.enter(FHIR_NS, name);
45455      composeEvidenceVariableCharacteristicDefinitionByTypeAndValueComponentElements(element);
45456      composeElementClose(element);
45457      xml.exit(FHIR_NS, name);
45458    }
45459  }
45460
45461  protected void composeEvidenceVariableCharacteristicDefinitionByTypeAndValueComponentElements(EvidenceVariable.EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent element) throws IOException {
45462    composeBackboneElementElements(element);
45463    if (element.hasType()) {
45464      composeCodeableConcept("type", element.getType());
45465    }
45466    if (element.hasMethod()) { 
45467      for (CodeableConcept e : element.getMethod()) 
45468          composeCodeableConcept("method", e);
45469    }
45470    if (element.hasDevice()) {
45471      composeReference("device", element.getDevice());
45472    }
45473    if (element.hasValue()) {
45474      composeType("value", element.getValue());
45475    }    if (element.hasOffset()) {
45476      composeCodeableConcept("offset", element.getOffset());
45477    }
45478  }
45479
45480  protected void composeEvidenceVariableCharacteristicDefinitionByCombinationComponent(String name, EvidenceVariable.EvidenceVariableCharacteristicDefinitionByCombinationComponent element) throws IOException {
45481    if (element != null) {
45482    composeElementAttributes(element);
45483      xml.enter(FHIR_NS, name);
45484      composeEvidenceVariableCharacteristicDefinitionByCombinationComponentElements(element);
45485      composeElementClose(element);
45486      xml.exit(FHIR_NS, name);
45487    }
45488  }
45489
45490  protected void composeEvidenceVariableCharacteristicDefinitionByCombinationComponentElements(EvidenceVariable.EvidenceVariableCharacteristicDefinitionByCombinationComponent element) throws IOException {
45491    composeBackboneElementElements(element);
45492    if (element.hasCodeElement())
45493      composeEnumeration("code", element.getCodeElement(), new EvidenceVariable.CharacteristicCombinationEnumFactory());
45494    if (element.hasThresholdElement()) {
45495      composePositiveInt("threshold", element.getThresholdElement());
45496    }
45497    if (element.hasCharacteristic()) { 
45498      for (EvidenceVariable.EvidenceVariableCharacteristicComponent e : element.getCharacteristic()) 
45499          composeEvidenceVariableCharacteristicComponent("characteristic", e);
45500    }
45501  }
45502
45503  protected void composeEvidenceVariableCharacteristicTimeFromEventComponent(String name, EvidenceVariable.EvidenceVariableCharacteristicTimeFromEventComponent element) throws IOException {
45504    if (element != null) {
45505    composeElementAttributes(element);
45506      xml.enter(FHIR_NS, name);
45507      composeEvidenceVariableCharacteristicTimeFromEventComponentElements(element);
45508      composeElementClose(element);
45509      xml.exit(FHIR_NS, name);
45510    }
45511  }
45512
45513  protected void composeEvidenceVariableCharacteristicTimeFromEventComponentElements(EvidenceVariable.EvidenceVariableCharacteristicTimeFromEventComponent element) throws IOException {
45514    composeBackboneElementElements(element);
45515    if (element.hasDescriptionElement()) {
45516      composeMarkdown("description", element.getDescriptionElement());
45517    }
45518    if (element.hasNote()) { 
45519      for (Annotation e : element.getNote()) 
45520          composeAnnotation("note", e);
45521    }
45522    if (element.hasEvent()) {
45523      composeType("event", element.getEvent());
45524    }    if (element.hasQuantity()) {
45525      composeQuantity("quantity", element.getQuantity());
45526    }
45527    if (element.hasRange()) {
45528      composeRange("range", element.getRange());
45529    }
45530  }
45531
45532  protected void composeEvidenceVariableCategoryComponent(String name, EvidenceVariable.EvidenceVariableCategoryComponent element) throws IOException {
45533    if (element != null) {
45534    composeElementAttributes(element);
45535      xml.enter(FHIR_NS, name);
45536      composeEvidenceVariableCategoryComponentElements(element);
45537      composeElementClose(element);
45538      xml.exit(FHIR_NS, name);
45539    }
45540  }
45541
45542  protected void composeEvidenceVariableCategoryComponentElements(EvidenceVariable.EvidenceVariableCategoryComponent element) throws IOException {
45543    composeBackboneElementElements(element);
45544    if (element.hasNameElement()) {
45545      composeString("name", element.getNameElement());
45546    }
45547    if (element.hasValue()) {
45548      composeType("value", element.getValue());
45549    }  }
45550
45551  protected void composeExampleScenario(String name, ExampleScenario element) throws IOException {
45552    if (element != null) {
45553    composeResourceAttributes(element);
45554      xml.enter(FHIR_NS, name);
45555      composeExampleScenarioElements(element);
45556      composeElementClose(element);
45557      xml.exit(FHIR_NS, name);
45558    }
45559  }
45560
45561  protected void composeExampleScenarioElements(ExampleScenario element) throws IOException {
45562    composeCanonicalResourceElements(element);
45563    if (element.hasUrlElement()) {
45564      composeUri("url", element.getUrlElement());
45565    }
45566    if (element.hasIdentifier()) { 
45567      for (Identifier e : element.getIdentifier()) 
45568          composeIdentifier("identifier", e);
45569    }
45570    if (element.hasVersionElement()) {
45571      composeString("version", element.getVersionElement());
45572    }
45573    if (element.hasVersionAlgorithm()) {
45574      composeType("versionAlgorithm", element.getVersionAlgorithm());
45575    }    if (element.hasNameElement()) {
45576      composeString("name", element.getNameElement());
45577    }
45578    if (element.hasTitleElement()) {
45579      composeString("title", element.getTitleElement());
45580    }
45581    if (element.hasStatusElement())
45582      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
45583    if (element.hasExperimentalElement()) {
45584      composeBoolean("experimental", element.getExperimentalElement());
45585    }
45586    if (element.hasDateElement()) {
45587      composeDateTime("date", element.getDateElement());
45588    }
45589    if (element.hasPublisherElement()) {
45590      composeString("publisher", element.getPublisherElement());
45591    }
45592    if (element.hasContact()) { 
45593      for (ContactDetail e : element.getContact()) 
45594          composeContactDetail("contact", e);
45595    }
45596    if (element.hasDescriptionElement()) {
45597      composeMarkdown("description", element.getDescriptionElement());
45598    }
45599    if (element.hasUseContext()) { 
45600      for (UsageContext e : element.getUseContext()) 
45601          composeUsageContext("useContext", e);
45602    }
45603    if (element.hasJurisdiction()) { 
45604      for (CodeableConcept e : element.getJurisdiction()) 
45605          composeCodeableConcept("jurisdiction", e);
45606    }
45607    if (element.hasPurposeElement()) {
45608      composeMarkdown("purpose", element.getPurposeElement());
45609    }
45610    if (element.hasCopyrightElement()) {
45611      composeMarkdown("copyright", element.getCopyrightElement());
45612    }
45613    if (element.hasCopyrightLabelElement()) {
45614      composeString("copyrightLabel", element.getCopyrightLabelElement());
45615    }
45616    if (element.hasActor()) { 
45617      for (ExampleScenario.ExampleScenarioActorComponent e : element.getActor()) 
45618          composeExampleScenarioActorComponent("actor", e);
45619    }
45620    if (element.hasInstance()) { 
45621      for (ExampleScenario.ExampleScenarioInstanceComponent e : element.getInstance()) 
45622          composeExampleScenarioInstanceComponent("instance", e);
45623    }
45624    if (element.hasProcess()) { 
45625      for (ExampleScenario.ExampleScenarioProcessComponent e : element.getProcess()) 
45626          composeExampleScenarioProcessComponent("process", e);
45627    }
45628  }
45629
45630  protected void composeExampleScenarioActorComponent(String name, ExampleScenario.ExampleScenarioActorComponent element) throws IOException {
45631    if (element != null) {
45632    composeElementAttributes(element);
45633      xml.enter(FHIR_NS, name);
45634      composeExampleScenarioActorComponentElements(element);
45635      composeElementClose(element);
45636      xml.exit(FHIR_NS, name);
45637    }
45638  }
45639
45640  protected void composeExampleScenarioActorComponentElements(ExampleScenario.ExampleScenarioActorComponent element) throws IOException {
45641    composeBackboneElementElements(element);
45642    if (element.hasKeyElement()) {
45643      composeString("key", element.getKeyElement());
45644    }
45645    if (element.hasTypeElement())
45646      composeEnumeration("type", element.getTypeElement(), new Enumerations.ExampleScenarioActorTypeEnumFactory());
45647    if (element.hasTitleElement()) {
45648      composeString("title", element.getTitleElement());
45649    }
45650    if (element.hasDescriptionElement()) {
45651      composeMarkdown("description", element.getDescriptionElement());
45652    }
45653  }
45654
45655  protected void composeExampleScenarioInstanceComponent(String name, ExampleScenario.ExampleScenarioInstanceComponent element) throws IOException {
45656    if (element != null) {
45657    composeElementAttributes(element);
45658      xml.enter(FHIR_NS, name);
45659      composeExampleScenarioInstanceComponentElements(element);
45660      composeElementClose(element);
45661      xml.exit(FHIR_NS, name);
45662    }
45663  }
45664
45665  protected void composeExampleScenarioInstanceComponentElements(ExampleScenario.ExampleScenarioInstanceComponent element) throws IOException {
45666    composeBackboneElementElements(element);
45667    if (element.hasKeyElement()) {
45668      composeString("key", element.getKeyElement());
45669    }
45670    if (element.hasStructureType()) {
45671      composeCoding("structureType", element.getStructureType());
45672    }
45673    if (element.hasStructureVersionElement()) {
45674      composeString("structureVersion", element.getStructureVersionElement());
45675    }
45676    if (element.hasStructureProfile()) {
45677      composeType("structureProfile", element.getStructureProfile());
45678    }    if (element.hasTitleElement()) {
45679      composeString("title", element.getTitleElement());
45680    }
45681    if (element.hasDescriptionElement()) {
45682      composeMarkdown("description", element.getDescriptionElement());
45683    }
45684    if (element.hasContent()) {
45685      composeReference("content", element.getContent());
45686    }
45687    if (element.hasVersion()) { 
45688      for (ExampleScenario.ExampleScenarioInstanceVersionComponent e : element.getVersion()) 
45689          composeExampleScenarioInstanceVersionComponent("version", e);
45690    }
45691    if (element.hasContainedInstance()) { 
45692      for (ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent e : element.getContainedInstance()) 
45693          composeExampleScenarioInstanceContainedInstanceComponent("containedInstance", e);
45694    }
45695  }
45696
45697  protected void composeExampleScenarioInstanceVersionComponent(String name, ExampleScenario.ExampleScenarioInstanceVersionComponent element) throws IOException {
45698    if (element != null) {
45699    composeElementAttributes(element);
45700      xml.enter(FHIR_NS, name);
45701      composeExampleScenarioInstanceVersionComponentElements(element);
45702      composeElementClose(element);
45703      xml.exit(FHIR_NS, name);
45704    }
45705  }
45706
45707  protected void composeExampleScenarioInstanceVersionComponentElements(ExampleScenario.ExampleScenarioInstanceVersionComponent element) throws IOException {
45708    composeBackboneElementElements(element);
45709    if (element.hasKeyElement()) {
45710      composeString("key", element.getKeyElement());
45711    }
45712    if (element.hasTitleElement()) {
45713      composeString("title", element.getTitleElement());
45714    }
45715    if (element.hasDescriptionElement()) {
45716      composeMarkdown("description", element.getDescriptionElement());
45717    }
45718    if (element.hasContent()) {
45719      composeReference("content", element.getContent());
45720    }
45721  }
45722
45723  protected void composeExampleScenarioInstanceContainedInstanceComponent(String name, ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent element) throws IOException {
45724    if (element != null) {
45725    composeElementAttributes(element);
45726      xml.enter(FHIR_NS, name);
45727      composeExampleScenarioInstanceContainedInstanceComponentElements(element);
45728      composeElementClose(element);
45729      xml.exit(FHIR_NS, name);
45730    }
45731  }
45732
45733  protected void composeExampleScenarioInstanceContainedInstanceComponentElements(ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent element) throws IOException {
45734    composeBackboneElementElements(element);
45735    if (element.hasInstanceReferenceElement()) {
45736      composeString("instanceReference", element.getInstanceReferenceElement());
45737    }
45738    if (element.hasVersionReferenceElement()) {
45739      composeString("versionReference", element.getVersionReferenceElement());
45740    }
45741  }
45742
45743  protected void composeExampleScenarioProcessComponent(String name, ExampleScenario.ExampleScenarioProcessComponent element) throws IOException {
45744    if (element != null) {
45745    composeElementAttributes(element);
45746      xml.enter(FHIR_NS, name);
45747      composeExampleScenarioProcessComponentElements(element);
45748      composeElementClose(element);
45749      xml.exit(FHIR_NS, name);
45750    }
45751  }
45752
45753  protected void composeExampleScenarioProcessComponentElements(ExampleScenario.ExampleScenarioProcessComponent element) throws IOException {
45754    composeBackboneElementElements(element);
45755    if (element.hasTitleElement()) {
45756      composeString("title", element.getTitleElement());
45757    }
45758    if (element.hasDescriptionElement()) {
45759      composeMarkdown("description", element.getDescriptionElement());
45760    }
45761    if (element.hasPreConditionsElement()) {
45762      composeMarkdown("preConditions", element.getPreConditionsElement());
45763    }
45764    if (element.hasPostConditionsElement()) {
45765      composeMarkdown("postConditions", element.getPostConditionsElement());
45766    }
45767    if (element.hasStep()) { 
45768      for (ExampleScenario.ExampleScenarioProcessStepComponent e : element.getStep()) 
45769          composeExampleScenarioProcessStepComponent("step", e);
45770    }
45771  }
45772
45773  protected void composeExampleScenarioProcessStepComponent(String name, ExampleScenario.ExampleScenarioProcessStepComponent element) throws IOException {
45774    if (element != null) {
45775    composeElementAttributes(element);
45776      xml.enter(FHIR_NS, name);
45777      composeExampleScenarioProcessStepComponentElements(element);
45778      composeElementClose(element);
45779      xml.exit(FHIR_NS, name);
45780    }
45781  }
45782
45783  protected void composeExampleScenarioProcessStepComponentElements(ExampleScenario.ExampleScenarioProcessStepComponent element) throws IOException {
45784    composeBackboneElementElements(element);
45785    if (element.hasNumberElement()) {
45786      composeString("number", element.getNumberElement());
45787    }
45788    if (element.hasProcess()) {
45789      composeExampleScenarioProcessComponent("process", element.getProcess());
45790    }
45791    if (element.hasWorkflowElement()) {
45792      composeCanonical("workflow", element.getWorkflowElement());
45793    }
45794    if (element.hasOperation()) {
45795      composeExampleScenarioProcessStepOperationComponent("operation", element.getOperation());
45796    }
45797    if (element.hasAlternative()) { 
45798      for (ExampleScenario.ExampleScenarioProcessStepAlternativeComponent e : element.getAlternative()) 
45799          composeExampleScenarioProcessStepAlternativeComponent("alternative", e);
45800    }
45801    if (element.hasPauseElement()) {
45802      composeBoolean("pause", element.getPauseElement());
45803    }
45804  }
45805
45806  protected void composeExampleScenarioProcessStepOperationComponent(String name, ExampleScenario.ExampleScenarioProcessStepOperationComponent element) throws IOException {
45807    if (element != null) {
45808    composeElementAttributes(element);
45809      xml.enter(FHIR_NS, name);
45810      composeExampleScenarioProcessStepOperationComponentElements(element);
45811      composeElementClose(element);
45812      xml.exit(FHIR_NS, name);
45813    }
45814  }
45815
45816  protected void composeExampleScenarioProcessStepOperationComponentElements(ExampleScenario.ExampleScenarioProcessStepOperationComponent element) throws IOException {
45817    composeBackboneElementElements(element);
45818    if (element.hasType()) {
45819      composeCoding("type", element.getType());
45820    }
45821    if (element.hasTitleElement()) {
45822      composeString("title", element.getTitleElement());
45823    }
45824    if (element.hasInitiatorElement()) {
45825      composeString("initiator", element.getInitiatorElement());
45826    }
45827    if (element.hasReceiverElement()) {
45828      composeString("receiver", element.getReceiverElement());
45829    }
45830    if (element.hasDescriptionElement()) {
45831      composeMarkdown("description", element.getDescriptionElement());
45832    }
45833    if (element.hasInitiatorActiveElement()) {
45834      composeBoolean("initiatorActive", element.getInitiatorActiveElement());
45835    }
45836    if (element.hasReceiverActiveElement()) {
45837      composeBoolean("receiverActive", element.getReceiverActiveElement());
45838    }
45839    if (element.hasRequest()) {
45840      composeExampleScenarioInstanceContainedInstanceComponent("request", element.getRequest());
45841    }
45842    if (element.hasResponse()) {
45843      composeExampleScenarioInstanceContainedInstanceComponent("response", element.getResponse());
45844    }
45845  }
45846
45847  protected void composeExampleScenarioProcessStepAlternativeComponent(String name, ExampleScenario.ExampleScenarioProcessStepAlternativeComponent element) throws IOException {
45848    if (element != null) {
45849    composeElementAttributes(element);
45850      xml.enter(FHIR_NS, name);
45851      composeExampleScenarioProcessStepAlternativeComponentElements(element);
45852      composeElementClose(element);
45853      xml.exit(FHIR_NS, name);
45854    }
45855  }
45856
45857  protected void composeExampleScenarioProcessStepAlternativeComponentElements(ExampleScenario.ExampleScenarioProcessStepAlternativeComponent element) throws IOException {
45858    composeBackboneElementElements(element);
45859    if (element.hasTitleElement()) {
45860      composeString("title", element.getTitleElement());
45861    }
45862    if (element.hasDescriptionElement()) {
45863      composeMarkdown("description", element.getDescriptionElement());
45864    }
45865    if (element.hasStep()) { 
45866      for (ExampleScenario.ExampleScenarioProcessStepComponent e : element.getStep()) 
45867          composeExampleScenarioProcessStepComponent("step", e);
45868    }
45869  }
45870
45871  protected void composeExplanationOfBenefit(String name, ExplanationOfBenefit element) throws IOException {
45872    if (element != null) {
45873    composeResourceAttributes(element);
45874      xml.enter(FHIR_NS, name);
45875      composeExplanationOfBenefitElements(element);
45876      composeElementClose(element);
45877      xml.exit(FHIR_NS, name);
45878    }
45879  }
45880
45881  protected void composeExplanationOfBenefitElements(ExplanationOfBenefit element) throws IOException {
45882    composeDomainResourceElements(element);
45883    if (element.hasIdentifier()) { 
45884      for (Identifier e : element.getIdentifier()) 
45885          composeIdentifier("identifier", e);
45886    }
45887    if (element.hasTraceNumber()) { 
45888      for (Identifier e : element.getTraceNumber()) 
45889          composeIdentifier("traceNumber", e);
45890    }
45891    if (element.hasStatusElement())
45892      composeEnumeration("status", element.getStatusElement(), new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory());
45893    if (element.hasType()) {
45894      composeCodeableConcept("type", element.getType());
45895    }
45896    if (element.hasSubType()) {
45897      composeCodeableConcept("subType", element.getSubType());
45898    }
45899    if (element.hasUseElement())
45900      composeEnumeration("use", element.getUseElement(), new Enumerations.UseEnumFactory());
45901    if (element.hasPatient()) {
45902      composeReference("patient", element.getPatient());
45903    }
45904    if (element.hasBillablePeriod()) {
45905      composePeriod("billablePeriod", element.getBillablePeriod());
45906    }
45907    if (element.hasCreatedElement()) {
45908      composeDateTime("created", element.getCreatedElement());
45909    }
45910    if (element.hasEnterer()) {
45911      composeReference("enterer", element.getEnterer());
45912    }
45913    if (element.hasInsurer()) {
45914      composeReference("insurer", element.getInsurer());
45915    }
45916    if (element.hasProvider()) {
45917      composeReference("provider", element.getProvider());
45918    }
45919    if (element.hasPriority()) {
45920      composeCodeableConcept("priority", element.getPriority());
45921    }
45922    if (element.hasFundsReserveRequested()) {
45923      composeCodeableConcept("fundsReserveRequested", element.getFundsReserveRequested());
45924    }
45925    if (element.hasFundsReserve()) {
45926      composeCodeableConcept("fundsReserve", element.getFundsReserve());
45927    }
45928    if (element.hasRelated()) { 
45929      for (ExplanationOfBenefit.RelatedClaimComponent e : element.getRelated()) 
45930          composeExplanationOfBenefitRelatedClaimComponent("related", e);
45931    }
45932    if (element.hasPrescription()) {
45933      composeReference("prescription", element.getPrescription());
45934    }
45935    if (element.hasOriginalPrescription()) {
45936      composeReference("originalPrescription", element.getOriginalPrescription());
45937    }
45938    if (element.hasEvent()) { 
45939      for (ExplanationOfBenefit.ExplanationOfBenefitEventComponent e : element.getEvent()) 
45940          composeExplanationOfBenefitEventComponent("event", e);
45941    }
45942    if (element.hasPayee()) {
45943      composeExplanationOfBenefitPayeeComponent("payee", element.getPayee());
45944    }
45945    if (element.hasReferral()) {
45946      composeReference("referral", element.getReferral());
45947    }
45948    if (element.hasEncounter()) { 
45949      for (Reference e : element.getEncounter()) 
45950          composeReference("encounter", e);
45951    }
45952    if (element.hasFacility()) {
45953      composeReference("facility", element.getFacility());
45954    }
45955    if (element.hasClaim()) {
45956      composeReference("claim", element.getClaim());
45957    }
45958    if (element.hasClaimResponse()) {
45959      composeReference("claimResponse", element.getClaimResponse());
45960    }
45961    if (element.hasOutcomeElement())
45962      composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.ClaimProcessingCodesEnumFactory());
45963    if (element.hasDecision()) {
45964      composeCodeableConcept("decision", element.getDecision());
45965    }
45966    if (element.hasDispositionElement()) {
45967      composeString("disposition", element.getDispositionElement());
45968    }
45969    if (element.hasPreAuthRef()) { 
45970      for (StringType e : element.getPreAuthRef()) 
45971          composeString("preAuthRef", e);
45972    }
45973    if (element.hasPreAuthRefPeriod()) { 
45974      for (Period e : element.getPreAuthRefPeriod()) 
45975          composePeriod("preAuthRefPeriod", e);
45976    }
45977    if (element.hasDiagnosisRelatedGroup()) {
45978      composeCodeableConcept("diagnosisRelatedGroup", element.getDiagnosisRelatedGroup());
45979    }
45980    if (element.hasCareTeam()) { 
45981      for (ExplanationOfBenefit.CareTeamComponent e : element.getCareTeam()) 
45982          composeExplanationOfBenefitCareTeamComponent("careTeam", e);
45983    }
45984    if (element.hasSupportingInfo()) { 
45985      for (ExplanationOfBenefit.SupportingInformationComponent e : element.getSupportingInfo()) 
45986          composeExplanationOfBenefitSupportingInformationComponent("supportingInfo", e);
45987    }
45988    if (element.hasDiagnosis()) { 
45989      for (ExplanationOfBenefit.DiagnosisComponent e : element.getDiagnosis()) 
45990          composeExplanationOfBenefitDiagnosisComponent("diagnosis", e);
45991    }
45992    if (element.hasProcedure()) { 
45993      for (ExplanationOfBenefit.ProcedureComponent e : element.getProcedure()) 
45994          composeExplanationOfBenefitProcedureComponent("procedure", e);
45995    }
45996    if (element.hasPrecedenceElement()) {
45997      composePositiveInt("precedence", element.getPrecedenceElement());
45998    }
45999    if (element.hasInsurance()) { 
46000      for (ExplanationOfBenefit.InsuranceComponent e : element.getInsurance()) 
46001          composeExplanationOfBenefitInsuranceComponent("insurance", e);
46002    }
46003    if (element.hasAccident()) {
46004      composeExplanationOfBenefitAccidentComponent("accident", element.getAccident());
46005    }
46006    if (element.hasPatientPaid()) {
46007      composeMoney("patientPaid", element.getPatientPaid());
46008    }
46009    if (element.hasItem()) { 
46010      for (ExplanationOfBenefit.ItemComponent e : element.getItem()) 
46011          composeExplanationOfBenefitItemComponent("item", e);
46012    }
46013    if (element.hasAddItem()) { 
46014      for (ExplanationOfBenefit.AddedItemComponent e : element.getAddItem()) 
46015          composeExplanationOfBenefitAddedItemComponent("addItem", e);
46016    }
46017    if (element.hasAdjudication()) { 
46018      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
46019          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
46020    }
46021    if (element.hasTotal()) { 
46022      for (ExplanationOfBenefit.TotalComponent e : element.getTotal()) 
46023          composeExplanationOfBenefitTotalComponent("total", e);
46024    }
46025    if (element.hasPayment()) {
46026      composeExplanationOfBenefitPaymentComponent("payment", element.getPayment());
46027    }
46028    if (element.hasFormCode()) {
46029      composeCodeableConcept("formCode", element.getFormCode());
46030    }
46031    if (element.hasForm()) {
46032      composeAttachment("form", element.getForm());
46033    }
46034    if (element.hasProcessNote()) { 
46035      for (ExplanationOfBenefit.NoteComponent e : element.getProcessNote()) 
46036          composeExplanationOfBenefitNoteComponent("processNote", e);
46037    }
46038    if (element.hasBenefitPeriod()) {
46039      composePeriod("benefitPeriod", element.getBenefitPeriod());
46040    }
46041    if (element.hasBenefitBalance()) { 
46042      for (ExplanationOfBenefit.BenefitBalanceComponent e : element.getBenefitBalance()) 
46043          composeExplanationOfBenefitBenefitBalanceComponent("benefitBalance", e);
46044    }
46045  }
46046
46047  protected void composeExplanationOfBenefitRelatedClaimComponent(String name, ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
46048    if (element != null) {
46049    composeElementAttributes(element);
46050      xml.enter(FHIR_NS, name);
46051      composeExplanationOfBenefitRelatedClaimComponentElements(element);
46052      composeElementClose(element);
46053      xml.exit(FHIR_NS, name);
46054    }
46055  }
46056
46057  protected void composeExplanationOfBenefitRelatedClaimComponentElements(ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
46058    composeBackboneElementElements(element);
46059    if (element.hasClaim()) {
46060      composeReference("claim", element.getClaim());
46061    }
46062    if (element.hasRelationship()) {
46063      composeCodeableConcept("relationship", element.getRelationship());
46064    }
46065    if (element.hasReference()) {
46066      composeIdentifier("reference", element.getReference());
46067    }
46068  }
46069
46070  protected void composeExplanationOfBenefitEventComponent(String name, ExplanationOfBenefit.ExplanationOfBenefitEventComponent element) throws IOException {
46071    if (element != null) {
46072    composeElementAttributes(element);
46073      xml.enter(FHIR_NS, name);
46074      composeExplanationOfBenefitEventComponentElements(element);
46075      composeElementClose(element);
46076      xml.exit(FHIR_NS, name);
46077    }
46078  }
46079
46080  protected void composeExplanationOfBenefitEventComponentElements(ExplanationOfBenefit.ExplanationOfBenefitEventComponent element) throws IOException {
46081    composeBackboneElementElements(element);
46082    if (element.hasType()) {
46083      composeCodeableConcept("type", element.getType());
46084    }
46085    if (element.hasWhen()) {
46086      composeType("when", element.getWhen());
46087    }  }
46088
46089  protected void composeExplanationOfBenefitPayeeComponent(String name, ExplanationOfBenefit.PayeeComponent element) throws IOException {
46090    if (element != null) {
46091    composeElementAttributes(element);
46092      xml.enter(FHIR_NS, name);
46093      composeExplanationOfBenefitPayeeComponentElements(element);
46094      composeElementClose(element);
46095      xml.exit(FHIR_NS, name);
46096    }
46097  }
46098
46099  protected void composeExplanationOfBenefitPayeeComponentElements(ExplanationOfBenefit.PayeeComponent element) throws IOException {
46100    composeBackboneElementElements(element);
46101    if (element.hasType()) {
46102      composeCodeableConcept("type", element.getType());
46103    }
46104    if (element.hasParty()) {
46105      composeReference("party", element.getParty());
46106    }
46107  }
46108
46109  protected void composeExplanationOfBenefitCareTeamComponent(String name, ExplanationOfBenefit.CareTeamComponent element) throws IOException {
46110    if (element != null) {
46111    composeElementAttributes(element);
46112      xml.enter(FHIR_NS, name);
46113      composeExplanationOfBenefitCareTeamComponentElements(element);
46114      composeElementClose(element);
46115      xml.exit(FHIR_NS, name);
46116    }
46117  }
46118
46119  protected void composeExplanationOfBenefitCareTeamComponentElements(ExplanationOfBenefit.CareTeamComponent element) throws IOException {
46120    composeBackboneElementElements(element);
46121    if (element.hasSequenceElement()) {
46122      composePositiveInt("sequence", element.getSequenceElement());
46123    }
46124    if (element.hasProvider()) {
46125      composeReference("provider", element.getProvider());
46126    }
46127    if (element.hasResponsibleElement()) {
46128      composeBoolean("responsible", element.getResponsibleElement());
46129    }
46130    if (element.hasRole()) {
46131      composeCodeableConcept("role", element.getRole());
46132    }
46133    if (element.hasSpecialty()) {
46134      composeCodeableConcept("specialty", element.getSpecialty());
46135    }
46136  }
46137
46138  protected void composeExplanationOfBenefitSupportingInformationComponent(String name, ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
46139    if (element != null) {
46140    composeElementAttributes(element);
46141      xml.enter(FHIR_NS, name);
46142      composeExplanationOfBenefitSupportingInformationComponentElements(element);
46143      composeElementClose(element);
46144      xml.exit(FHIR_NS, name);
46145    }
46146  }
46147
46148  protected void composeExplanationOfBenefitSupportingInformationComponentElements(ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
46149    composeBackboneElementElements(element);
46150    if (element.hasSequenceElement()) {
46151      composePositiveInt("sequence", element.getSequenceElement());
46152    }
46153    if (element.hasCategory()) {
46154      composeCodeableConcept("category", element.getCategory());
46155    }
46156    if (element.hasCode()) {
46157      composeCodeableConcept("code", element.getCode());
46158    }
46159    if (element.hasTiming()) {
46160      composeType("timing", element.getTiming());
46161    }    if (element.hasValue()) {
46162      composeType("value", element.getValue());
46163    }    if (element.hasReason()) {
46164      composeCoding("reason", element.getReason());
46165    }
46166  }
46167
46168  protected void composeExplanationOfBenefitDiagnosisComponent(String name, ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
46169    if (element != null) {
46170    composeElementAttributes(element);
46171      xml.enter(FHIR_NS, name);
46172      composeExplanationOfBenefitDiagnosisComponentElements(element);
46173      composeElementClose(element);
46174      xml.exit(FHIR_NS, name);
46175    }
46176  }
46177
46178  protected void composeExplanationOfBenefitDiagnosisComponentElements(ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
46179    composeBackboneElementElements(element);
46180    if (element.hasSequenceElement()) {
46181      composePositiveInt("sequence", element.getSequenceElement());
46182    }
46183    if (element.hasDiagnosis()) {
46184      composeType("diagnosis", element.getDiagnosis());
46185    }    if (element.hasType()) { 
46186      for (CodeableConcept e : element.getType()) 
46187          composeCodeableConcept("type", e);
46188    }
46189    if (element.hasOnAdmission()) {
46190      composeCodeableConcept("onAdmission", element.getOnAdmission());
46191    }
46192  }
46193
46194  protected void composeExplanationOfBenefitProcedureComponent(String name, ExplanationOfBenefit.ProcedureComponent element) throws IOException {
46195    if (element != null) {
46196    composeElementAttributes(element);
46197      xml.enter(FHIR_NS, name);
46198      composeExplanationOfBenefitProcedureComponentElements(element);
46199      composeElementClose(element);
46200      xml.exit(FHIR_NS, name);
46201    }
46202  }
46203
46204  protected void composeExplanationOfBenefitProcedureComponentElements(ExplanationOfBenefit.ProcedureComponent element) throws IOException {
46205    composeBackboneElementElements(element);
46206    if (element.hasSequenceElement()) {
46207      composePositiveInt("sequence", element.getSequenceElement());
46208    }
46209    if (element.hasType()) { 
46210      for (CodeableConcept e : element.getType()) 
46211          composeCodeableConcept("type", e);
46212    }
46213    if (element.hasDateElement()) {
46214      composeDateTime("date", element.getDateElement());
46215    }
46216    if (element.hasProcedure()) {
46217      composeType("procedure", element.getProcedure());
46218    }    if (element.hasUdi()) { 
46219      for (Reference e : element.getUdi()) 
46220          composeReference("udi", e);
46221    }
46222  }
46223
46224  protected void composeExplanationOfBenefitInsuranceComponent(String name, ExplanationOfBenefit.InsuranceComponent element) throws IOException {
46225    if (element != null) {
46226    composeElementAttributes(element);
46227      xml.enter(FHIR_NS, name);
46228      composeExplanationOfBenefitInsuranceComponentElements(element);
46229      composeElementClose(element);
46230      xml.exit(FHIR_NS, name);
46231    }
46232  }
46233
46234  protected void composeExplanationOfBenefitInsuranceComponentElements(ExplanationOfBenefit.InsuranceComponent element) throws IOException {
46235    composeBackboneElementElements(element);
46236    if (element.hasFocalElement()) {
46237      composeBoolean("focal", element.getFocalElement());
46238    }
46239    if (element.hasCoverage()) {
46240      composeReference("coverage", element.getCoverage());
46241    }
46242    if (element.hasPreAuthRef()) { 
46243      for (StringType e : element.getPreAuthRef()) 
46244          composeString("preAuthRef", e);
46245    }
46246  }
46247
46248  protected void composeExplanationOfBenefitAccidentComponent(String name, ExplanationOfBenefit.AccidentComponent element) throws IOException {
46249    if (element != null) {
46250    composeElementAttributes(element);
46251      xml.enter(FHIR_NS, name);
46252      composeExplanationOfBenefitAccidentComponentElements(element);
46253      composeElementClose(element);
46254      xml.exit(FHIR_NS, name);
46255    }
46256  }
46257
46258  protected void composeExplanationOfBenefitAccidentComponentElements(ExplanationOfBenefit.AccidentComponent element) throws IOException {
46259    composeBackboneElementElements(element);
46260    if (element.hasDateElement()) {
46261      composeDate("date", element.getDateElement());
46262    }
46263    if (element.hasType()) {
46264      composeCodeableConcept("type", element.getType());
46265    }
46266    if (element.hasLocation()) {
46267      composeType("location", element.getLocation());
46268    }  }
46269
46270  protected void composeExplanationOfBenefitItemComponent(String name, ExplanationOfBenefit.ItemComponent element) throws IOException {
46271    if (element != null) {
46272    composeElementAttributes(element);
46273      xml.enter(FHIR_NS, name);
46274      composeExplanationOfBenefitItemComponentElements(element);
46275      composeElementClose(element);
46276      xml.exit(FHIR_NS, name);
46277    }
46278  }
46279
46280  protected void composeExplanationOfBenefitItemComponentElements(ExplanationOfBenefit.ItemComponent element) throws IOException {
46281    composeBackboneElementElements(element);
46282    if (element.hasSequenceElement()) {
46283      composePositiveInt("sequence", element.getSequenceElement());
46284    }
46285    if (element.hasCareTeamSequence()) { 
46286      for (PositiveIntType e : element.getCareTeamSequence()) 
46287          composePositiveInt("careTeamSequence", e);
46288    }
46289    if (element.hasDiagnosisSequence()) { 
46290      for (PositiveIntType e : element.getDiagnosisSequence()) 
46291          composePositiveInt("diagnosisSequence", e);
46292    }
46293    if (element.hasProcedureSequence()) { 
46294      for (PositiveIntType e : element.getProcedureSequence()) 
46295          composePositiveInt("procedureSequence", e);
46296    }
46297    if (element.hasInformationSequence()) { 
46298      for (PositiveIntType e : element.getInformationSequence()) 
46299          composePositiveInt("informationSequence", e);
46300    }
46301    if (element.hasTraceNumber()) { 
46302      for (Identifier e : element.getTraceNumber()) 
46303          composeIdentifier("traceNumber", e);
46304    }
46305    if (element.hasRevenue()) {
46306      composeCodeableConcept("revenue", element.getRevenue());
46307    }
46308    if (element.hasCategory()) {
46309      composeCodeableConcept("category", element.getCategory());
46310    }
46311    if (element.hasProductOrService()) {
46312      composeCodeableConcept("productOrService", element.getProductOrService());
46313    }
46314    if (element.hasProductOrServiceEnd()) {
46315      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
46316    }
46317    if (element.hasRequest()) { 
46318      for (Reference e : element.getRequest()) 
46319          composeReference("request", e);
46320    }
46321    if (element.hasModifier()) { 
46322      for (CodeableConcept e : element.getModifier()) 
46323          composeCodeableConcept("modifier", e);
46324    }
46325    if (element.hasProgramCode()) { 
46326      for (CodeableConcept e : element.getProgramCode()) 
46327          composeCodeableConcept("programCode", e);
46328    }
46329    if (element.hasServiced()) {
46330      composeType("serviced", element.getServiced());
46331    }    if (element.hasLocation()) {
46332      composeType("location", element.getLocation());
46333    }    if (element.hasPatientPaid()) {
46334      composeMoney("patientPaid", element.getPatientPaid());
46335    }
46336    if (element.hasQuantity()) {
46337      composeQuantity("quantity", element.getQuantity());
46338    }
46339    if (element.hasUnitPrice()) {
46340      composeMoney("unitPrice", element.getUnitPrice());
46341    }
46342    if (element.hasFactorElement()) {
46343      composeDecimal("factor", element.getFactorElement());
46344    }
46345    if (element.hasTax()) {
46346      composeMoney("tax", element.getTax());
46347    }
46348    if (element.hasNet()) {
46349      composeMoney("net", element.getNet());
46350    }
46351    if (element.hasUdi()) { 
46352      for (Reference e : element.getUdi()) 
46353          composeReference("udi", e);
46354    }
46355    if (element.hasBodySite()) { 
46356      for (ExplanationOfBenefit.ItemBodySiteComponent e : element.getBodySite()) 
46357          composeExplanationOfBenefitItemBodySiteComponent("bodySite", e);
46358    }
46359    if (element.hasEncounter()) { 
46360      for (Reference e : element.getEncounter()) 
46361          composeReference("encounter", e);
46362    }
46363    if (element.hasNoteNumber()) { 
46364      for (PositiveIntType e : element.getNoteNumber()) 
46365          composePositiveInt("noteNumber", e);
46366    }
46367    if (element.hasReviewOutcome()) {
46368      composeExplanationOfBenefitItemReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
46369    }
46370    if (element.hasAdjudication()) { 
46371      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
46372          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
46373    }
46374    if (element.hasDetail()) { 
46375      for (ExplanationOfBenefit.DetailComponent e : element.getDetail()) 
46376          composeExplanationOfBenefitDetailComponent("detail", e);
46377    }
46378  }
46379
46380  protected void composeExplanationOfBenefitItemBodySiteComponent(String name, ExplanationOfBenefit.ItemBodySiteComponent element) throws IOException {
46381    if (element != null) {
46382    composeElementAttributes(element);
46383      xml.enter(FHIR_NS, name);
46384      composeExplanationOfBenefitItemBodySiteComponentElements(element);
46385      composeElementClose(element);
46386      xml.exit(FHIR_NS, name);
46387    }
46388  }
46389
46390  protected void composeExplanationOfBenefitItemBodySiteComponentElements(ExplanationOfBenefit.ItemBodySiteComponent element) throws IOException {
46391    composeBackboneElementElements(element);
46392    if (element.hasSite()) { 
46393      for (CodeableReference e : element.getSite()) 
46394          composeCodeableReference("site", e);
46395    }
46396    if (element.hasSubSite()) { 
46397      for (CodeableConcept e : element.getSubSite()) 
46398          composeCodeableConcept("subSite", e);
46399    }
46400  }
46401
46402  protected void composeExplanationOfBenefitItemReviewOutcomeComponent(String name, ExplanationOfBenefit.ItemReviewOutcomeComponent element) throws IOException {
46403    if (element != null) {
46404    composeElementAttributes(element);
46405      xml.enter(FHIR_NS, name);
46406      composeExplanationOfBenefitItemReviewOutcomeComponentElements(element);
46407      composeElementClose(element);
46408      xml.exit(FHIR_NS, name);
46409    }
46410  }
46411
46412  protected void composeExplanationOfBenefitItemReviewOutcomeComponentElements(ExplanationOfBenefit.ItemReviewOutcomeComponent element) throws IOException {
46413    composeBackboneElementElements(element);
46414    if (element.hasDecision()) {
46415      composeCodeableConcept("decision", element.getDecision());
46416    }
46417    if (element.hasReason()) { 
46418      for (CodeableConcept e : element.getReason()) 
46419          composeCodeableConcept("reason", e);
46420    }
46421    if (element.hasPreAuthRefElement()) {
46422      composeString("preAuthRef", element.getPreAuthRefElement());
46423    }
46424    if (element.hasPreAuthPeriod()) {
46425      composePeriod("preAuthPeriod", element.getPreAuthPeriod());
46426    }
46427  }
46428
46429  protected void composeExplanationOfBenefitAdjudicationComponent(String name, ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
46430    if (element != null) {
46431    composeElementAttributes(element);
46432      xml.enter(FHIR_NS, name);
46433      composeExplanationOfBenefitAdjudicationComponentElements(element);
46434      composeElementClose(element);
46435      xml.exit(FHIR_NS, name);
46436    }
46437  }
46438
46439  protected void composeExplanationOfBenefitAdjudicationComponentElements(ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
46440    composeBackboneElementElements(element);
46441    if (element.hasCategory()) {
46442      composeCodeableConcept("category", element.getCategory());
46443    }
46444    if (element.hasReason()) {
46445      composeCodeableConcept("reason", element.getReason());
46446    }
46447    if (element.hasAmount()) {
46448      composeMoney("amount", element.getAmount());
46449    }
46450    if (element.hasQuantity()) {
46451      composeQuantity("quantity", element.getQuantity());
46452    }
46453  }
46454
46455  protected void composeExplanationOfBenefitDetailComponent(String name, ExplanationOfBenefit.DetailComponent element) throws IOException {
46456    if (element != null) {
46457    composeElementAttributes(element);
46458      xml.enter(FHIR_NS, name);
46459      composeExplanationOfBenefitDetailComponentElements(element);
46460      composeElementClose(element);
46461      xml.exit(FHIR_NS, name);
46462    }
46463  }
46464
46465  protected void composeExplanationOfBenefitDetailComponentElements(ExplanationOfBenefit.DetailComponent element) throws IOException {
46466    composeBackboneElementElements(element);
46467    if (element.hasSequenceElement()) {
46468      composePositiveInt("sequence", element.getSequenceElement());
46469    }
46470    if (element.hasTraceNumber()) { 
46471      for (Identifier e : element.getTraceNumber()) 
46472          composeIdentifier("traceNumber", e);
46473    }
46474    if (element.hasRevenue()) {
46475      composeCodeableConcept("revenue", element.getRevenue());
46476    }
46477    if (element.hasCategory()) {
46478      composeCodeableConcept("category", element.getCategory());
46479    }
46480    if (element.hasProductOrService()) {
46481      composeCodeableConcept("productOrService", element.getProductOrService());
46482    }
46483    if (element.hasProductOrServiceEnd()) {
46484      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
46485    }
46486    if (element.hasModifier()) { 
46487      for (CodeableConcept e : element.getModifier()) 
46488          composeCodeableConcept("modifier", e);
46489    }
46490    if (element.hasProgramCode()) { 
46491      for (CodeableConcept e : element.getProgramCode()) 
46492          composeCodeableConcept("programCode", e);
46493    }
46494    if (element.hasPatientPaid()) {
46495      composeMoney("patientPaid", element.getPatientPaid());
46496    }
46497    if (element.hasQuantity()) {
46498      composeQuantity("quantity", element.getQuantity());
46499    }
46500    if (element.hasUnitPrice()) {
46501      composeMoney("unitPrice", element.getUnitPrice());
46502    }
46503    if (element.hasFactorElement()) {
46504      composeDecimal("factor", element.getFactorElement());
46505    }
46506    if (element.hasTax()) {
46507      composeMoney("tax", element.getTax());
46508    }
46509    if (element.hasNet()) {
46510      composeMoney("net", element.getNet());
46511    }
46512    if (element.hasUdi()) { 
46513      for (Reference e : element.getUdi()) 
46514          composeReference("udi", e);
46515    }
46516    if (element.hasNoteNumber()) { 
46517      for (PositiveIntType e : element.getNoteNumber()) 
46518          composePositiveInt("noteNumber", e);
46519    }
46520    if (element.hasReviewOutcome()) {
46521      composeExplanationOfBenefitItemReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
46522    }
46523    if (element.hasAdjudication()) { 
46524      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
46525          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
46526    }
46527    if (element.hasSubDetail()) { 
46528      for (ExplanationOfBenefit.SubDetailComponent e : element.getSubDetail()) 
46529          composeExplanationOfBenefitSubDetailComponent("subDetail", e);
46530    }
46531  }
46532
46533  protected void composeExplanationOfBenefitSubDetailComponent(String name, ExplanationOfBenefit.SubDetailComponent element) throws IOException {
46534    if (element != null) {
46535    composeElementAttributes(element);
46536      xml.enter(FHIR_NS, name);
46537      composeExplanationOfBenefitSubDetailComponentElements(element);
46538      composeElementClose(element);
46539      xml.exit(FHIR_NS, name);
46540    }
46541  }
46542
46543  protected void composeExplanationOfBenefitSubDetailComponentElements(ExplanationOfBenefit.SubDetailComponent element) throws IOException {
46544    composeBackboneElementElements(element);
46545    if (element.hasSequenceElement()) {
46546      composePositiveInt("sequence", element.getSequenceElement());
46547    }
46548    if (element.hasTraceNumber()) { 
46549      for (Identifier e : element.getTraceNumber()) 
46550          composeIdentifier("traceNumber", e);
46551    }
46552    if (element.hasRevenue()) {
46553      composeCodeableConcept("revenue", element.getRevenue());
46554    }
46555    if (element.hasCategory()) {
46556      composeCodeableConcept("category", element.getCategory());
46557    }
46558    if (element.hasProductOrService()) {
46559      composeCodeableConcept("productOrService", element.getProductOrService());
46560    }
46561    if (element.hasProductOrServiceEnd()) {
46562      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
46563    }
46564    if (element.hasModifier()) { 
46565      for (CodeableConcept e : element.getModifier()) 
46566          composeCodeableConcept("modifier", e);
46567    }
46568    if (element.hasProgramCode()) { 
46569      for (CodeableConcept e : element.getProgramCode()) 
46570          composeCodeableConcept("programCode", e);
46571    }
46572    if (element.hasPatientPaid()) {
46573      composeMoney("patientPaid", element.getPatientPaid());
46574    }
46575    if (element.hasQuantity()) {
46576      composeQuantity("quantity", element.getQuantity());
46577    }
46578    if (element.hasUnitPrice()) {
46579      composeMoney("unitPrice", element.getUnitPrice());
46580    }
46581    if (element.hasFactorElement()) {
46582      composeDecimal("factor", element.getFactorElement());
46583    }
46584    if (element.hasTax()) {
46585      composeMoney("tax", element.getTax());
46586    }
46587    if (element.hasNet()) {
46588      composeMoney("net", element.getNet());
46589    }
46590    if (element.hasUdi()) { 
46591      for (Reference e : element.getUdi()) 
46592          composeReference("udi", e);
46593    }
46594    if (element.hasNoteNumber()) { 
46595      for (PositiveIntType e : element.getNoteNumber()) 
46596          composePositiveInt("noteNumber", e);
46597    }
46598    if (element.hasReviewOutcome()) {
46599      composeExplanationOfBenefitItemReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
46600    }
46601    if (element.hasAdjudication()) { 
46602      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
46603          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
46604    }
46605  }
46606
46607  protected void composeExplanationOfBenefitAddedItemComponent(String name, ExplanationOfBenefit.AddedItemComponent element) throws IOException {
46608    if (element != null) {
46609    composeElementAttributes(element);
46610      xml.enter(FHIR_NS, name);
46611      composeExplanationOfBenefitAddedItemComponentElements(element);
46612      composeElementClose(element);
46613      xml.exit(FHIR_NS, name);
46614    }
46615  }
46616
46617  protected void composeExplanationOfBenefitAddedItemComponentElements(ExplanationOfBenefit.AddedItemComponent element) throws IOException {
46618    composeBackboneElementElements(element);
46619    if (element.hasItemSequence()) { 
46620      for (PositiveIntType e : element.getItemSequence()) 
46621          composePositiveInt("itemSequence", e);
46622    }
46623    if (element.hasDetailSequence()) { 
46624      for (PositiveIntType e : element.getDetailSequence()) 
46625          composePositiveInt("detailSequence", e);
46626    }
46627    if (element.hasSubDetailSequence()) { 
46628      for (PositiveIntType e : element.getSubDetailSequence()) 
46629          composePositiveInt("subDetailSequence", e);
46630    }
46631    if (element.hasTraceNumber()) { 
46632      for (Identifier e : element.getTraceNumber()) 
46633          composeIdentifier("traceNumber", e);
46634    }
46635    if (element.hasProvider()) { 
46636      for (Reference e : element.getProvider()) 
46637          composeReference("provider", e);
46638    }
46639    if (element.hasRevenue()) {
46640      composeCodeableConcept("revenue", element.getRevenue());
46641    }
46642    if (element.hasProductOrService()) {
46643      composeCodeableConcept("productOrService", element.getProductOrService());
46644    }
46645    if (element.hasProductOrServiceEnd()) {
46646      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
46647    }
46648    if (element.hasRequest()) { 
46649      for (Reference e : element.getRequest()) 
46650          composeReference("request", e);
46651    }
46652    if (element.hasModifier()) { 
46653      for (CodeableConcept e : element.getModifier()) 
46654          composeCodeableConcept("modifier", e);
46655    }
46656    if (element.hasProgramCode()) { 
46657      for (CodeableConcept e : element.getProgramCode()) 
46658          composeCodeableConcept("programCode", e);
46659    }
46660    if (element.hasServiced()) {
46661      composeType("serviced", element.getServiced());
46662    }    if (element.hasLocation()) {
46663      composeType("location", element.getLocation());
46664    }    if (element.hasPatientPaid()) {
46665      composeMoney("patientPaid", element.getPatientPaid());
46666    }
46667    if (element.hasQuantity()) {
46668      composeQuantity("quantity", element.getQuantity());
46669    }
46670    if (element.hasUnitPrice()) {
46671      composeMoney("unitPrice", element.getUnitPrice());
46672    }
46673    if (element.hasFactorElement()) {
46674      composeDecimal("factor", element.getFactorElement());
46675    }
46676    if (element.hasTax()) {
46677      composeMoney("tax", element.getTax());
46678    }
46679    if (element.hasNet()) {
46680      composeMoney("net", element.getNet());
46681    }
46682    if (element.hasBodySite()) { 
46683      for (ExplanationOfBenefit.AddedItemBodySiteComponent e : element.getBodySite()) 
46684          composeExplanationOfBenefitAddedItemBodySiteComponent("bodySite", e);
46685    }
46686    if (element.hasNoteNumber()) { 
46687      for (PositiveIntType e : element.getNoteNumber()) 
46688          composePositiveInt("noteNumber", e);
46689    }
46690    if (element.hasReviewOutcome()) {
46691      composeExplanationOfBenefitItemReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
46692    }
46693    if (element.hasAdjudication()) { 
46694      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
46695          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
46696    }
46697    if (element.hasDetail()) { 
46698      for (ExplanationOfBenefit.AddedItemDetailComponent e : element.getDetail()) 
46699          composeExplanationOfBenefitAddedItemDetailComponent("detail", e);
46700    }
46701  }
46702
46703  protected void composeExplanationOfBenefitAddedItemBodySiteComponent(String name, ExplanationOfBenefit.AddedItemBodySiteComponent element) throws IOException {
46704    if (element != null) {
46705    composeElementAttributes(element);
46706      xml.enter(FHIR_NS, name);
46707      composeExplanationOfBenefitAddedItemBodySiteComponentElements(element);
46708      composeElementClose(element);
46709      xml.exit(FHIR_NS, name);
46710    }
46711  }
46712
46713  protected void composeExplanationOfBenefitAddedItemBodySiteComponentElements(ExplanationOfBenefit.AddedItemBodySiteComponent element) throws IOException {
46714    composeBackboneElementElements(element);
46715    if (element.hasSite()) { 
46716      for (CodeableReference e : element.getSite()) 
46717          composeCodeableReference("site", e);
46718    }
46719    if (element.hasSubSite()) { 
46720      for (CodeableConcept e : element.getSubSite()) 
46721          composeCodeableConcept("subSite", e);
46722    }
46723  }
46724
46725  protected void composeExplanationOfBenefitAddedItemDetailComponent(String name, ExplanationOfBenefit.AddedItemDetailComponent element) throws IOException {
46726    if (element != null) {
46727    composeElementAttributes(element);
46728      xml.enter(FHIR_NS, name);
46729      composeExplanationOfBenefitAddedItemDetailComponentElements(element);
46730      composeElementClose(element);
46731      xml.exit(FHIR_NS, name);
46732    }
46733  }
46734
46735  protected void composeExplanationOfBenefitAddedItemDetailComponentElements(ExplanationOfBenefit.AddedItemDetailComponent element) throws IOException {
46736    composeBackboneElementElements(element);
46737    if (element.hasTraceNumber()) { 
46738      for (Identifier e : element.getTraceNumber()) 
46739          composeIdentifier("traceNumber", e);
46740    }
46741    if (element.hasRevenue()) {
46742      composeCodeableConcept("revenue", element.getRevenue());
46743    }
46744    if (element.hasProductOrService()) {
46745      composeCodeableConcept("productOrService", element.getProductOrService());
46746    }
46747    if (element.hasProductOrServiceEnd()) {
46748      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
46749    }
46750    if (element.hasModifier()) { 
46751      for (CodeableConcept e : element.getModifier()) 
46752          composeCodeableConcept("modifier", e);
46753    }
46754    if (element.hasPatientPaid()) {
46755      composeMoney("patientPaid", element.getPatientPaid());
46756    }
46757    if (element.hasQuantity()) {
46758      composeQuantity("quantity", element.getQuantity());
46759    }
46760    if (element.hasUnitPrice()) {
46761      composeMoney("unitPrice", element.getUnitPrice());
46762    }
46763    if (element.hasFactorElement()) {
46764      composeDecimal("factor", element.getFactorElement());
46765    }
46766    if (element.hasTax()) {
46767      composeMoney("tax", element.getTax());
46768    }
46769    if (element.hasNet()) {
46770      composeMoney("net", element.getNet());
46771    }
46772    if (element.hasNoteNumber()) { 
46773      for (PositiveIntType e : element.getNoteNumber()) 
46774          composePositiveInt("noteNumber", e);
46775    }
46776    if (element.hasReviewOutcome()) {
46777      composeExplanationOfBenefitItemReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
46778    }
46779    if (element.hasAdjudication()) { 
46780      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
46781          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
46782    }
46783    if (element.hasSubDetail()) { 
46784      for (ExplanationOfBenefit.AddedItemDetailSubDetailComponent e : element.getSubDetail()) 
46785          composeExplanationOfBenefitAddedItemDetailSubDetailComponent("subDetail", e);
46786    }
46787  }
46788
46789  protected void composeExplanationOfBenefitAddedItemDetailSubDetailComponent(String name, ExplanationOfBenefit.AddedItemDetailSubDetailComponent element) throws IOException {
46790    if (element != null) {
46791    composeElementAttributes(element);
46792      xml.enter(FHIR_NS, name);
46793      composeExplanationOfBenefitAddedItemDetailSubDetailComponentElements(element);
46794      composeElementClose(element);
46795      xml.exit(FHIR_NS, name);
46796    }
46797  }
46798
46799  protected void composeExplanationOfBenefitAddedItemDetailSubDetailComponentElements(ExplanationOfBenefit.AddedItemDetailSubDetailComponent element) throws IOException {
46800    composeBackboneElementElements(element);
46801    if (element.hasTraceNumber()) { 
46802      for (Identifier e : element.getTraceNumber()) 
46803          composeIdentifier("traceNumber", e);
46804    }
46805    if (element.hasRevenue()) {
46806      composeCodeableConcept("revenue", element.getRevenue());
46807    }
46808    if (element.hasProductOrService()) {
46809      composeCodeableConcept("productOrService", element.getProductOrService());
46810    }
46811    if (element.hasProductOrServiceEnd()) {
46812      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
46813    }
46814    if (element.hasModifier()) { 
46815      for (CodeableConcept e : element.getModifier()) 
46816          composeCodeableConcept("modifier", e);
46817    }
46818    if (element.hasPatientPaid()) {
46819      composeMoney("patientPaid", element.getPatientPaid());
46820    }
46821    if (element.hasQuantity()) {
46822      composeQuantity("quantity", element.getQuantity());
46823    }
46824    if (element.hasUnitPrice()) {
46825      composeMoney("unitPrice", element.getUnitPrice());
46826    }
46827    if (element.hasFactorElement()) {
46828      composeDecimal("factor", element.getFactorElement());
46829    }
46830    if (element.hasTax()) {
46831      composeMoney("tax", element.getTax());
46832    }
46833    if (element.hasNet()) {
46834      composeMoney("net", element.getNet());
46835    }
46836    if (element.hasNoteNumber()) { 
46837      for (PositiveIntType e : element.getNoteNumber()) 
46838          composePositiveInt("noteNumber", e);
46839    }
46840    if (element.hasReviewOutcome()) {
46841      composeExplanationOfBenefitItemReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
46842    }
46843    if (element.hasAdjudication()) { 
46844      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
46845          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
46846    }
46847  }
46848
46849  protected void composeExplanationOfBenefitTotalComponent(String name, ExplanationOfBenefit.TotalComponent element) throws IOException {
46850    if (element != null) {
46851    composeElementAttributes(element);
46852      xml.enter(FHIR_NS, name);
46853      composeExplanationOfBenefitTotalComponentElements(element);
46854      composeElementClose(element);
46855      xml.exit(FHIR_NS, name);
46856    }
46857  }
46858
46859  protected void composeExplanationOfBenefitTotalComponentElements(ExplanationOfBenefit.TotalComponent element) throws IOException {
46860    composeBackboneElementElements(element);
46861    if (element.hasCategory()) {
46862      composeCodeableConcept("category", element.getCategory());
46863    }
46864    if (element.hasAmount()) {
46865      composeMoney("amount", element.getAmount());
46866    }
46867  }
46868
46869  protected void composeExplanationOfBenefitPaymentComponent(String name, ExplanationOfBenefit.PaymentComponent element) throws IOException {
46870    if (element != null) {
46871    composeElementAttributes(element);
46872      xml.enter(FHIR_NS, name);
46873      composeExplanationOfBenefitPaymentComponentElements(element);
46874      composeElementClose(element);
46875      xml.exit(FHIR_NS, name);
46876    }
46877  }
46878
46879  protected void composeExplanationOfBenefitPaymentComponentElements(ExplanationOfBenefit.PaymentComponent element) throws IOException {
46880    composeBackboneElementElements(element);
46881    if (element.hasType()) {
46882      composeCodeableConcept("type", element.getType());
46883    }
46884    if (element.hasAdjustment()) {
46885      composeMoney("adjustment", element.getAdjustment());
46886    }
46887    if (element.hasAdjustmentReason()) {
46888      composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
46889    }
46890    if (element.hasDateElement()) {
46891      composeDate("date", element.getDateElement());
46892    }
46893    if (element.hasAmount()) {
46894      composeMoney("amount", element.getAmount());
46895    }
46896    if (element.hasIdentifier()) {
46897      composeIdentifier("identifier", element.getIdentifier());
46898    }
46899  }
46900
46901  protected void composeExplanationOfBenefitNoteComponent(String name, ExplanationOfBenefit.NoteComponent element) throws IOException {
46902    if (element != null) {
46903    composeElementAttributes(element);
46904      xml.enter(FHIR_NS, name);
46905      composeExplanationOfBenefitNoteComponentElements(element);
46906      composeElementClose(element);
46907      xml.exit(FHIR_NS, name);
46908    }
46909  }
46910
46911  protected void composeExplanationOfBenefitNoteComponentElements(ExplanationOfBenefit.NoteComponent element) throws IOException {
46912    composeBackboneElementElements(element);
46913    if (element.hasNumberElement()) {
46914      composePositiveInt("number", element.getNumberElement());
46915    }
46916    if (element.hasType()) {
46917      composeCodeableConcept("type", element.getType());
46918    }
46919    if (element.hasTextElement()) {
46920      composeString("text", element.getTextElement());
46921    }
46922    if (element.hasLanguage()) {
46923      composeCodeableConcept("language", element.getLanguage());
46924    }
46925  }
46926
46927  protected void composeExplanationOfBenefitBenefitBalanceComponent(String name, ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
46928    if (element != null) {
46929    composeElementAttributes(element);
46930      xml.enter(FHIR_NS, name);
46931      composeExplanationOfBenefitBenefitBalanceComponentElements(element);
46932      composeElementClose(element);
46933      xml.exit(FHIR_NS, name);
46934    }
46935  }
46936
46937  protected void composeExplanationOfBenefitBenefitBalanceComponentElements(ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
46938    composeBackboneElementElements(element);
46939    if (element.hasCategory()) {
46940      composeCodeableConcept("category", element.getCategory());
46941    }
46942    if (element.hasExcludedElement()) {
46943      composeBoolean("excluded", element.getExcludedElement());
46944    }
46945    if (element.hasNameElement()) {
46946      composeString("name", element.getNameElement());
46947    }
46948    if (element.hasDescriptionElement()) {
46949      composeString("description", element.getDescriptionElement());
46950    }
46951    if (element.hasNetwork()) {
46952      composeCodeableConcept("network", element.getNetwork());
46953    }
46954    if (element.hasUnit()) {
46955      composeCodeableConcept("unit", element.getUnit());
46956    }
46957    if (element.hasTerm()) {
46958      composeCodeableConcept("term", element.getTerm());
46959    }
46960    if (element.hasFinancial()) { 
46961      for (ExplanationOfBenefit.BenefitComponent e : element.getFinancial()) 
46962          composeExplanationOfBenefitBenefitComponent("financial", e);
46963    }
46964  }
46965
46966  protected void composeExplanationOfBenefitBenefitComponent(String name, ExplanationOfBenefit.BenefitComponent element) throws IOException {
46967    if (element != null) {
46968    composeElementAttributes(element);
46969      xml.enter(FHIR_NS, name);
46970      composeExplanationOfBenefitBenefitComponentElements(element);
46971      composeElementClose(element);
46972      xml.exit(FHIR_NS, name);
46973    }
46974  }
46975
46976  protected void composeExplanationOfBenefitBenefitComponentElements(ExplanationOfBenefit.BenefitComponent element) throws IOException {
46977    composeBackboneElementElements(element);
46978    if (element.hasType()) {
46979      composeCodeableConcept("type", element.getType());
46980    }
46981    if (element.hasAllowed()) {
46982      composeType("allowed", element.getAllowed());
46983    }    if (element.hasUsed()) {
46984      composeType("used", element.getUsed());
46985    }  }
46986
46987  protected void composeFamilyMemberHistory(String name, FamilyMemberHistory element) throws IOException {
46988    if (element != null) {
46989    composeResourceAttributes(element);
46990      xml.enter(FHIR_NS, name);
46991      composeFamilyMemberHistoryElements(element);
46992      composeElementClose(element);
46993      xml.exit(FHIR_NS, name);
46994    }
46995  }
46996
46997  protected void composeFamilyMemberHistoryElements(FamilyMemberHistory element) throws IOException {
46998    composeDomainResourceElements(element);
46999    if (element.hasIdentifier()) { 
47000      for (Identifier e : element.getIdentifier()) 
47001          composeIdentifier("identifier", e);
47002    }
47003    if (element.hasInstantiatesCanonical()) { 
47004      for (CanonicalType e : element.getInstantiatesCanonical()) 
47005          composeCanonical("instantiatesCanonical", e);
47006    }
47007    if (element.hasInstantiatesUri()) { 
47008      for (UriType e : element.getInstantiatesUri()) 
47009          composeUri("instantiatesUri", e);
47010    }
47011    if (element.hasStatusElement())
47012      composeEnumeration("status", element.getStatusElement(), new FamilyMemberHistory.FamilyHistoryStatusEnumFactory());
47013    if (element.hasDataAbsentReason()) {
47014      composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
47015    }
47016    if (element.hasPatient()) {
47017      composeReference("patient", element.getPatient());
47018    }
47019    if (element.hasDateElement()) {
47020      composeDateTime("date", element.getDateElement());
47021    }
47022    if (element.hasParticipant()) { 
47023      for (FamilyMemberHistory.FamilyMemberHistoryParticipantComponent e : element.getParticipant()) 
47024          composeFamilyMemberHistoryParticipantComponent("participant", e);
47025    }
47026    if (element.hasNameElement()) {
47027      composeString("name", element.getNameElement());
47028    }
47029    if (element.hasRelationship()) {
47030      composeCodeableConcept("relationship", element.getRelationship());
47031    }
47032    if (element.hasSex()) {
47033      composeCodeableConcept("sex", element.getSex());
47034    }
47035    if (element.hasBorn()) {
47036      composeType("born", element.getBorn());
47037    }    if (element.hasAge()) {
47038      composeType("age", element.getAge());
47039    }    if (element.hasEstimatedAgeElement()) {
47040      composeBoolean("estimatedAge", element.getEstimatedAgeElement());
47041    }
47042    if (element.hasDeceased()) {
47043      composeType("deceased", element.getDeceased());
47044    }    if (element.hasReason()) { 
47045      for (CodeableReference e : element.getReason()) 
47046          composeCodeableReference("reason", e);
47047    }
47048    if (element.hasNote()) { 
47049      for (Annotation e : element.getNote()) 
47050          composeAnnotation("note", e);
47051    }
47052    if (element.hasCondition()) { 
47053      for (FamilyMemberHistory.FamilyMemberHistoryConditionComponent e : element.getCondition()) 
47054          composeFamilyMemberHistoryConditionComponent("condition", e);
47055    }
47056    if (element.hasProcedure()) { 
47057      for (FamilyMemberHistory.FamilyMemberHistoryProcedureComponent e : element.getProcedure()) 
47058          composeFamilyMemberHistoryProcedureComponent("procedure", e);
47059    }
47060  }
47061
47062  protected void composeFamilyMemberHistoryParticipantComponent(String name, FamilyMemberHistory.FamilyMemberHistoryParticipantComponent element) throws IOException {
47063    if (element != null) {
47064    composeElementAttributes(element);
47065      xml.enter(FHIR_NS, name);
47066      composeFamilyMemberHistoryParticipantComponentElements(element);
47067      composeElementClose(element);
47068      xml.exit(FHIR_NS, name);
47069    }
47070  }
47071
47072  protected void composeFamilyMemberHistoryParticipantComponentElements(FamilyMemberHistory.FamilyMemberHistoryParticipantComponent element) throws IOException {
47073    composeBackboneElementElements(element);
47074    if (element.hasFunction()) {
47075      composeCodeableConcept("function", element.getFunction());
47076    }
47077    if (element.hasActor()) {
47078      composeReference("actor", element.getActor());
47079    }
47080  }
47081
47082  protected void composeFamilyMemberHistoryConditionComponent(String name, FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
47083    if (element != null) {
47084    composeElementAttributes(element);
47085      xml.enter(FHIR_NS, name);
47086      composeFamilyMemberHistoryConditionComponentElements(element);
47087      composeElementClose(element);
47088      xml.exit(FHIR_NS, name);
47089    }
47090  }
47091
47092  protected void composeFamilyMemberHistoryConditionComponentElements(FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
47093    composeBackboneElementElements(element);
47094    if (element.hasCode()) {
47095      composeCodeableConcept("code", element.getCode());
47096    }
47097    if (element.hasOutcome()) {
47098      composeCodeableConcept("outcome", element.getOutcome());
47099    }
47100    if (element.hasContributedToDeathElement()) {
47101      composeBoolean("contributedToDeath", element.getContributedToDeathElement());
47102    }
47103    if (element.hasOnset()) {
47104      composeType("onset", element.getOnset());
47105    }    if (element.hasNote()) { 
47106      for (Annotation e : element.getNote()) 
47107          composeAnnotation("note", e);
47108    }
47109  }
47110
47111  protected void composeFamilyMemberHistoryProcedureComponent(String name, FamilyMemberHistory.FamilyMemberHistoryProcedureComponent element) throws IOException {
47112    if (element != null) {
47113    composeElementAttributes(element);
47114      xml.enter(FHIR_NS, name);
47115      composeFamilyMemberHistoryProcedureComponentElements(element);
47116      composeElementClose(element);
47117      xml.exit(FHIR_NS, name);
47118    }
47119  }
47120
47121  protected void composeFamilyMemberHistoryProcedureComponentElements(FamilyMemberHistory.FamilyMemberHistoryProcedureComponent element) throws IOException {
47122    composeBackboneElementElements(element);
47123    if (element.hasCode()) {
47124      composeCodeableConcept("code", element.getCode());
47125    }
47126    if (element.hasOutcome()) {
47127      composeCodeableConcept("outcome", element.getOutcome());
47128    }
47129    if (element.hasContributedToDeathElement()) {
47130      composeBoolean("contributedToDeath", element.getContributedToDeathElement());
47131    }
47132    if (element.hasPerformed()) {
47133      composeType("performed", element.getPerformed());
47134    }    if (element.hasNote()) { 
47135      for (Annotation e : element.getNote()) 
47136          composeAnnotation("note", e);
47137    }
47138  }
47139
47140  protected void composeFlag(String name, Flag element) throws IOException {
47141    if (element != null) {
47142    composeResourceAttributes(element);
47143      xml.enter(FHIR_NS, name);
47144      composeFlagElements(element);
47145      composeElementClose(element);
47146      xml.exit(FHIR_NS, name);
47147    }
47148  }
47149
47150  protected void composeFlagElements(Flag element) throws IOException {
47151    composeDomainResourceElements(element);
47152    if (element.hasIdentifier()) { 
47153      for (Identifier e : element.getIdentifier()) 
47154          composeIdentifier("identifier", e);
47155    }
47156    if (element.hasStatusElement())
47157      composeEnumeration("status", element.getStatusElement(), new Flag.FlagStatusEnumFactory());
47158    if (element.hasCategory()) { 
47159      for (CodeableConcept e : element.getCategory()) 
47160          composeCodeableConcept("category", e);
47161    }
47162    if (element.hasCode()) {
47163      composeCodeableConcept("code", element.getCode());
47164    }
47165    if (element.hasSubject()) {
47166      composeReference("subject", element.getSubject());
47167    }
47168    if (element.hasPeriod()) {
47169      composePeriod("period", element.getPeriod());
47170    }
47171    if (element.hasEncounter()) {
47172      composeReference("encounter", element.getEncounter());
47173    }
47174    if (element.hasAuthor()) {
47175      composeReference("author", element.getAuthor());
47176    }
47177  }
47178
47179  protected void composeFormularyItem(String name, FormularyItem element) throws IOException {
47180    if (element != null) {
47181    composeResourceAttributes(element);
47182      xml.enter(FHIR_NS, name);
47183      composeFormularyItemElements(element);
47184      composeElementClose(element);
47185      xml.exit(FHIR_NS, name);
47186    }
47187  }
47188
47189  protected void composeFormularyItemElements(FormularyItem element) throws IOException {
47190    composeDomainResourceElements(element);
47191    if (element.hasIdentifier()) { 
47192      for (Identifier e : element.getIdentifier()) 
47193          composeIdentifier("identifier", e);
47194    }
47195    if (element.hasCode()) {
47196      composeCodeableConcept("code", element.getCode());
47197    }
47198    if (element.hasStatusElement())
47199      composeEnumeration("status", element.getStatusElement(), new FormularyItem.FormularyItemStatusCodesEnumFactory());
47200  }
47201
47202  protected void composeGenomicStudy(String name, GenomicStudy element) throws IOException {
47203    if (element != null) {
47204    composeResourceAttributes(element);
47205      xml.enter(FHIR_NS, name);
47206      composeGenomicStudyElements(element);
47207      composeElementClose(element);
47208      xml.exit(FHIR_NS, name);
47209    }
47210  }
47211
47212  protected void composeGenomicStudyElements(GenomicStudy element) throws IOException {
47213    composeDomainResourceElements(element);
47214    if (element.hasIdentifier()) { 
47215      for (Identifier e : element.getIdentifier()) 
47216          composeIdentifier("identifier", e);
47217    }
47218    if (element.hasStatusElement())
47219      composeEnumeration("status", element.getStatusElement(), new GenomicStudy.GenomicStudyStatusEnumFactory());
47220    if (element.hasType()) { 
47221      for (CodeableConcept e : element.getType()) 
47222          composeCodeableConcept("type", e);
47223    }
47224    if (element.hasSubject()) {
47225      composeReference("subject", element.getSubject());
47226    }
47227    if (element.hasEncounter()) {
47228      composeReference("encounter", element.getEncounter());
47229    }
47230    if (element.hasStartDateElement()) {
47231      composeDateTime("startDate", element.getStartDateElement());
47232    }
47233    if (element.hasBasedOn()) { 
47234      for (Reference e : element.getBasedOn()) 
47235          composeReference("basedOn", e);
47236    }
47237    if (element.hasReferrer()) {
47238      composeReference("referrer", element.getReferrer());
47239    }
47240    if (element.hasInterpreter()) { 
47241      for (Reference e : element.getInterpreter()) 
47242          composeReference("interpreter", e);
47243    }
47244    if (element.hasReason()) { 
47245      for (CodeableReference e : element.getReason()) 
47246          composeCodeableReference("reason", e);
47247    }
47248    if (element.hasInstantiatesCanonicalElement()) {
47249      composeCanonical("instantiatesCanonical", element.getInstantiatesCanonicalElement());
47250    }
47251    if (element.hasInstantiatesUriElement()) {
47252      composeUri("instantiatesUri", element.getInstantiatesUriElement());
47253    }
47254    if (element.hasNote()) { 
47255      for (Annotation e : element.getNote()) 
47256          composeAnnotation("note", e);
47257    }
47258    if (element.hasDescriptionElement()) {
47259      composeMarkdown("description", element.getDescriptionElement());
47260    }
47261    if (element.hasAnalysis()) { 
47262      for (GenomicStudy.GenomicStudyAnalysisComponent e : element.getAnalysis()) 
47263          composeGenomicStudyAnalysisComponent("analysis", e);
47264    }
47265  }
47266
47267  protected void composeGenomicStudyAnalysisComponent(String name, GenomicStudy.GenomicStudyAnalysisComponent element) throws IOException {
47268    if (element != null) {
47269    composeElementAttributes(element);
47270      xml.enter(FHIR_NS, name);
47271      composeGenomicStudyAnalysisComponentElements(element);
47272      composeElementClose(element);
47273      xml.exit(FHIR_NS, name);
47274    }
47275  }
47276
47277  protected void composeGenomicStudyAnalysisComponentElements(GenomicStudy.GenomicStudyAnalysisComponent element) throws IOException {
47278    composeBackboneElementElements(element);
47279    if (element.hasIdentifier()) { 
47280      for (Identifier e : element.getIdentifier()) 
47281          composeIdentifier("identifier", e);
47282    }
47283    if (element.hasMethodType()) { 
47284      for (CodeableConcept e : element.getMethodType()) 
47285          composeCodeableConcept("methodType", e);
47286    }
47287    if (element.hasChangeType()) { 
47288      for (CodeableConcept e : element.getChangeType()) 
47289          composeCodeableConcept("changeType", e);
47290    }
47291    if (element.hasGenomeBuild()) {
47292      composeCodeableConcept("genomeBuild", element.getGenomeBuild());
47293    }
47294    if (element.hasInstantiatesCanonicalElement()) {
47295      composeCanonical("instantiatesCanonical", element.getInstantiatesCanonicalElement());
47296    }
47297    if (element.hasInstantiatesUriElement()) {
47298      composeUri("instantiatesUri", element.getInstantiatesUriElement());
47299    }
47300    if (element.hasTitleElement()) {
47301      composeString("title", element.getTitleElement());
47302    }
47303    if (element.hasFocus()) { 
47304      for (Reference e : element.getFocus()) 
47305          composeReference("focus", e);
47306    }
47307    if (element.hasSpecimen()) { 
47308      for (Reference e : element.getSpecimen()) 
47309          composeReference("specimen", e);
47310    }
47311    if (element.hasDateElement()) {
47312      composeDateTime("date", element.getDateElement());
47313    }
47314    if (element.hasNote()) { 
47315      for (Annotation e : element.getNote()) 
47316          composeAnnotation("note", e);
47317    }
47318    if (element.hasProtocolPerformed()) {
47319      composeReference("protocolPerformed", element.getProtocolPerformed());
47320    }
47321    if (element.hasRegionsStudied()) { 
47322      for (Reference e : element.getRegionsStudied()) 
47323          composeReference("regionsStudied", e);
47324    }
47325    if (element.hasRegionsCalled()) { 
47326      for (Reference e : element.getRegionsCalled()) 
47327          composeReference("regionsCalled", e);
47328    }
47329    if (element.hasInput()) { 
47330      for (GenomicStudy.GenomicStudyAnalysisInputComponent e : element.getInput()) 
47331          composeGenomicStudyAnalysisInputComponent("input", e);
47332    }
47333    if (element.hasOutput()) { 
47334      for (GenomicStudy.GenomicStudyAnalysisOutputComponent e : element.getOutput()) 
47335          composeGenomicStudyAnalysisOutputComponent("output", e);
47336    }
47337    if (element.hasPerformer()) { 
47338      for (GenomicStudy.GenomicStudyAnalysisPerformerComponent e : element.getPerformer()) 
47339          composeGenomicStudyAnalysisPerformerComponent("performer", e);
47340    }
47341    if (element.hasDevice()) { 
47342      for (GenomicStudy.GenomicStudyAnalysisDeviceComponent e : element.getDevice()) 
47343          composeGenomicStudyAnalysisDeviceComponent("device", e);
47344    }
47345  }
47346
47347  protected void composeGenomicStudyAnalysisInputComponent(String name, GenomicStudy.GenomicStudyAnalysisInputComponent element) throws IOException {
47348    if (element != null) {
47349    composeElementAttributes(element);
47350      xml.enter(FHIR_NS, name);
47351      composeGenomicStudyAnalysisInputComponentElements(element);
47352      composeElementClose(element);
47353      xml.exit(FHIR_NS, name);
47354    }
47355  }
47356
47357  protected void composeGenomicStudyAnalysisInputComponentElements(GenomicStudy.GenomicStudyAnalysisInputComponent element) throws IOException {
47358    composeBackboneElementElements(element);
47359    if (element.hasFile()) {
47360      composeReference("file", element.getFile());
47361    }
47362    if (element.hasType()) {
47363      composeCodeableConcept("type", element.getType());
47364    }
47365    if (element.hasGeneratedBy()) {
47366      composeType("generatedBy", element.getGeneratedBy());
47367    }  }
47368
47369  protected void composeGenomicStudyAnalysisOutputComponent(String name, GenomicStudy.GenomicStudyAnalysisOutputComponent element) throws IOException {
47370    if (element != null) {
47371    composeElementAttributes(element);
47372      xml.enter(FHIR_NS, name);
47373      composeGenomicStudyAnalysisOutputComponentElements(element);
47374      composeElementClose(element);
47375      xml.exit(FHIR_NS, name);
47376    }
47377  }
47378
47379  protected void composeGenomicStudyAnalysisOutputComponentElements(GenomicStudy.GenomicStudyAnalysisOutputComponent element) throws IOException {
47380    composeBackboneElementElements(element);
47381    if (element.hasFile()) {
47382      composeReference("file", element.getFile());
47383    }
47384    if (element.hasType()) {
47385      composeCodeableConcept("type", element.getType());
47386    }
47387  }
47388
47389  protected void composeGenomicStudyAnalysisPerformerComponent(String name, GenomicStudy.GenomicStudyAnalysisPerformerComponent element) throws IOException {
47390    if (element != null) {
47391    composeElementAttributes(element);
47392      xml.enter(FHIR_NS, name);
47393      composeGenomicStudyAnalysisPerformerComponentElements(element);
47394      composeElementClose(element);
47395      xml.exit(FHIR_NS, name);
47396    }
47397  }
47398
47399  protected void composeGenomicStudyAnalysisPerformerComponentElements(GenomicStudy.GenomicStudyAnalysisPerformerComponent element) throws IOException {
47400    composeBackboneElementElements(element);
47401    if (element.hasActor()) {
47402      composeReference("actor", element.getActor());
47403    }
47404    if (element.hasRole()) {
47405      composeCodeableConcept("role", element.getRole());
47406    }
47407  }
47408
47409  protected void composeGenomicStudyAnalysisDeviceComponent(String name, GenomicStudy.GenomicStudyAnalysisDeviceComponent element) throws IOException {
47410    if (element != null) {
47411    composeElementAttributes(element);
47412      xml.enter(FHIR_NS, name);
47413      composeGenomicStudyAnalysisDeviceComponentElements(element);
47414      composeElementClose(element);
47415      xml.exit(FHIR_NS, name);
47416    }
47417  }
47418
47419  protected void composeGenomicStudyAnalysisDeviceComponentElements(GenomicStudy.GenomicStudyAnalysisDeviceComponent element) throws IOException {
47420    composeBackboneElementElements(element);
47421    if (element.hasDevice()) {
47422      composeReference("device", element.getDevice());
47423    }
47424    if (element.hasFunction()) {
47425      composeCodeableConcept("function", element.getFunction());
47426    }
47427  }
47428
47429  protected void composeGoal(String name, Goal element) throws IOException {
47430    if (element != null) {
47431    composeResourceAttributes(element);
47432      xml.enter(FHIR_NS, name);
47433      composeGoalElements(element);
47434      composeElementClose(element);
47435      xml.exit(FHIR_NS, name);
47436    }
47437  }
47438
47439  protected void composeGoalElements(Goal element) throws IOException {
47440    composeDomainResourceElements(element);
47441    if (element.hasIdentifier()) { 
47442      for (Identifier e : element.getIdentifier()) 
47443          composeIdentifier("identifier", e);
47444    }
47445    if (element.hasLifecycleStatusElement())
47446      composeEnumeration("lifecycleStatus", element.getLifecycleStatusElement(), new Goal.GoalLifecycleStatusEnumFactory());
47447    if (element.hasAchievementStatus()) {
47448      composeCodeableConcept("achievementStatus", element.getAchievementStatus());
47449    }
47450    if (element.hasCategory()) { 
47451      for (CodeableConcept e : element.getCategory()) 
47452          composeCodeableConcept("category", e);
47453    }
47454    if (element.hasContinuousElement()) {
47455      composeBoolean("continuous", element.getContinuousElement());
47456    }
47457    if (element.hasPriority()) {
47458      composeCodeableConcept("priority", element.getPriority());
47459    }
47460    if (element.hasDescription()) {
47461      composeCodeableConcept("description", element.getDescription());
47462    }
47463    if (element.hasSubject()) {
47464      composeReference("subject", element.getSubject());
47465    }
47466    if (element.hasStart()) {
47467      composeType("start", element.getStart());
47468    }    if (element.hasTarget()) { 
47469      for (Goal.GoalTargetComponent e : element.getTarget()) 
47470          composeGoalTargetComponent("target", e);
47471    }
47472    if (element.hasStatusDateElement()) {
47473      composeDate("statusDate", element.getStatusDateElement());
47474    }
47475    if (element.hasStatusReasonElement()) {
47476      composeString("statusReason", element.getStatusReasonElement());
47477    }
47478    if (element.hasSource()) {
47479      composeReference("source", element.getSource());
47480    }
47481    if (element.hasAddresses()) { 
47482      for (Reference e : element.getAddresses()) 
47483          composeReference("addresses", e);
47484    }
47485    if (element.hasNote()) { 
47486      for (Annotation e : element.getNote()) 
47487          composeAnnotation("note", e);
47488    }
47489    if (element.hasOutcome()) { 
47490      for (CodeableReference e : element.getOutcome()) 
47491          composeCodeableReference("outcome", e);
47492    }
47493  }
47494
47495  protected void composeGoalTargetComponent(String name, Goal.GoalTargetComponent element) throws IOException {
47496    if (element != null) {
47497    composeElementAttributes(element);
47498      xml.enter(FHIR_NS, name);
47499      composeGoalTargetComponentElements(element);
47500      composeElementClose(element);
47501      xml.exit(FHIR_NS, name);
47502    }
47503  }
47504
47505  protected void composeGoalTargetComponentElements(Goal.GoalTargetComponent element) throws IOException {
47506    composeBackboneElementElements(element);
47507    if (element.hasMeasure()) {
47508      composeCodeableConcept("measure", element.getMeasure());
47509    }
47510    if (element.hasDetail()) {
47511      composeType("detail", element.getDetail());
47512    }    if (element.hasDue()) {
47513      composeType("due", element.getDue());
47514    }  }
47515
47516  protected void composeGraphDefinition(String name, GraphDefinition element) throws IOException {
47517    if (element != null) {
47518    composeResourceAttributes(element);
47519      xml.enter(FHIR_NS, name);
47520      composeGraphDefinitionElements(element);
47521      composeElementClose(element);
47522      xml.exit(FHIR_NS, name);
47523    }
47524  }
47525
47526  protected void composeGraphDefinitionElements(GraphDefinition element) throws IOException {
47527    composeCanonicalResourceElements(element);
47528    if (element.hasUrlElement()) {
47529      composeUri("url", element.getUrlElement());
47530    }
47531    if (element.hasIdentifier()) { 
47532      for (Identifier e : element.getIdentifier()) 
47533          composeIdentifier("identifier", e);
47534    }
47535    if (element.hasVersionElement()) {
47536      composeString("version", element.getVersionElement());
47537    }
47538    if (element.hasVersionAlgorithm()) {
47539      composeType("versionAlgorithm", element.getVersionAlgorithm());
47540    }    if (element.hasNameElement()) {
47541      composeString("name", element.getNameElement());
47542    }
47543    if (element.hasTitleElement()) {
47544      composeString("title", element.getTitleElement());
47545    }
47546    if (element.hasStatusElement())
47547      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
47548    if (element.hasExperimentalElement()) {
47549      composeBoolean("experimental", element.getExperimentalElement());
47550    }
47551    if (element.hasDateElement()) {
47552      composeDateTime("date", element.getDateElement());
47553    }
47554    if (element.hasPublisherElement()) {
47555      composeString("publisher", element.getPublisherElement());
47556    }
47557    if (element.hasContact()) { 
47558      for (ContactDetail e : element.getContact()) 
47559          composeContactDetail("contact", e);
47560    }
47561    if (element.hasDescriptionElement()) {
47562      composeMarkdown("description", element.getDescriptionElement());
47563    }
47564    if (element.hasUseContext()) { 
47565      for (UsageContext e : element.getUseContext()) 
47566          composeUsageContext("useContext", e);
47567    }
47568    if (element.hasJurisdiction()) { 
47569      for (CodeableConcept e : element.getJurisdiction()) 
47570          composeCodeableConcept("jurisdiction", e);
47571    }
47572    if (element.hasPurposeElement()) {
47573      composeMarkdown("purpose", element.getPurposeElement());
47574    }
47575    if (element.hasCopyrightElement()) {
47576      composeMarkdown("copyright", element.getCopyrightElement());
47577    }
47578    if (element.hasCopyrightLabelElement()) {
47579      composeString("copyrightLabel", element.getCopyrightLabelElement());
47580    }
47581    if (element.hasStartElement()) {
47582      composeId("start", element.getStartElement());
47583    }
47584    if (element.hasNode()) { 
47585      for (GraphDefinition.GraphDefinitionNodeComponent e : element.getNode()) 
47586          composeGraphDefinitionNodeComponent("node", e);
47587    }
47588    if (element.hasLink()) { 
47589      for (GraphDefinition.GraphDefinitionLinkComponent e : element.getLink()) 
47590          composeGraphDefinitionLinkComponent("link", e);
47591    }
47592  }
47593
47594  protected void composeGraphDefinitionNodeComponent(String name, GraphDefinition.GraphDefinitionNodeComponent element) throws IOException {
47595    if (element != null) {
47596    composeElementAttributes(element);
47597      xml.enter(FHIR_NS, name);
47598      composeGraphDefinitionNodeComponentElements(element);
47599      composeElementClose(element);
47600      xml.exit(FHIR_NS, name);
47601    }
47602  }
47603
47604  protected void composeGraphDefinitionNodeComponentElements(GraphDefinition.GraphDefinitionNodeComponent element) throws IOException {
47605    composeBackboneElementElements(element);
47606    if (element.hasNodeIdElement()) {
47607      composeId("nodeId", element.getNodeIdElement());
47608    }
47609    if (element.hasDescriptionElement()) {
47610      composeString("description", element.getDescriptionElement());
47611    }
47612    if (element.hasTypeElement())
47613      composeEnumeration("type", element.getTypeElement(), new Enumerations.VersionIndependentResourceTypesAllEnumFactory());
47614    if (element.hasProfileElement()) {
47615      composeCanonical("profile", element.getProfileElement());
47616    }
47617  }
47618
47619  protected void composeGraphDefinitionLinkComponent(String name, GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
47620    if (element != null) {
47621    composeElementAttributes(element);
47622      xml.enter(FHIR_NS, name);
47623      composeGraphDefinitionLinkComponentElements(element);
47624      composeElementClose(element);
47625      xml.exit(FHIR_NS, name);
47626    }
47627  }
47628
47629  protected void composeGraphDefinitionLinkComponentElements(GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
47630    composeBackboneElementElements(element);
47631    if (element.hasDescriptionElement()) {
47632      composeString("description", element.getDescriptionElement());
47633    }
47634    if (element.hasMinElement()) {
47635      composeInteger("min", element.getMinElement());
47636    }
47637    if (element.hasMaxElement()) {
47638      composeString("max", element.getMaxElement());
47639    }
47640    if (element.hasSourceIdElement()) {
47641      composeId("sourceId", element.getSourceIdElement());
47642    }
47643    if (element.hasPathElement()) {
47644      composeString("path", element.getPathElement());
47645    }
47646    if (element.hasSliceNameElement()) {
47647      composeString("sliceName", element.getSliceNameElement());
47648    }
47649    if (element.hasTargetIdElement()) {
47650      composeId("targetId", element.getTargetIdElement());
47651    }
47652    if (element.hasParamsElement()) {
47653      composeString("params", element.getParamsElement());
47654    }
47655    if (element.hasCompartment()) { 
47656      for (GraphDefinition.GraphDefinitionLinkCompartmentComponent e : element.getCompartment()) 
47657          composeGraphDefinitionLinkCompartmentComponent("compartment", e);
47658    }
47659  }
47660
47661  protected void composeGraphDefinitionLinkCompartmentComponent(String name, GraphDefinition.GraphDefinitionLinkCompartmentComponent element) throws IOException {
47662    if (element != null) {
47663    composeElementAttributes(element);
47664      xml.enter(FHIR_NS, name);
47665      composeGraphDefinitionLinkCompartmentComponentElements(element);
47666      composeElementClose(element);
47667      xml.exit(FHIR_NS, name);
47668    }
47669  }
47670
47671  protected void composeGraphDefinitionLinkCompartmentComponentElements(GraphDefinition.GraphDefinitionLinkCompartmentComponent element) throws IOException {
47672    composeBackboneElementElements(element);
47673    if (element.hasUseElement())
47674      composeEnumeration("use", element.getUseElement(), new GraphDefinition.GraphCompartmentUseEnumFactory());
47675    if (element.hasRuleElement())
47676      composeEnumeration("rule", element.getRuleElement(), new GraphDefinition.GraphCompartmentRuleEnumFactory());
47677    if (element.hasCodeElement())
47678      composeEnumeration("code", element.getCodeElement(), new Enumerations.CompartmentTypeEnumFactory());
47679    if (element.hasExpressionElement()) {
47680      composeString("expression", element.getExpressionElement());
47681    }
47682    if (element.hasDescriptionElement()) {
47683      composeString("description", element.getDescriptionElement());
47684    }
47685  }
47686
47687  protected void composeGroup(String name, Group element) throws IOException {
47688    if (element != null) {
47689    composeResourceAttributes(element);
47690      xml.enter(FHIR_NS, name);
47691      composeGroupElements(element);
47692      composeElementClose(element);
47693      xml.exit(FHIR_NS, name);
47694    }
47695  }
47696
47697  protected void composeGroupElements(Group element) throws IOException {
47698    composeDomainResourceElements(element);
47699    if (element.hasIdentifier()) { 
47700      for (Identifier e : element.getIdentifier()) 
47701          composeIdentifier("identifier", e);
47702    }
47703    if (element.hasActiveElement()) {
47704      composeBoolean("active", element.getActiveElement());
47705    }
47706    if (element.hasTypeElement())
47707      composeEnumeration("type", element.getTypeElement(), new Group.GroupTypeEnumFactory());
47708    if (element.hasMembershipElement())
47709      composeEnumeration("membership", element.getMembershipElement(), new Group.GroupMembershipBasisEnumFactory());
47710    if (element.hasCode()) {
47711      composeCodeableConcept("code", element.getCode());
47712    }
47713    if (element.hasNameElement()) {
47714      composeString("name", element.getNameElement());
47715    }
47716    if (element.hasDescriptionElement()) {
47717      composeMarkdown("description", element.getDescriptionElement());
47718    }
47719    if (element.hasQuantityElement()) {
47720      composeUnsignedInt("quantity", element.getQuantityElement());
47721    }
47722    if (element.hasManagingEntity()) {
47723      composeReference("managingEntity", element.getManagingEntity());
47724    }
47725    if (element.hasCharacteristic()) { 
47726      for (Group.GroupCharacteristicComponent e : element.getCharacteristic()) 
47727          composeGroupCharacteristicComponent("characteristic", e);
47728    }
47729    if (element.hasMember()) { 
47730      for (Group.GroupMemberComponent e : element.getMember()) 
47731          composeGroupMemberComponent("member", e);
47732    }
47733  }
47734
47735  protected void composeGroupCharacteristicComponent(String name, Group.GroupCharacteristicComponent element) throws IOException {
47736    if (element != null) {
47737    composeElementAttributes(element);
47738      xml.enter(FHIR_NS, name);
47739      composeGroupCharacteristicComponentElements(element);
47740      composeElementClose(element);
47741      xml.exit(FHIR_NS, name);
47742    }
47743  }
47744
47745  protected void composeGroupCharacteristicComponentElements(Group.GroupCharacteristicComponent element) throws IOException {
47746    composeBackboneElementElements(element);
47747    if (element.hasCode()) {
47748      composeCodeableConcept("code", element.getCode());
47749    }
47750    if (element.hasValue()) {
47751      composeType("value", element.getValue());
47752    }    if (element.hasExcludeElement()) {
47753      composeBoolean("exclude", element.getExcludeElement());
47754    }
47755    if (element.hasPeriod()) {
47756      composePeriod("period", element.getPeriod());
47757    }
47758  }
47759
47760  protected void composeGroupMemberComponent(String name, Group.GroupMemberComponent element) throws IOException {
47761    if (element != null) {
47762    composeElementAttributes(element);
47763      xml.enter(FHIR_NS, name);
47764      composeGroupMemberComponentElements(element);
47765      composeElementClose(element);
47766      xml.exit(FHIR_NS, name);
47767    }
47768  }
47769
47770  protected void composeGroupMemberComponentElements(Group.GroupMemberComponent element) throws IOException {
47771    composeBackboneElementElements(element);
47772    if (element.hasEntity()) {
47773      composeReference("entity", element.getEntity());
47774    }
47775    if (element.hasPeriod()) {
47776      composePeriod("period", element.getPeriod());
47777    }
47778    if (element.hasInactiveElement()) {
47779      composeBoolean("inactive", element.getInactiveElement());
47780    }
47781  }
47782
47783  protected void composeGuidanceResponse(String name, GuidanceResponse element) throws IOException {
47784    if (element != null) {
47785    composeResourceAttributes(element);
47786      xml.enter(FHIR_NS, name);
47787      composeGuidanceResponseElements(element);
47788      composeElementClose(element);
47789      xml.exit(FHIR_NS, name);
47790    }
47791  }
47792
47793  protected void composeGuidanceResponseElements(GuidanceResponse element) throws IOException {
47794    composeDomainResourceElements(element);
47795    if (element.hasRequestIdentifier()) {
47796      composeIdentifier("requestIdentifier", element.getRequestIdentifier());
47797    }
47798    if (element.hasIdentifier()) { 
47799      for (Identifier e : element.getIdentifier()) 
47800          composeIdentifier("identifier", e);
47801    }
47802    if (element.hasModule()) {
47803      composeType("module", element.getModule());
47804    }    if (element.hasStatusElement())
47805      composeEnumeration("status", element.getStatusElement(), new GuidanceResponse.GuidanceResponseStatusEnumFactory());
47806    if (element.hasSubject()) {
47807      composeReference("subject", element.getSubject());
47808    }
47809    if (element.hasEncounter()) {
47810      composeReference("encounter", element.getEncounter());
47811    }
47812    if (element.hasOccurrenceDateTimeElement()) {
47813      composeDateTime("occurrenceDateTime", element.getOccurrenceDateTimeElement());
47814    }
47815    if (element.hasPerformer()) {
47816      composeReference("performer", element.getPerformer());
47817    }
47818    if (element.hasReason()) { 
47819      for (CodeableReference e : element.getReason()) 
47820          composeCodeableReference("reason", e);
47821    }
47822    if (element.hasNote()) { 
47823      for (Annotation e : element.getNote()) 
47824          composeAnnotation("note", e);
47825    }
47826    if (element.hasEvaluationMessage()) {
47827      composeReference("evaluationMessage", element.getEvaluationMessage());
47828    }
47829    if (element.hasOutputParameters()) {
47830      composeReference("outputParameters", element.getOutputParameters());
47831    }
47832    if (element.hasResult()) { 
47833      for (Reference e : element.getResult()) 
47834          composeReference("result", e);
47835    }
47836    if (element.hasDataRequirement()) { 
47837      for (DataRequirement e : element.getDataRequirement()) 
47838          composeDataRequirement("dataRequirement", e);
47839    }
47840  }
47841
47842  protected void composeHealthcareService(String name, HealthcareService element) throws IOException {
47843    if (element != null) {
47844    composeResourceAttributes(element);
47845      xml.enter(FHIR_NS, name);
47846      composeHealthcareServiceElements(element);
47847      composeElementClose(element);
47848      xml.exit(FHIR_NS, name);
47849    }
47850  }
47851
47852  protected void composeHealthcareServiceElements(HealthcareService element) throws IOException {
47853    composeDomainResourceElements(element);
47854    if (element.hasIdentifier()) { 
47855      for (Identifier e : element.getIdentifier()) 
47856          composeIdentifier("identifier", e);
47857    }
47858    if (element.hasActiveElement()) {
47859      composeBoolean("active", element.getActiveElement());
47860    }
47861    if (element.hasProvidedBy()) {
47862      composeReference("providedBy", element.getProvidedBy());
47863    }
47864    if (element.hasOfferedIn()) { 
47865      for (Reference e : element.getOfferedIn()) 
47866          composeReference("offeredIn", e);
47867    }
47868    if (element.hasCategory()) { 
47869      for (CodeableConcept e : element.getCategory()) 
47870          composeCodeableConcept("category", e);
47871    }
47872    if (element.hasType()) { 
47873      for (CodeableConcept e : element.getType()) 
47874          composeCodeableConcept("type", e);
47875    }
47876    if (element.hasSpecialty()) { 
47877      for (CodeableConcept e : element.getSpecialty()) 
47878          composeCodeableConcept("specialty", e);
47879    }
47880    if (element.hasLocation()) { 
47881      for (Reference e : element.getLocation()) 
47882          composeReference("location", e);
47883    }
47884    if (element.hasNameElement()) {
47885      composeString("name", element.getNameElement());
47886    }
47887    if (element.hasCommentElement()) {
47888      composeMarkdown("comment", element.getCommentElement());
47889    }
47890    if (element.hasExtraDetailsElement()) {
47891      composeMarkdown("extraDetails", element.getExtraDetailsElement());
47892    }
47893    if (element.hasPhoto()) {
47894      composeAttachment("photo", element.getPhoto());
47895    }
47896    if (element.hasContact()) { 
47897      for (ExtendedContactDetail e : element.getContact()) 
47898          composeExtendedContactDetail("contact", e);
47899    }
47900    if (element.hasCoverageArea()) { 
47901      for (Reference e : element.getCoverageArea()) 
47902          composeReference("coverageArea", e);
47903    }
47904    if (element.hasServiceProvisionCode()) { 
47905      for (CodeableConcept e : element.getServiceProvisionCode()) 
47906          composeCodeableConcept("serviceProvisionCode", e);
47907    }
47908    if (element.hasEligibility()) { 
47909      for (HealthcareService.HealthcareServiceEligibilityComponent e : element.getEligibility()) 
47910          composeHealthcareServiceEligibilityComponent("eligibility", e);
47911    }
47912    if (element.hasProgram()) { 
47913      for (CodeableConcept e : element.getProgram()) 
47914          composeCodeableConcept("program", e);
47915    }
47916    if (element.hasCharacteristic()) { 
47917      for (CodeableConcept e : element.getCharacteristic()) 
47918          composeCodeableConcept("characteristic", e);
47919    }
47920    if (element.hasCommunication()) { 
47921      for (CodeableConcept e : element.getCommunication()) 
47922          composeCodeableConcept("communication", e);
47923    }
47924    if (element.hasReferralMethod()) { 
47925      for (CodeableConcept e : element.getReferralMethod()) 
47926          composeCodeableConcept("referralMethod", e);
47927    }
47928    if (element.hasAppointmentRequiredElement()) {
47929      composeBoolean("appointmentRequired", element.getAppointmentRequiredElement());
47930    }
47931    if (element.hasAvailability()) { 
47932      for (Availability e : element.getAvailability()) 
47933          composeAvailability("availability", e);
47934    }
47935    if (element.hasEndpoint()) { 
47936      for (Reference e : element.getEndpoint()) 
47937          composeReference("endpoint", e);
47938    }
47939  }
47940
47941  protected void composeHealthcareServiceEligibilityComponent(String name, HealthcareService.HealthcareServiceEligibilityComponent element) throws IOException {
47942    if (element != null) {
47943    composeElementAttributes(element);
47944      xml.enter(FHIR_NS, name);
47945      composeHealthcareServiceEligibilityComponentElements(element);
47946      composeElementClose(element);
47947      xml.exit(FHIR_NS, name);
47948    }
47949  }
47950
47951  protected void composeHealthcareServiceEligibilityComponentElements(HealthcareService.HealthcareServiceEligibilityComponent element) throws IOException {
47952    composeBackboneElementElements(element);
47953    if (element.hasCode()) {
47954      composeCodeableConcept("code", element.getCode());
47955    }
47956    if (element.hasCommentElement()) {
47957      composeMarkdown("comment", element.getCommentElement());
47958    }
47959  }
47960
47961  protected void composeImagingSelection(String name, ImagingSelection element) throws IOException {
47962    if (element != null) {
47963    composeResourceAttributes(element);
47964      xml.enter(FHIR_NS, name);
47965      composeImagingSelectionElements(element);
47966      composeElementClose(element);
47967      xml.exit(FHIR_NS, name);
47968    }
47969  }
47970
47971  protected void composeImagingSelectionElements(ImagingSelection element) throws IOException {
47972    composeDomainResourceElements(element);
47973    if (element.hasIdentifier()) { 
47974      for (Identifier e : element.getIdentifier()) 
47975          composeIdentifier("identifier", e);
47976    }
47977    if (element.hasStatusElement())
47978      composeEnumeration("status", element.getStatusElement(), new ImagingSelection.ImagingSelectionStatusEnumFactory());
47979    if (element.hasSubject()) {
47980      composeReference("subject", element.getSubject());
47981    }
47982    if (element.hasIssuedElement()) {
47983      composeInstant("issued", element.getIssuedElement());
47984    }
47985    if (element.hasPerformer()) { 
47986      for (ImagingSelection.ImagingSelectionPerformerComponent e : element.getPerformer()) 
47987          composeImagingSelectionPerformerComponent("performer", e);
47988    }
47989    if (element.hasBasedOn()) { 
47990      for (Reference e : element.getBasedOn()) 
47991          composeReference("basedOn", e);
47992    }
47993    if (element.hasCategory()) { 
47994      for (CodeableConcept e : element.getCategory()) 
47995          composeCodeableConcept("category", e);
47996    }
47997    if (element.hasCode()) {
47998      composeCodeableConcept("code", element.getCode());
47999    }
48000    if (element.hasStudyUidElement()) {
48001      composeId("studyUid", element.getStudyUidElement());
48002    }
48003    if (element.hasDerivedFrom()) { 
48004      for (Reference e : element.getDerivedFrom()) 
48005          composeReference("derivedFrom", e);
48006    }
48007    if (element.hasEndpoint()) { 
48008      for (Reference e : element.getEndpoint()) 
48009          composeReference("endpoint", e);
48010    }
48011    if (element.hasSeriesUidElement()) {
48012      composeId("seriesUid", element.getSeriesUidElement());
48013    }
48014    if (element.hasSeriesNumberElement()) {
48015      composeUnsignedInt("seriesNumber", element.getSeriesNumberElement());
48016    }
48017    if (element.hasFrameOfReferenceUidElement()) {
48018      composeId("frameOfReferenceUid", element.getFrameOfReferenceUidElement());
48019    }
48020    if (element.hasBodySite()) {
48021      composeCodeableReference("bodySite", element.getBodySite());
48022    }
48023    if (element.hasFocus()) { 
48024      for (Reference e : element.getFocus()) 
48025          composeReference("focus", e);
48026    }
48027    if (element.hasInstance()) { 
48028      for (ImagingSelection.ImagingSelectionInstanceComponent e : element.getInstance()) 
48029          composeImagingSelectionInstanceComponent("instance", e);
48030    }
48031  }
48032
48033  protected void composeImagingSelectionPerformerComponent(String name, ImagingSelection.ImagingSelectionPerformerComponent element) throws IOException {
48034    if (element != null) {
48035    composeElementAttributes(element);
48036      xml.enter(FHIR_NS, name);
48037      composeImagingSelectionPerformerComponentElements(element);
48038      composeElementClose(element);
48039      xml.exit(FHIR_NS, name);
48040    }
48041  }
48042
48043  protected void composeImagingSelectionPerformerComponentElements(ImagingSelection.ImagingSelectionPerformerComponent element) throws IOException {
48044    composeBackboneElementElements(element);
48045    if (element.hasFunction()) {
48046      composeCodeableConcept("function", element.getFunction());
48047    }
48048    if (element.hasActor()) {
48049      composeReference("actor", element.getActor());
48050    }
48051  }
48052
48053  protected void composeImagingSelectionInstanceComponent(String name, ImagingSelection.ImagingSelectionInstanceComponent element) throws IOException {
48054    if (element != null) {
48055    composeElementAttributes(element);
48056      xml.enter(FHIR_NS, name);
48057      composeImagingSelectionInstanceComponentElements(element);
48058      composeElementClose(element);
48059      xml.exit(FHIR_NS, name);
48060    }
48061  }
48062
48063  protected void composeImagingSelectionInstanceComponentElements(ImagingSelection.ImagingSelectionInstanceComponent element) throws IOException {
48064    composeBackboneElementElements(element);
48065    if (element.hasUidElement()) {
48066      composeId("uid", element.getUidElement());
48067    }
48068    if (element.hasNumberElement()) {
48069      composeUnsignedInt("number", element.getNumberElement());
48070    }
48071    if (element.hasSopClass()) {
48072      composeCoding("sopClass", element.getSopClass());
48073    }
48074    if (element.hasSubset()) { 
48075      for (StringType e : element.getSubset()) 
48076          composeString("subset", e);
48077    }
48078    if (element.hasImageRegion2D()) { 
48079      for (ImagingSelection.ImageRegion2DComponent e : element.getImageRegion2D()) 
48080          composeImagingSelectionImageRegion2DComponent("imageRegion2D", e);
48081    }
48082    if (element.hasImageRegion3D()) { 
48083      for (ImagingSelection.ImageRegion3DComponent e : element.getImageRegion3D()) 
48084          composeImagingSelectionImageRegion3DComponent("imageRegion3D", e);
48085    }
48086  }
48087
48088  protected void composeImagingSelectionImageRegion2DComponent(String name, ImagingSelection.ImageRegion2DComponent element) throws IOException {
48089    if (element != null) {
48090    composeElementAttributes(element);
48091      xml.enter(FHIR_NS, name);
48092      composeImagingSelectionImageRegion2DComponentElements(element);
48093      composeElementClose(element);
48094      xml.exit(FHIR_NS, name);
48095    }
48096  }
48097
48098  protected void composeImagingSelectionImageRegion2DComponentElements(ImagingSelection.ImageRegion2DComponent element) throws IOException {
48099    composeBackboneElementElements(element);
48100    if (element.hasRegionTypeElement())
48101      composeEnumeration("regionType", element.getRegionTypeElement(), new ImagingSelection.ImagingSelection2DGraphicTypeEnumFactory());
48102    if (element.hasCoordinate()) { 
48103      for (DecimalType e : element.getCoordinate()) 
48104          composeDecimal("coordinate", e);
48105    }
48106  }
48107
48108  protected void composeImagingSelectionImageRegion3DComponent(String name, ImagingSelection.ImageRegion3DComponent element) throws IOException {
48109    if (element != null) {
48110    composeElementAttributes(element);
48111      xml.enter(FHIR_NS, name);
48112      composeImagingSelectionImageRegion3DComponentElements(element);
48113      composeElementClose(element);
48114      xml.exit(FHIR_NS, name);
48115    }
48116  }
48117
48118  protected void composeImagingSelectionImageRegion3DComponentElements(ImagingSelection.ImageRegion3DComponent element) throws IOException {
48119    composeBackboneElementElements(element);
48120    if (element.hasRegionTypeElement())
48121      composeEnumeration("regionType", element.getRegionTypeElement(), new ImagingSelection.ImagingSelection3DGraphicTypeEnumFactory());
48122    if (element.hasCoordinate()) { 
48123      for (DecimalType e : element.getCoordinate()) 
48124          composeDecimal("coordinate", e);
48125    }
48126  }
48127
48128  protected void composeImagingStudy(String name, ImagingStudy element) throws IOException {
48129    if (element != null) {
48130    composeResourceAttributes(element);
48131      xml.enter(FHIR_NS, name);
48132      composeImagingStudyElements(element);
48133      composeElementClose(element);
48134      xml.exit(FHIR_NS, name);
48135    }
48136  }
48137
48138  protected void composeImagingStudyElements(ImagingStudy element) throws IOException {
48139    composeDomainResourceElements(element);
48140    if (element.hasIdentifier()) { 
48141      for (Identifier e : element.getIdentifier()) 
48142          composeIdentifier("identifier", e);
48143    }
48144    if (element.hasStatusElement())
48145      composeEnumeration("status", element.getStatusElement(), new ImagingStudy.ImagingStudyStatusEnumFactory());
48146    if (element.hasModality()) { 
48147      for (CodeableConcept e : element.getModality()) 
48148          composeCodeableConcept("modality", e);
48149    }
48150    if (element.hasSubject()) {
48151      composeReference("subject", element.getSubject());
48152    }
48153    if (element.hasEncounter()) {
48154      composeReference("encounter", element.getEncounter());
48155    }
48156    if (element.hasStartedElement()) {
48157      composeDateTime("started", element.getStartedElement());
48158    }
48159    if (element.hasBasedOn()) { 
48160      for (Reference e : element.getBasedOn()) 
48161          composeReference("basedOn", e);
48162    }
48163    if (element.hasPartOf()) { 
48164      for (Reference e : element.getPartOf()) 
48165          composeReference("partOf", e);
48166    }
48167    if (element.hasReferrer()) {
48168      composeReference("referrer", element.getReferrer());
48169    }
48170    if (element.hasEndpoint()) { 
48171      for (Reference e : element.getEndpoint()) 
48172          composeReference("endpoint", e);
48173    }
48174    if (element.hasNumberOfSeriesElement()) {
48175      composeUnsignedInt("numberOfSeries", element.getNumberOfSeriesElement());
48176    }
48177    if (element.hasNumberOfInstancesElement()) {
48178      composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
48179    }
48180    if (element.hasProcedure()) { 
48181      for (CodeableReference e : element.getProcedure()) 
48182          composeCodeableReference("procedure", e);
48183    }
48184    if (element.hasLocation()) {
48185      composeReference("location", element.getLocation());
48186    }
48187    if (element.hasReason()) { 
48188      for (CodeableReference e : element.getReason()) 
48189          composeCodeableReference("reason", e);
48190    }
48191    if (element.hasNote()) { 
48192      for (Annotation e : element.getNote()) 
48193          composeAnnotation("note", e);
48194    }
48195    if (element.hasDescriptionElement()) {
48196      composeString("description", element.getDescriptionElement());
48197    }
48198    if (element.hasSeries()) { 
48199      for (ImagingStudy.ImagingStudySeriesComponent e : element.getSeries()) 
48200          composeImagingStudySeriesComponent("series", e);
48201    }
48202  }
48203
48204  protected void composeImagingStudySeriesComponent(String name, ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
48205    if (element != null) {
48206    composeElementAttributes(element);
48207      xml.enter(FHIR_NS, name);
48208      composeImagingStudySeriesComponentElements(element);
48209      composeElementClose(element);
48210      xml.exit(FHIR_NS, name);
48211    }
48212  }
48213
48214  protected void composeImagingStudySeriesComponentElements(ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
48215    composeBackboneElementElements(element);
48216    if (element.hasUidElement()) {
48217      composeId("uid", element.getUidElement());
48218    }
48219    if (element.hasNumberElement()) {
48220      composeUnsignedInt("number", element.getNumberElement());
48221    }
48222    if (element.hasModality()) {
48223      composeCodeableConcept("modality", element.getModality());
48224    }
48225    if (element.hasDescriptionElement()) {
48226      composeString("description", element.getDescriptionElement());
48227    }
48228    if (element.hasNumberOfInstancesElement()) {
48229      composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
48230    }
48231    if (element.hasEndpoint()) { 
48232      for (Reference e : element.getEndpoint()) 
48233          composeReference("endpoint", e);
48234    }
48235    if (element.hasBodySite()) {
48236      composeCodeableReference("bodySite", element.getBodySite());
48237    }
48238    if (element.hasLaterality()) {
48239      composeCodeableConcept("laterality", element.getLaterality());
48240    }
48241    if (element.hasSpecimen()) { 
48242      for (Reference e : element.getSpecimen()) 
48243          composeReference("specimen", e);
48244    }
48245    if (element.hasStartedElement()) {
48246      composeDateTime("started", element.getStartedElement());
48247    }
48248    if (element.hasPerformer()) { 
48249      for (ImagingStudy.ImagingStudySeriesPerformerComponent e : element.getPerformer()) 
48250          composeImagingStudySeriesPerformerComponent("performer", e);
48251    }
48252    if (element.hasInstance()) { 
48253      for (ImagingStudy.ImagingStudySeriesInstanceComponent e : element.getInstance()) 
48254          composeImagingStudySeriesInstanceComponent("instance", e);
48255    }
48256  }
48257
48258  protected void composeImagingStudySeriesPerformerComponent(String name, ImagingStudy.ImagingStudySeriesPerformerComponent element) throws IOException {
48259    if (element != null) {
48260    composeElementAttributes(element);
48261      xml.enter(FHIR_NS, name);
48262      composeImagingStudySeriesPerformerComponentElements(element);
48263      composeElementClose(element);
48264      xml.exit(FHIR_NS, name);
48265    }
48266  }
48267
48268  protected void composeImagingStudySeriesPerformerComponentElements(ImagingStudy.ImagingStudySeriesPerformerComponent element) throws IOException {
48269    composeBackboneElementElements(element);
48270    if (element.hasFunction()) {
48271      composeCodeableConcept("function", element.getFunction());
48272    }
48273    if (element.hasActor()) {
48274      composeReference("actor", element.getActor());
48275    }
48276  }
48277
48278  protected void composeImagingStudySeriesInstanceComponent(String name, ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
48279    if (element != null) {
48280    composeElementAttributes(element);
48281      xml.enter(FHIR_NS, name);
48282      composeImagingStudySeriesInstanceComponentElements(element);
48283      composeElementClose(element);
48284      xml.exit(FHIR_NS, name);
48285    }
48286  }
48287
48288  protected void composeImagingStudySeriesInstanceComponentElements(ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
48289    composeBackboneElementElements(element);
48290    if (element.hasUidElement()) {
48291      composeId("uid", element.getUidElement());
48292    }
48293    if (element.hasSopClass()) {
48294      composeCoding("sopClass", element.getSopClass());
48295    }
48296    if (element.hasNumberElement()) {
48297      composeUnsignedInt("number", element.getNumberElement());
48298    }
48299    if (element.hasTitleElement()) {
48300      composeString("title", element.getTitleElement());
48301    }
48302  }
48303
48304  protected void composeImmunization(String name, Immunization element) throws IOException {
48305    if (element != null) {
48306    composeResourceAttributes(element);
48307      xml.enter(FHIR_NS, name);
48308      composeImmunizationElements(element);
48309      composeElementClose(element);
48310      xml.exit(FHIR_NS, name);
48311    }
48312  }
48313
48314  protected void composeImmunizationElements(Immunization element) throws IOException {
48315    composeDomainResourceElements(element);
48316    if (element.hasIdentifier()) { 
48317      for (Identifier e : element.getIdentifier()) 
48318          composeIdentifier("identifier", e);
48319    }
48320    if (element.hasBasedOn()) { 
48321      for (Reference e : element.getBasedOn()) 
48322          composeReference("basedOn", e);
48323    }
48324    if (element.hasStatusElement())
48325      composeEnumeration("status", element.getStatusElement(), new Immunization.ImmunizationStatusCodesEnumFactory());
48326    if (element.hasStatusReason()) {
48327      composeCodeableConcept("statusReason", element.getStatusReason());
48328    }
48329    if (element.hasVaccineCode()) {
48330      composeCodeableConcept("vaccineCode", element.getVaccineCode());
48331    }
48332    if (element.hasAdministeredProduct()) {
48333      composeCodeableReference("administeredProduct", element.getAdministeredProduct());
48334    }
48335    if (element.hasManufacturer()) {
48336      composeCodeableReference("manufacturer", element.getManufacturer());
48337    }
48338    if (element.hasLotNumberElement()) {
48339      composeString("lotNumber", element.getLotNumberElement());
48340    }
48341    if (element.hasExpirationDateElement()) {
48342      composeDate("expirationDate", element.getExpirationDateElement());
48343    }
48344    if (element.hasPatient()) {
48345      composeReference("patient", element.getPatient());
48346    }
48347    if (element.hasEncounter()) {
48348      composeReference("encounter", element.getEncounter());
48349    }
48350    if (element.hasSupportingInformation()) { 
48351      for (Reference e : element.getSupportingInformation()) 
48352          composeReference("supportingInformation", e);
48353    }
48354    if (element.hasOccurrence()) {
48355      composeType("occurrence", element.getOccurrence());
48356    }    if (element.hasPrimarySourceElement()) {
48357      composeBoolean("primarySource", element.getPrimarySourceElement());
48358    }
48359    if (element.hasInformationSource()) {
48360      composeCodeableReference("informationSource", element.getInformationSource());
48361    }
48362    if (element.hasLocation()) {
48363      composeReference("location", element.getLocation());
48364    }
48365    if (element.hasSite()) {
48366      composeCodeableConcept("site", element.getSite());
48367    }
48368    if (element.hasRoute()) {
48369      composeCodeableConcept("route", element.getRoute());
48370    }
48371    if (element.hasDoseQuantity()) {
48372      composeQuantity("doseQuantity", element.getDoseQuantity());
48373    }
48374    if (element.hasPerformer()) { 
48375      for (Immunization.ImmunizationPerformerComponent e : element.getPerformer()) 
48376          composeImmunizationPerformerComponent("performer", e);
48377    }
48378    if (element.hasNote()) { 
48379      for (Annotation e : element.getNote()) 
48380          composeAnnotation("note", e);
48381    }
48382    if (element.hasReason()) { 
48383      for (CodeableReference e : element.getReason()) 
48384          composeCodeableReference("reason", e);
48385    }
48386    if (element.hasIsSubpotentElement()) {
48387      composeBoolean("isSubpotent", element.getIsSubpotentElement());
48388    }
48389    if (element.hasSubpotentReason()) { 
48390      for (CodeableConcept e : element.getSubpotentReason()) 
48391          composeCodeableConcept("subpotentReason", e);
48392    }
48393    if (element.hasProgramEligibility()) { 
48394      for (Immunization.ImmunizationProgramEligibilityComponent e : element.getProgramEligibility()) 
48395          composeImmunizationProgramEligibilityComponent("programEligibility", e);
48396    }
48397    if (element.hasFundingSource()) {
48398      composeCodeableConcept("fundingSource", element.getFundingSource());
48399    }
48400    if (element.hasReaction()) { 
48401      for (Immunization.ImmunizationReactionComponent e : element.getReaction()) 
48402          composeImmunizationReactionComponent("reaction", e);
48403    }
48404    if (element.hasProtocolApplied()) { 
48405      for (Immunization.ImmunizationProtocolAppliedComponent e : element.getProtocolApplied()) 
48406          composeImmunizationProtocolAppliedComponent("protocolApplied", e);
48407    }
48408  }
48409
48410  protected void composeImmunizationPerformerComponent(String name, Immunization.ImmunizationPerformerComponent element) throws IOException {
48411    if (element != null) {
48412    composeElementAttributes(element);
48413      xml.enter(FHIR_NS, name);
48414      composeImmunizationPerformerComponentElements(element);
48415      composeElementClose(element);
48416      xml.exit(FHIR_NS, name);
48417    }
48418  }
48419
48420  protected void composeImmunizationPerformerComponentElements(Immunization.ImmunizationPerformerComponent element) throws IOException {
48421    composeBackboneElementElements(element);
48422    if (element.hasFunction()) {
48423      composeCodeableConcept("function", element.getFunction());
48424    }
48425    if (element.hasActor()) {
48426      composeReference("actor", element.getActor());
48427    }
48428  }
48429
48430  protected void composeImmunizationProgramEligibilityComponent(String name, Immunization.ImmunizationProgramEligibilityComponent element) throws IOException {
48431    if (element != null) {
48432    composeElementAttributes(element);
48433      xml.enter(FHIR_NS, name);
48434      composeImmunizationProgramEligibilityComponentElements(element);
48435      composeElementClose(element);
48436      xml.exit(FHIR_NS, name);
48437    }
48438  }
48439
48440  protected void composeImmunizationProgramEligibilityComponentElements(Immunization.ImmunizationProgramEligibilityComponent element) throws IOException {
48441    composeBackboneElementElements(element);
48442    if (element.hasProgram()) {
48443      composeCodeableConcept("program", element.getProgram());
48444    }
48445    if (element.hasProgramStatus()) {
48446      composeCodeableConcept("programStatus", element.getProgramStatus());
48447    }
48448  }
48449
48450  protected void composeImmunizationReactionComponent(String name, Immunization.ImmunizationReactionComponent element) throws IOException {
48451    if (element != null) {
48452    composeElementAttributes(element);
48453      xml.enter(FHIR_NS, name);
48454      composeImmunizationReactionComponentElements(element);
48455      composeElementClose(element);
48456      xml.exit(FHIR_NS, name);
48457    }
48458  }
48459
48460  protected void composeImmunizationReactionComponentElements(Immunization.ImmunizationReactionComponent element) throws IOException {
48461    composeBackboneElementElements(element);
48462    if (element.hasDateElement()) {
48463      composeDateTime("date", element.getDateElement());
48464    }
48465    if (element.hasManifestation()) {
48466      composeCodeableReference("manifestation", element.getManifestation());
48467    }
48468    if (element.hasReportedElement()) {
48469      composeBoolean("reported", element.getReportedElement());
48470    }
48471  }
48472
48473  protected void composeImmunizationProtocolAppliedComponent(String name, Immunization.ImmunizationProtocolAppliedComponent element) throws IOException {
48474    if (element != null) {
48475    composeElementAttributes(element);
48476      xml.enter(FHIR_NS, name);
48477      composeImmunizationProtocolAppliedComponentElements(element);
48478      composeElementClose(element);
48479      xml.exit(FHIR_NS, name);
48480    }
48481  }
48482
48483  protected void composeImmunizationProtocolAppliedComponentElements(Immunization.ImmunizationProtocolAppliedComponent element) throws IOException {
48484    composeBackboneElementElements(element);
48485    if (element.hasSeriesElement()) {
48486      composeString("series", element.getSeriesElement());
48487    }
48488    if (element.hasAuthority()) {
48489      composeReference("authority", element.getAuthority());
48490    }
48491    if (element.hasTargetDisease()) { 
48492      for (CodeableConcept e : element.getTargetDisease()) 
48493          composeCodeableConcept("targetDisease", e);
48494    }
48495    if (element.hasDoseNumberElement()) {
48496      composeString("doseNumber", element.getDoseNumberElement());
48497    }
48498    if (element.hasSeriesDosesElement()) {
48499      composeString("seriesDoses", element.getSeriesDosesElement());
48500    }
48501  }
48502
48503  protected void composeImmunizationEvaluation(String name, ImmunizationEvaluation element) throws IOException {
48504    if (element != null) {
48505    composeResourceAttributes(element);
48506      xml.enter(FHIR_NS, name);
48507      composeImmunizationEvaluationElements(element);
48508      composeElementClose(element);
48509      xml.exit(FHIR_NS, name);
48510    }
48511  }
48512
48513  protected void composeImmunizationEvaluationElements(ImmunizationEvaluation element) throws IOException {
48514    composeDomainResourceElements(element);
48515    if (element.hasIdentifier()) { 
48516      for (Identifier e : element.getIdentifier()) 
48517          composeIdentifier("identifier", e);
48518    }
48519    if (element.hasStatusElement())
48520      composeEnumeration("status", element.getStatusElement(), new ImmunizationEvaluation.ImmunizationEvaluationStatusCodesEnumFactory());
48521    if (element.hasPatient()) {
48522      composeReference("patient", element.getPatient());
48523    }
48524    if (element.hasDateElement()) {
48525      composeDateTime("date", element.getDateElement());
48526    }
48527    if (element.hasAuthority()) {
48528      composeReference("authority", element.getAuthority());
48529    }
48530    if (element.hasTargetDisease()) {
48531      composeCodeableConcept("targetDisease", element.getTargetDisease());
48532    }
48533    if (element.hasImmunizationEvent()) {
48534      composeReference("immunizationEvent", element.getImmunizationEvent());
48535    }
48536    if (element.hasDoseStatus()) {
48537      composeCodeableConcept("doseStatus", element.getDoseStatus());
48538    }
48539    if (element.hasDoseStatusReason()) { 
48540      for (CodeableConcept e : element.getDoseStatusReason()) 
48541          composeCodeableConcept("doseStatusReason", e);
48542    }
48543    if (element.hasDescriptionElement()) {
48544      composeMarkdown("description", element.getDescriptionElement());
48545    }
48546    if (element.hasSeriesElement()) {
48547      composeString("series", element.getSeriesElement());
48548    }
48549    if (element.hasDoseNumberElement()) {
48550      composeString("doseNumber", element.getDoseNumberElement());
48551    }
48552    if (element.hasSeriesDosesElement()) {
48553      composeString("seriesDoses", element.getSeriesDosesElement());
48554    }
48555  }
48556
48557  protected void composeImmunizationRecommendation(String name, ImmunizationRecommendation element) throws IOException {
48558    if (element != null) {
48559    composeResourceAttributes(element);
48560      xml.enter(FHIR_NS, name);
48561      composeImmunizationRecommendationElements(element);
48562      composeElementClose(element);
48563      xml.exit(FHIR_NS, name);
48564    }
48565  }
48566
48567  protected void composeImmunizationRecommendationElements(ImmunizationRecommendation element) throws IOException {
48568    composeDomainResourceElements(element);
48569    if (element.hasIdentifier()) { 
48570      for (Identifier e : element.getIdentifier()) 
48571          composeIdentifier("identifier", e);
48572    }
48573    if (element.hasPatient()) {
48574      composeReference("patient", element.getPatient());
48575    }
48576    if (element.hasDateElement()) {
48577      composeDateTime("date", element.getDateElement());
48578    }
48579    if (element.hasAuthority()) {
48580      composeReference("authority", element.getAuthority());
48581    }
48582    if (element.hasRecommendation()) { 
48583      for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent e : element.getRecommendation()) 
48584          composeImmunizationRecommendationRecommendationComponent("recommendation", e);
48585    }
48586  }
48587
48588  protected void composeImmunizationRecommendationRecommendationComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
48589    if (element != null) {
48590    composeElementAttributes(element);
48591      xml.enter(FHIR_NS, name);
48592      composeImmunizationRecommendationRecommendationComponentElements(element);
48593      composeElementClose(element);
48594      xml.exit(FHIR_NS, name);
48595    }
48596  }
48597
48598  protected void composeImmunizationRecommendationRecommendationComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
48599    composeBackboneElementElements(element);
48600    if (element.hasVaccineCode()) { 
48601      for (CodeableConcept e : element.getVaccineCode()) 
48602          composeCodeableConcept("vaccineCode", e);
48603    }
48604    if (element.hasTargetDisease()) { 
48605      for (CodeableConcept e : element.getTargetDisease()) 
48606          composeCodeableConcept("targetDisease", e);
48607    }
48608    if (element.hasContraindicatedVaccineCode()) { 
48609      for (CodeableConcept e : element.getContraindicatedVaccineCode()) 
48610          composeCodeableConcept("contraindicatedVaccineCode", e);
48611    }
48612    if (element.hasForecastStatus()) {
48613      composeCodeableConcept("forecastStatus", element.getForecastStatus());
48614    }
48615    if (element.hasForecastReason()) { 
48616      for (CodeableConcept e : element.getForecastReason()) 
48617          composeCodeableConcept("forecastReason", e);
48618    }
48619    if (element.hasDateCriterion()) { 
48620      for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent e : element.getDateCriterion()) 
48621          composeImmunizationRecommendationRecommendationDateCriterionComponent("dateCriterion", e);
48622    }
48623    if (element.hasDescriptionElement()) {
48624      composeMarkdown("description", element.getDescriptionElement());
48625    }
48626    if (element.hasSeriesElement()) {
48627      composeString("series", element.getSeriesElement());
48628    }
48629    if (element.hasDoseNumberElement()) {
48630      composeString("doseNumber", element.getDoseNumberElement());
48631    }
48632    if (element.hasSeriesDosesElement()) {
48633      composeString("seriesDoses", element.getSeriesDosesElement());
48634    }
48635    if (element.hasSupportingImmunization()) { 
48636      for (Reference e : element.getSupportingImmunization()) 
48637          composeReference("supportingImmunization", e);
48638    }
48639    if (element.hasSupportingPatientInformation()) { 
48640      for (Reference e : element.getSupportingPatientInformation()) 
48641          composeReference("supportingPatientInformation", e);
48642    }
48643  }
48644
48645  protected void composeImmunizationRecommendationRecommendationDateCriterionComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
48646    if (element != null) {
48647    composeElementAttributes(element);
48648      xml.enter(FHIR_NS, name);
48649      composeImmunizationRecommendationRecommendationDateCriterionComponentElements(element);
48650      composeElementClose(element);
48651      xml.exit(FHIR_NS, name);
48652    }
48653  }
48654
48655  protected void composeImmunizationRecommendationRecommendationDateCriterionComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
48656    composeBackboneElementElements(element);
48657    if (element.hasCode()) {
48658      composeCodeableConcept("code", element.getCode());
48659    }
48660    if (element.hasValueElement()) {
48661      composeDateTime("value", element.getValueElement());
48662    }
48663  }
48664
48665  protected void composeImplementationGuide(String name, ImplementationGuide element) throws IOException {
48666    if (element != null) {
48667    composeResourceAttributes(element);
48668      xml.enter(FHIR_NS, name);
48669      composeImplementationGuideElements(element);
48670      composeElementClose(element);
48671      xml.exit(FHIR_NS, name);
48672    }
48673  }
48674
48675  protected void composeImplementationGuideElements(ImplementationGuide element) throws IOException {
48676    composeCanonicalResourceElements(element);
48677    if (element.hasUrlElement()) {
48678      composeUri("url", element.getUrlElement());
48679    }
48680    if (element.hasIdentifier()) { 
48681      for (Identifier e : element.getIdentifier()) 
48682          composeIdentifier("identifier", e);
48683    }
48684    if (element.hasVersionElement()) {
48685      composeString("version", element.getVersionElement());
48686    }
48687    if (element.hasVersionAlgorithm()) {
48688      composeType("versionAlgorithm", element.getVersionAlgorithm());
48689    }    if (element.hasNameElement()) {
48690      composeString("name", element.getNameElement());
48691    }
48692    if (element.hasTitleElement()) {
48693      composeString("title", element.getTitleElement());
48694    }
48695    if (element.hasStatusElement())
48696      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
48697    if (element.hasExperimentalElement()) {
48698      composeBoolean("experimental", element.getExperimentalElement());
48699    }
48700    if (element.hasDateElement()) {
48701      composeDateTime("date", element.getDateElement());
48702    }
48703    if (element.hasPublisherElement()) {
48704      composeString("publisher", element.getPublisherElement());
48705    }
48706    if (element.hasContact()) { 
48707      for (ContactDetail e : element.getContact()) 
48708          composeContactDetail("contact", e);
48709    }
48710    if (element.hasDescriptionElement()) {
48711      composeMarkdown("description", element.getDescriptionElement());
48712    }
48713    if (element.hasUseContext()) { 
48714      for (UsageContext e : element.getUseContext()) 
48715          composeUsageContext("useContext", e);
48716    }
48717    if (element.hasJurisdiction()) { 
48718      for (CodeableConcept e : element.getJurisdiction()) 
48719          composeCodeableConcept("jurisdiction", e);
48720    }
48721    if (element.hasPurposeElement()) {
48722      composeMarkdown("purpose", element.getPurposeElement());
48723    }
48724    if (element.hasCopyrightElement()) {
48725      composeMarkdown("copyright", element.getCopyrightElement());
48726    }
48727    if (element.hasCopyrightLabelElement()) {
48728      composeString("copyrightLabel", element.getCopyrightLabelElement());
48729    }
48730    if (element.hasPackageIdElement()) {
48731      composeId("packageId", element.getPackageIdElement());
48732    }
48733    if (element.hasLicenseElement())
48734      composeEnumeration("license", element.getLicenseElement(), new ImplementationGuide.SPDXLicenseEnumFactory());
48735      if (element.hasFhirVersion()) 
48736        for (Enumeration<Enumerations.FHIRVersion> e : element.getFhirVersion()) 
48737          composeEnumeration("fhirVersion", e, new Enumerations.FHIRVersionEnumFactory());
48738    if (element.hasDependsOn()) { 
48739      for (ImplementationGuide.ImplementationGuideDependsOnComponent e : element.getDependsOn()) 
48740          composeImplementationGuideDependsOnComponent("dependsOn", e);
48741    }
48742    if (element.hasGlobal()) { 
48743      for (ImplementationGuide.ImplementationGuideGlobalComponent e : element.getGlobal()) 
48744          composeImplementationGuideGlobalComponent("global", e);
48745    }
48746    if (element.hasDefinition()) {
48747      composeImplementationGuideDefinitionComponent("definition", element.getDefinition());
48748    }
48749    if (element.hasManifest()) {
48750      composeImplementationGuideManifestComponent("manifest", element.getManifest());
48751    }
48752  }
48753
48754  protected void composeImplementationGuideDependsOnComponent(String name, ImplementationGuide.ImplementationGuideDependsOnComponent element) throws IOException {
48755    if (element != null) {
48756    composeElementAttributes(element);
48757      xml.enter(FHIR_NS, name);
48758      composeImplementationGuideDependsOnComponentElements(element);
48759      composeElementClose(element);
48760      xml.exit(FHIR_NS, name);
48761    }
48762  }
48763
48764  protected void composeImplementationGuideDependsOnComponentElements(ImplementationGuide.ImplementationGuideDependsOnComponent element) throws IOException {
48765    composeBackboneElementElements(element);
48766    if (element.hasUriElement()) {
48767      composeCanonical("uri", element.getUriElement());
48768    }
48769    if (element.hasPackageIdElement()) {
48770      composeId("packageId", element.getPackageIdElement());
48771    }
48772    if (element.hasVersionElement()) {
48773      composeString("version", element.getVersionElement());
48774    }
48775    if (element.hasReasonElement()) {
48776      composeMarkdown("reason", element.getReasonElement());
48777    }
48778  }
48779
48780  protected void composeImplementationGuideGlobalComponent(String name, ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
48781    if (element != null) {
48782    composeElementAttributes(element);
48783      xml.enter(FHIR_NS, name);
48784      composeImplementationGuideGlobalComponentElements(element);
48785      composeElementClose(element);
48786      xml.exit(FHIR_NS, name);
48787    }
48788  }
48789
48790  protected void composeImplementationGuideGlobalComponentElements(ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
48791    composeBackboneElementElements(element);
48792    if (element.hasTypeElement()) {
48793      composeCode("type", element.getTypeElement());
48794    }
48795    if (element.hasProfileElement()) {
48796      composeCanonical("profile", element.getProfileElement());
48797    }
48798  }
48799
48800  protected void composeImplementationGuideDefinitionComponent(String name, ImplementationGuide.ImplementationGuideDefinitionComponent element) throws IOException {
48801    if (element != null) {
48802    composeElementAttributes(element);
48803      xml.enter(FHIR_NS, name);
48804      composeImplementationGuideDefinitionComponentElements(element);
48805      composeElementClose(element);
48806      xml.exit(FHIR_NS, name);
48807    }
48808  }
48809
48810  protected void composeImplementationGuideDefinitionComponentElements(ImplementationGuide.ImplementationGuideDefinitionComponent element) throws IOException {
48811    composeBackboneElementElements(element);
48812    if (element.hasGrouping()) { 
48813      for (ImplementationGuide.ImplementationGuideDefinitionGroupingComponent e : element.getGrouping()) 
48814          composeImplementationGuideDefinitionGroupingComponent("grouping", e);
48815    }
48816    if (element.hasResource()) { 
48817      for (ImplementationGuide.ImplementationGuideDefinitionResourceComponent e : element.getResource()) 
48818          composeImplementationGuideDefinitionResourceComponent("resource", e);
48819    }
48820    if (element.hasPage()) {
48821      composeImplementationGuideDefinitionPageComponent("page", element.getPage());
48822    }
48823    if (element.hasParameter()) { 
48824      for (ImplementationGuide.ImplementationGuideDefinitionParameterComponent e : element.getParameter()) 
48825          composeImplementationGuideDefinitionParameterComponent("parameter", e);
48826    }
48827    if (element.hasTemplate()) { 
48828      for (ImplementationGuide.ImplementationGuideDefinitionTemplateComponent e : element.getTemplate()) 
48829          composeImplementationGuideDefinitionTemplateComponent("template", e);
48830    }
48831  }
48832
48833  protected void composeImplementationGuideDefinitionGroupingComponent(String name, ImplementationGuide.ImplementationGuideDefinitionGroupingComponent element) throws IOException {
48834    if (element != null) {
48835    composeElementAttributes(element);
48836      xml.enter(FHIR_NS, name);
48837      composeImplementationGuideDefinitionGroupingComponentElements(element);
48838      composeElementClose(element);
48839      xml.exit(FHIR_NS, name);
48840    }
48841  }
48842
48843  protected void composeImplementationGuideDefinitionGroupingComponentElements(ImplementationGuide.ImplementationGuideDefinitionGroupingComponent element) throws IOException {
48844    composeBackboneElementElements(element);
48845    if (element.hasNameElement()) {
48846      composeString("name", element.getNameElement());
48847    }
48848    if (element.hasDescriptionElement()) {
48849      composeMarkdown("description", element.getDescriptionElement());
48850    }
48851  }
48852
48853  protected void composeImplementationGuideDefinitionResourceComponent(String name, ImplementationGuide.ImplementationGuideDefinitionResourceComponent element) throws IOException {
48854    if (element != null) {
48855    composeElementAttributes(element);
48856      xml.enter(FHIR_NS, name);
48857      composeImplementationGuideDefinitionResourceComponentElements(element);
48858      composeElementClose(element);
48859      xml.exit(FHIR_NS, name);
48860    }
48861  }
48862
48863  protected void composeImplementationGuideDefinitionResourceComponentElements(ImplementationGuide.ImplementationGuideDefinitionResourceComponent element) throws IOException {
48864    composeBackboneElementElements(element);
48865    if (element.hasReference()) {
48866      composeReference("reference", element.getReference());
48867    }
48868      if (element.hasFhirVersion()) 
48869        for (Enumeration<Enumerations.FHIRVersion> e : element.getFhirVersion()) 
48870          composeEnumeration("fhirVersion", e, new Enumerations.FHIRVersionEnumFactory());
48871    if (element.hasNameElement()) {
48872      composeString("name", element.getNameElement());
48873    }
48874    if (element.hasDescriptionElement()) {
48875      composeMarkdown("description", element.getDescriptionElement());
48876    }
48877    if (element.hasIsExampleElement()) {
48878      composeBoolean("isExample", element.getIsExampleElement());
48879    }
48880    if (element.hasProfile()) { 
48881      for (CanonicalType e : element.getProfile()) 
48882          composeCanonical("profile", e);
48883    }
48884    if (element.hasGroupingIdElement()) {
48885      composeId("groupingId", element.getGroupingIdElement());
48886    }
48887  }
48888
48889  protected void composeImplementationGuideDefinitionPageComponent(String name, ImplementationGuide.ImplementationGuideDefinitionPageComponent element) throws IOException {
48890    if (element != null) {
48891    composeElementAttributes(element);
48892      xml.enter(FHIR_NS, name);
48893      composeImplementationGuideDefinitionPageComponentElements(element);
48894      composeElementClose(element);
48895      xml.exit(FHIR_NS, name);
48896    }
48897  }
48898
48899  protected void composeImplementationGuideDefinitionPageComponentElements(ImplementationGuide.ImplementationGuideDefinitionPageComponent element) throws IOException {
48900    composeBackboneElementElements(element);
48901    if (element.hasSource()) {
48902      composeType("source", element.getSource());
48903    }    if (element.hasNameElement()) {
48904      composeUrl("name", element.getNameElement());
48905    }
48906    if (element.hasTitleElement()) {
48907      composeString("title", element.getTitleElement());
48908    }
48909    if (element.hasGenerationElement())
48910      composeEnumeration("generation", element.getGenerationElement(), new ImplementationGuide.GuidePageGenerationEnumFactory());
48911    if (element.hasPage()) { 
48912      for (ImplementationGuide.ImplementationGuideDefinitionPageComponent e : element.getPage()) 
48913          composeImplementationGuideDefinitionPageComponent("page", e);
48914    }
48915  }
48916
48917  protected void composeImplementationGuideDefinitionParameterComponent(String name, ImplementationGuide.ImplementationGuideDefinitionParameterComponent element) throws IOException {
48918    if (element != null) {
48919    composeElementAttributes(element);
48920      xml.enter(FHIR_NS, name);
48921      composeImplementationGuideDefinitionParameterComponentElements(element);
48922      composeElementClose(element);
48923      xml.exit(FHIR_NS, name);
48924    }
48925  }
48926
48927  protected void composeImplementationGuideDefinitionParameterComponentElements(ImplementationGuide.ImplementationGuideDefinitionParameterComponent element) throws IOException {
48928    composeBackboneElementElements(element);
48929    if (element.hasCode()) {
48930      composeCoding("code", element.getCode());
48931    }
48932    if (element.hasValueElement()) {
48933      composeString("value", element.getValueElement());
48934    }
48935  }
48936
48937  protected void composeImplementationGuideDefinitionTemplateComponent(String name, ImplementationGuide.ImplementationGuideDefinitionTemplateComponent element) throws IOException {
48938    if (element != null) {
48939    composeElementAttributes(element);
48940      xml.enter(FHIR_NS, name);
48941      composeImplementationGuideDefinitionTemplateComponentElements(element);
48942      composeElementClose(element);
48943      xml.exit(FHIR_NS, name);
48944    }
48945  }
48946
48947  protected void composeImplementationGuideDefinitionTemplateComponentElements(ImplementationGuide.ImplementationGuideDefinitionTemplateComponent element) throws IOException {
48948    composeBackboneElementElements(element);
48949    if (element.hasCodeElement()) {
48950      composeCode("code", element.getCodeElement());
48951    }
48952    if (element.hasSourceElement()) {
48953      composeString("source", element.getSourceElement());
48954    }
48955    if (element.hasScopeElement()) {
48956      composeString("scope", element.getScopeElement());
48957    }
48958  }
48959
48960  protected void composeImplementationGuideManifestComponent(String name, ImplementationGuide.ImplementationGuideManifestComponent element) throws IOException {
48961    if (element != null) {
48962    composeElementAttributes(element);
48963      xml.enter(FHIR_NS, name);
48964      composeImplementationGuideManifestComponentElements(element);
48965      composeElementClose(element);
48966      xml.exit(FHIR_NS, name);
48967    }
48968  }
48969
48970  protected void composeImplementationGuideManifestComponentElements(ImplementationGuide.ImplementationGuideManifestComponent element) throws IOException {
48971    composeBackboneElementElements(element);
48972    if (element.hasRenderingElement()) {
48973      composeUrl("rendering", element.getRenderingElement());
48974    }
48975    if (element.hasResource()) { 
48976      for (ImplementationGuide.ManifestResourceComponent e : element.getResource()) 
48977          composeImplementationGuideManifestResourceComponent("resource", e);
48978    }
48979    if (element.hasPage()) { 
48980      for (ImplementationGuide.ManifestPageComponent e : element.getPage()) 
48981          composeImplementationGuideManifestPageComponent("page", e);
48982    }
48983    if (element.hasImage()) { 
48984      for (StringType e : element.getImage()) 
48985          composeString("image", e);
48986    }
48987    if (element.hasOther()) { 
48988      for (StringType e : element.getOther()) 
48989          composeString("other", e);
48990    }
48991  }
48992
48993  protected void composeImplementationGuideManifestResourceComponent(String name, ImplementationGuide.ManifestResourceComponent element) throws IOException {
48994    if (element != null) {
48995    composeElementAttributes(element);
48996      xml.enter(FHIR_NS, name);
48997      composeImplementationGuideManifestResourceComponentElements(element);
48998      composeElementClose(element);
48999      xml.exit(FHIR_NS, name);
49000    }
49001  }
49002
49003  protected void composeImplementationGuideManifestResourceComponentElements(ImplementationGuide.ManifestResourceComponent element) throws IOException {
49004    composeBackboneElementElements(element);
49005    if (element.hasReference()) {
49006      composeReference("reference", element.getReference());
49007    }
49008    if (element.hasIsExampleElement()) {
49009      composeBoolean("isExample", element.getIsExampleElement());
49010    }
49011    if (element.hasProfile()) { 
49012      for (CanonicalType e : element.getProfile()) 
49013          composeCanonical("profile", e);
49014    }
49015    if (element.hasRelativePathElement()) {
49016      composeUrl("relativePath", element.getRelativePathElement());
49017    }
49018  }
49019
49020  protected void composeImplementationGuideManifestPageComponent(String name, ImplementationGuide.ManifestPageComponent element) throws IOException {
49021    if (element != null) {
49022    composeElementAttributes(element);
49023      xml.enter(FHIR_NS, name);
49024      composeImplementationGuideManifestPageComponentElements(element);
49025      composeElementClose(element);
49026      xml.exit(FHIR_NS, name);
49027    }
49028  }
49029
49030  protected void composeImplementationGuideManifestPageComponentElements(ImplementationGuide.ManifestPageComponent element) throws IOException {
49031    composeBackboneElementElements(element);
49032    if (element.hasNameElement()) {
49033      composeString("name", element.getNameElement());
49034    }
49035    if (element.hasTitleElement()) {
49036      composeString("title", element.getTitleElement());
49037    }
49038    if (element.hasAnchor()) { 
49039      for (StringType e : element.getAnchor()) 
49040          composeString("anchor", e);
49041    }
49042  }
49043
49044  protected void composeIngredient(String name, Ingredient element) throws IOException {
49045    if (element != null) {
49046    composeResourceAttributes(element);
49047      xml.enter(FHIR_NS, name);
49048      composeIngredientElements(element);
49049      composeElementClose(element);
49050      xml.exit(FHIR_NS, name);
49051    }
49052  }
49053
49054  protected void composeIngredientElements(Ingredient element) throws IOException {
49055    composeDomainResourceElements(element);
49056    if (element.hasIdentifier()) {
49057      composeIdentifier("identifier", element.getIdentifier());
49058    }
49059    if (element.hasStatusElement())
49060      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
49061    if (element.hasFor()) { 
49062      for (Reference e : element.getFor()) 
49063          composeReference("for", e);
49064    }
49065    if (element.hasRole()) {
49066      composeCodeableConcept("role", element.getRole());
49067    }
49068    if (element.hasFunction()) { 
49069      for (CodeableConcept e : element.getFunction()) 
49070          composeCodeableConcept("function", e);
49071    }
49072    if (element.hasGroup()) {
49073      composeCodeableConcept("group", element.getGroup());
49074    }
49075    if (element.hasAllergenicIndicatorElement()) {
49076      composeBoolean("allergenicIndicator", element.getAllergenicIndicatorElement());
49077    }
49078    if (element.hasCommentElement()) {
49079      composeMarkdown("comment", element.getCommentElement());
49080    }
49081    if (element.hasManufacturer()) { 
49082      for (Ingredient.IngredientManufacturerComponent e : element.getManufacturer()) 
49083          composeIngredientManufacturerComponent("manufacturer", e);
49084    }
49085    if (element.hasSubstance()) {
49086      composeIngredientSubstanceComponent("substance", element.getSubstance());
49087    }
49088  }
49089
49090  protected void composeIngredientManufacturerComponent(String name, Ingredient.IngredientManufacturerComponent element) throws IOException {
49091    if (element != null) {
49092    composeElementAttributes(element);
49093      xml.enter(FHIR_NS, name);
49094      composeIngredientManufacturerComponentElements(element);
49095      composeElementClose(element);
49096      xml.exit(FHIR_NS, name);
49097    }
49098  }
49099
49100  protected void composeIngredientManufacturerComponentElements(Ingredient.IngredientManufacturerComponent element) throws IOException {
49101    composeBackboneElementElements(element);
49102    if (element.hasRoleElement())
49103      composeEnumeration("role", element.getRoleElement(), new Ingredient.IngredientManufacturerRoleEnumFactory());
49104    if (element.hasManufacturer()) {
49105      composeReference("manufacturer", element.getManufacturer());
49106    }
49107  }
49108
49109  protected void composeIngredientSubstanceComponent(String name, Ingredient.IngredientSubstanceComponent element) throws IOException {
49110    if (element != null) {
49111    composeElementAttributes(element);
49112      xml.enter(FHIR_NS, name);
49113      composeIngredientSubstanceComponentElements(element);
49114      composeElementClose(element);
49115      xml.exit(FHIR_NS, name);
49116    }
49117  }
49118
49119  protected void composeIngredientSubstanceComponentElements(Ingredient.IngredientSubstanceComponent element) throws IOException {
49120    composeBackboneElementElements(element);
49121    if (element.hasCode()) {
49122      composeCodeableReference("code", element.getCode());
49123    }
49124    if (element.hasStrength()) { 
49125      for (Ingredient.IngredientSubstanceStrengthComponent e : element.getStrength()) 
49126          composeIngredientSubstanceStrengthComponent("strength", e);
49127    }
49128  }
49129
49130  protected void composeIngredientSubstanceStrengthComponent(String name, Ingredient.IngredientSubstanceStrengthComponent element) throws IOException {
49131    if (element != null) {
49132    composeElementAttributes(element);
49133      xml.enter(FHIR_NS, name);
49134      composeIngredientSubstanceStrengthComponentElements(element);
49135      composeElementClose(element);
49136      xml.exit(FHIR_NS, name);
49137    }
49138  }
49139
49140  protected void composeIngredientSubstanceStrengthComponentElements(Ingredient.IngredientSubstanceStrengthComponent element) throws IOException {
49141    composeBackboneElementElements(element);
49142    if (element.hasPresentation()) {
49143      composeType("presentation", element.getPresentation());
49144    }    if (element.hasTextPresentationElement()) {
49145      composeString("textPresentation", element.getTextPresentationElement());
49146    }
49147    if (element.hasConcentration()) {
49148      composeType("concentration", element.getConcentration());
49149    }    if (element.hasTextConcentrationElement()) {
49150      composeString("textConcentration", element.getTextConcentrationElement());
49151    }
49152    if (element.hasBasis()) {
49153      composeCodeableConcept("basis", element.getBasis());
49154    }
49155    if (element.hasMeasurementPointElement()) {
49156      composeString("measurementPoint", element.getMeasurementPointElement());
49157    }
49158    if (element.hasCountry()) { 
49159      for (CodeableConcept e : element.getCountry()) 
49160          composeCodeableConcept("country", e);
49161    }
49162    if (element.hasReferenceStrength()) { 
49163      for (Ingredient.IngredientSubstanceStrengthReferenceStrengthComponent e : element.getReferenceStrength()) 
49164          composeIngredientSubstanceStrengthReferenceStrengthComponent("referenceStrength", e);
49165    }
49166  }
49167
49168  protected void composeIngredientSubstanceStrengthReferenceStrengthComponent(String name, Ingredient.IngredientSubstanceStrengthReferenceStrengthComponent element) throws IOException {
49169    if (element != null) {
49170    composeElementAttributes(element);
49171      xml.enter(FHIR_NS, name);
49172      composeIngredientSubstanceStrengthReferenceStrengthComponentElements(element);
49173      composeElementClose(element);
49174      xml.exit(FHIR_NS, name);
49175    }
49176  }
49177
49178  protected void composeIngredientSubstanceStrengthReferenceStrengthComponentElements(Ingredient.IngredientSubstanceStrengthReferenceStrengthComponent element) throws IOException {
49179    composeBackboneElementElements(element);
49180    if (element.hasSubstance()) {
49181      composeCodeableReference("substance", element.getSubstance());
49182    }
49183    if (element.hasStrength()) {
49184      composeType("strength", element.getStrength());
49185    }    if (element.hasMeasurementPointElement()) {
49186      composeString("measurementPoint", element.getMeasurementPointElement());
49187    }
49188    if (element.hasCountry()) { 
49189      for (CodeableConcept e : element.getCountry()) 
49190          composeCodeableConcept("country", e);
49191    }
49192  }
49193
49194  protected void composeInsurancePlan(String name, InsurancePlan element) throws IOException {
49195    if (element != null) {
49196    composeResourceAttributes(element);
49197      xml.enter(FHIR_NS, name);
49198      composeInsurancePlanElements(element);
49199      composeElementClose(element);
49200      xml.exit(FHIR_NS, name);
49201    }
49202  }
49203
49204  protected void composeInsurancePlanElements(InsurancePlan element) throws IOException {
49205    composeDomainResourceElements(element);
49206    if (element.hasIdentifier()) { 
49207      for (Identifier e : element.getIdentifier()) 
49208          composeIdentifier("identifier", e);
49209    }
49210    if (element.hasStatusElement())
49211      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
49212    if (element.hasType()) { 
49213      for (CodeableConcept e : element.getType()) 
49214          composeCodeableConcept("type", e);
49215    }
49216    if (element.hasNameElement()) {
49217      composeString("name", element.getNameElement());
49218    }
49219    if (element.hasAlias()) { 
49220      for (StringType e : element.getAlias()) 
49221          composeString("alias", e);
49222    }
49223    if (element.hasPeriod()) {
49224      composePeriod("period", element.getPeriod());
49225    }
49226    if (element.hasOwnedBy()) {
49227      composeReference("ownedBy", element.getOwnedBy());
49228    }
49229    if (element.hasAdministeredBy()) {
49230      composeReference("administeredBy", element.getAdministeredBy());
49231    }
49232    if (element.hasCoverageArea()) { 
49233      for (Reference e : element.getCoverageArea()) 
49234          composeReference("coverageArea", e);
49235    }
49236    if (element.hasContact()) { 
49237      for (ExtendedContactDetail e : element.getContact()) 
49238          composeExtendedContactDetail("contact", e);
49239    }
49240    if (element.hasEndpoint()) { 
49241      for (Reference e : element.getEndpoint()) 
49242          composeReference("endpoint", e);
49243    }
49244    if (element.hasNetwork()) { 
49245      for (Reference e : element.getNetwork()) 
49246          composeReference("network", e);
49247    }
49248    if (element.hasCoverage()) { 
49249      for (InsurancePlan.InsurancePlanCoverageComponent e : element.getCoverage()) 
49250          composeInsurancePlanCoverageComponent("coverage", e);
49251    }
49252    if (element.hasPlan()) { 
49253      for (InsurancePlan.InsurancePlanPlanComponent e : element.getPlan()) 
49254          composeInsurancePlanPlanComponent("plan", e);
49255    }
49256  }
49257
49258  protected void composeInsurancePlanCoverageComponent(String name, InsurancePlan.InsurancePlanCoverageComponent element) throws IOException {
49259    if (element != null) {
49260    composeElementAttributes(element);
49261      xml.enter(FHIR_NS, name);
49262      composeInsurancePlanCoverageComponentElements(element);
49263      composeElementClose(element);
49264      xml.exit(FHIR_NS, name);
49265    }
49266  }
49267
49268  protected void composeInsurancePlanCoverageComponentElements(InsurancePlan.InsurancePlanCoverageComponent element) throws IOException {
49269    composeBackboneElementElements(element);
49270    if (element.hasType()) {
49271      composeCodeableConcept("type", element.getType());
49272    }
49273    if (element.hasNetwork()) { 
49274      for (Reference e : element.getNetwork()) 
49275          composeReference("network", e);
49276    }
49277    if (element.hasBenefit()) { 
49278      for (InsurancePlan.CoverageBenefitComponent e : element.getBenefit()) 
49279          composeInsurancePlanCoverageBenefitComponent("benefit", e);
49280    }
49281  }
49282
49283  protected void composeInsurancePlanCoverageBenefitComponent(String name, InsurancePlan.CoverageBenefitComponent element) throws IOException {
49284    if (element != null) {
49285    composeElementAttributes(element);
49286      xml.enter(FHIR_NS, name);
49287      composeInsurancePlanCoverageBenefitComponentElements(element);
49288      composeElementClose(element);
49289      xml.exit(FHIR_NS, name);
49290    }
49291  }
49292
49293  protected void composeInsurancePlanCoverageBenefitComponentElements(InsurancePlan.CoverageBenefitComponent element) throws IOException {
49294    composeBackboneElementElements(element);
49295    if (element.hasType()) {
49296      composeCodeableConcept("type", element.getType());
49297    }
49298    if (element.hasRequirementElement()) {
49299      composeString("requirement", element.getRequirementElement());
49300    }
49301    if (element.hasLimit()) { 
49302      for (InsurancePlan.CoverageBenefitLimitComponent e : element.getLimit()) 
49303          composeInsurancePlanCoverageBenefitLimitComponent("limit", e);
49304    }
49305  }
49306
49307  protected void composeInsurancePlanCoverageBenefitLimitComponent(String name, InsurancePlan.CoverageBenefitLimitComponent element) throws IOException {
49308    if (element != null) {
49309    composeElementAttributes(element);
49310      xml.enter(FHIR_NS, name);
49311      composeInsurancePlanCoverageBenefitLimitComponentElements(element);
49312      composeElementClose(element);
49313      xml.exit(FHIR_NS, name);
49314    }
49315  }
49316
49317  protected void composeInsurancePlanCoverageBenefitLimitComponentElements(InsurancePlan.CoverageBenefitLimitComponent element) throws IOException {
49318    composeBackboneElementElements(element);
49319    if (element.hasValue()) {
49320      composeQuantity("value", element.getValue());
49321    }
49322    if (element.hasCode()) {
49323      composeCodeableConcept("code", element.getCode());
49324    }
49325  }
49326
49327  protected void composeInsurancePlanPlanComponent(String name, InsurancePlan.InsurancePlanPlanComponent element) throws IOException {
49328    if (element != null) {
49329    composeElementAttributes(element);
49330      xml.enter(FHIR_NS, name);
49331      composeInsurancePlanPlanComponentElements(element);
49332      composeElementClose(element);
49333      xml.exit(FHIR_NS, name);
49334    }
49335  }
49336
49337  protected void composeInsurancePlanPlanComponentElements(InsurancePlan.InsurancePlanPlanComponent element) throws IOException {
49338    composeBackboneElementElements(element);
49339    if (element.hasIdentifier()) { 
49340      for (Identifier e : element.getIdentifier()) 
49341          composeIdentifier("identifier", e);
49342    }
49343    if (element.hasType()) {
49344      composeCodeableConcept("type", element.getType());
49345    }
49346    if (element.hasCoverageArea()) { 
49347      for (Reference e : element.getCoverageArea()) 
49348          composeReference("coverageArea", e);
49349    }
49350    if (element.hasNetwork()) { 
49351      for (Reference e : element.getNetwork()) 
49352          composeReference("network", e);
49353    }
49354    if (element.hasGeneralCost()) { 
49355      for (InsurancePlan.InsurancePlanPlanGeneralCostComponent e : element.getGeneralCost()) 
49356          composeInsurancePlanPlanGeneralCostComponent("generalCost", e);
49357    }
49358    if (element.hasSpecificCost()) { 
49359      for (InsurancePlan.InsurancePlanPlanSpecificCostComponent e : element.getSpecificCost()) 
49360          composeInsurancePlanPlanSpecificCostComponent("specificCost", e);
49361    }
49362  }
49363
49364  protected void composeInsurancePlanPlanGeneralCostComponent(String name, InsurancePlan.InsurancePlanPlanGeneralCostComponent element) throws IOException {
49365    if (element != null) {
49366    composeElementAttributes(element);
49367      xml.enter(FHIR_NS, name);
49368      composeInsurancePlanPlanGeneralCostComponentElements(element);
49369      composeElementClose(element);
49370      xml.exit(FHIR_NS, name);
49371    }
49372  }
49373
49374  protected void composeInsurancePlanPlanGeneralCostComponentElements(InsurancePlan.InsurancePlanPlanGeneralCostComponent element) throws IOException {
49375    composeBackboneElementElements(element);
49376    if (element.hasType()) {
49377      composeCodeableConcept("type", element.getType());
49378    }
49379    if (element.hasGroupSizeElement()) {
49380      composePositiveInt("groupSize", element.getGroupSizeElement());
49381    }
49382    if (element.hasCost()) {
49383      composeMoney("cost", element.getCost());
49384    }
49385    if (element.hasCommentElement()) {
49386      composeString("comment", element.getCommentElement());
49387    }
49388  }
49389
49390  protected void composeInsurancePlanPlanSpecificCostComponent(String name, InsurancePlan.InsurancePlanPlanSpecificCostComponent element) throws IOException {
49391    if (element != null) {
49392    composeElementAttributes(element);
49393      xml.enter(FHIR_NS, name);
49394      composeInsurancePlanPlanSpecificCostComponentElements(element);
49395      composeElementClose(element);
49396      xml.exit(FHIR_NS, name);
49397    }
49398  }
49399
49400  protected void composeInsurancePlanPlanSpecificCostComponentElements(InsurancePlan.InsurancePlanPlanSpecificCostComponent element) throws IOException {
49401    composeBackboneElementElements(element);
49402    if (element.hasCategory()) {
49403      composeCodeableConcept("category", element.getCategory());
49404    }
49405    if (element.hasBenefit()) { 
49406      for (InsurancePlan.PlanBenefitComponent e : element.getBenefit()) 
49407          composeInsurancePlanPlanBenefitComponent("benefit", e);
49408    }
49409  }
49410
49411  protected void composeInsurancePlanPlanBenefitComponent(String name, InsurancePlan.PlanBenefitComponent element) throws IOException {
49412    if (element != null) {
49413    composeElementAttributes(element);
49414      xml.enter(FHIR_NS, name);
49415      composeInsurancePlanPlanBenefitComponentElements(element);
49416      composeElementClose(element);
49417      xml.exit(FHIR_NS, name);
49418    }
49419  }
49420
49421  protected void composeInsurancePlanPlanBenefitComponentElements(InsurancePlan.PlanBenefitComponent element) throws IOException {
49422    composeBackboneElementElements(element);
49423    if (element.hasType()) {
49424      composeCodeableConcept("type", element.getType());
49425    }
49426    if (element.hasCost()) { 
49427      for (InsurancePlan.PlanBenefitCostComponent e : element.getCost()) 
49428          composeInsurancePlanPlanBenefitCostComponent("cost", e);
49429    }
49430  }
49431
49432  protected void composeInsurancePlanPlanBenefitCostComponent(String name, InsurancePlan.PlanBenefitCostComponent element) throws IOException {
49433    if (element != null) {
49434    composeElementAttributes(element);
49435      xml.enter(FHIR_NS, name);
49436      composeInsurancePlanPlanBenefitCostComponentElements(element);
49437      composeElementClose(element);
49438      xml.exit(FHIR_NS, name);
49439    }
49440  }
49441
49442  protected void composeInsurancePlanPlanBenefitCostComponentElements(InsurancePlan.PlanBenefitCostComponent element) throws IOException {
49443    composeBackboneElementElements(element);
49444    if (element.hasType()) {
49445      composeCodeableConcept("type", element.getType());
49446    }
49447    if (element.hasApplicability()) {
49448      composeCodeableConcept("applicability", element.getApplicability());
49449    }
49450    if (element.hasQualifiers()) { 
49451      for (CodeableConcept e : element.getQualifiers()) 
49452          composeCodeableConcept("qualifiers", e);
49453    }
49454    if (element.hasValue()) {
49455      composeQuantity("value", element.getValue());
49456    }
49457  }
49458
49459  protected void composeInventoryItem(String name, InventoryItem element) throws IOException {
49460    if (element != null) {
49461    composeResourceAttributes(element);
49462      xml.enter(FHIR_NS, name);
49463      composeInventoryItemElements(element);
49464      composeElementClose(element);
49465      xml.exit(FHIR_NS, name);
49466    }
49467  }
49468
49469  protected void composeInventoryItemElements(InventoryItem element) throws IOException {
49470    composeDomainResourceElements(element);
49471    if (element.hasIdentifier()) { 
49472      for (Identifier e : element.getIdentifier()) 
49473          composeIdentifier("identifier", e);
49474    }
49475    if (element.hasStatusElement())
49476      composeEnumeration("status", element.getStatusElement(), new InventoryItem.InventoryItemStatusCodesEnumFactory());
49477    if (element.hasCategory()) { 
49478      for (CodeableConcept e : element.getCategory()) 
49479          composeCodeableConcept("category", e);
49480    }
49481    if (element.hasCode()) { 
49482      for (CodeableConcept e : element.getCode()) 
49483          composeCodeableConcept("code", e);
49484    }
49485    if (element.hasName()) { 
49486      for (InventoryItem.InventoryItemNameComponent e : element.getName()) 
49487          composeInventoryItemNameComponent("name", e);
49488    }
49489    if (element.hasResponsibleOrganization()) { 
49490      for (InventoryItem.InventoryItemResponsibleOrganizationComponent e : element.getResponsibleOrganization()) 
49491          composeInventoryItemResponsibleOrganizationComponent("responsibleOrganization", e);
49492    }
49493    if (element.hasDescription()) {
49494      composeInventoryItemDescriptionComponent("description", element.getDescription());
49495    }
49496    if (element.hasInventoryStatus()) { 
49497      for (CodeableConcept e : element.getInventoryStatus()) 
49498          composeCodeableConcept("inventoryStatus", e);
49499    }
49500    if (element.hasBaseUnit()) {
49501      composeCodeableConcept("baseUnit", element.getBaseUnit());
49502    }
49503    if (element.hasNetContent()) {
49504      composeQuantity("netContent", element.getNetContent());
49505    }
49506    if (element.hasAssociation()) { 
49507      for (InventoryItem.InventoryItemAssociationComponent e : element.getAssociation()) 
49508          composeInventoryItemAssociationComponent("association", e);
49509    }
49510    if (element.hasCharacteristic()) { 
49511      for (InventoryItem.InventoryItemCharacteristicComponent e : element.getCharacteristic()) 
49512          composeInventoryItemCharacteristicComponent("characteristic", e);
49513    }
49514    if (element.hasInstance()) {
49515      composeInventoryItemInstanceComponent("instance", element.getInstance());
49516    }
49517    if (element.hasProductReference()) {
49518      composeReference("productReference", element.getProductReference());
49519    }
49520  }
49521
49522  protected void composeInventoryItemNameComponent(String name, InventoryItem.InventoryItemNameComponent element) throws IOException {
49523    if (element != null) {
49524    composeElementAttributes(element);
49525      xml.enter(FHIR_NS, name);
49526      composeInventoryItemNameComponentElements(element);
49527      composeElementClose(element);
49528      xml.exit(FHIR_NS, name);
49529    }
49530  }
49531
49532  protected void composeInventoryItemNameComponentElements(InventoryItem.InventoryItemNameComponent element) throws IOException {
49533    composeBackboneElementElements(element);
49534    if (element.hasNameType()) {
49535      composeCoding("nameType", element.getNameType());
49536    }
49537    if (element.hasLanguageElement())
49538      composeEnumeration("language", element.getLanguageElement(), new Enumerations.CommonLanguagesEnumFactory());
49539    if (element.hasNameElement()) {
49540      composeString("name", element.getNameElement());
49541    }
49542  }
49543
49544  protected void composeInventoryItemResponsibleOrganizationComponent(String name, InventoryItem.InventoryItemResponsibleOrganizationComponent element) throws IOException {
49545    if (element != null) {
49546    composeElementAttributes(element);
49547      xml.enter(FHIR_NS, name);
49548      composeInventoryItemResponsibleOrganizationComponentElements(element);
49549      composeElementClose(element);
49550      xml.exit(FHIR_NS, name);
49551    }
49552  }
49553
49554  protected void composeInventoryItemResponsibleOrganizationComponentElements(InventoryItem.InventoryItemResponsibleOrganizationComponent element) throws IOException {
49555    composeBackboneElementElements(element);
49556    if (element.hasRole()) {
49557      composeCodeableConcept("role", element.getRole());
49558    }
49559    if (element.hasOrganization()) {
49560      composeReference("organization", element.getOrganization());
49561    }
49562  }
49563
49564  protected void composeInventoryItemDescriptionComponent(String name, InventoryItem.InventoryItemDescriptionComponent element) throws IOException {
49565    if (element != null) {
49566    composeElementAttributes(element);
49567      xml.enter(FHIR_NS, name);
49568      composeInventoryItemDescriptionComponentElements(element);
49569      composeElementClose(element);
49570      xml.exit(FHIR_NS, name);
49571    }
49572  }
49573
49574  protected void composeInventoryItemDescriptionComponentElements(InventoryItem.InventoryItemDescriptionComponent element) throws IOException {
49575    composeBackboneElementElements(element);
49576    if (element.hasLanguageElement())
49577      composeEnumeration("language", element.getLanguageElement(), new Enumerations.CommonLanguagesEnumFactory());
49578    if (element.hasDescriptionElement()) {
49579      composeString("description", element.getDescriptionElement());
49580    }
49581  }
49582
49583  protected void composeInventoryItemAssociationComponent(String name, InventoryItem.InventoryItemAssociationComponent element) throws IOException {
49584    if (element != null) {
49585    composeElementAttributes(element);
49586      xml.enter(FHIR_NS, name);
49587      composeInventoryItemAssociationComponentElements(element);
49588      composeElementClose(element);
49589      xml.exit(FHIR_NS, name);
49590    }
49591  }
49592
49593  protected void composeInventoryItemAssociationComponentElements(InventoryItem.InventoryItemAssociationComponent element) throws IOException {
49594    composeBackboneElementElements(element);
49595    if (element.hasAssociationType()) {
49596      composeCodeableConcept("associationType", element.getAssociationType());
49597    }
49598    if (element.hasRelatedItem()) {
49599      composeReference("relatedItem", element.getRelatedItem());
49600    }
49601    if (element.hasQuantity()) {
49602      composeRatio("quantity", element.getQuantity());
49603    }
49604  }
49605
49606  protected void composeInventoryItemCharacteristicComponent(String name, InventoryItem.InventoryItemCharacteristicComponent element) throws IOException {
49607    if (element != null) {
49608    composeElementAttributes(element);
49609      xml.enter(FHIR_NS, name);
49610      composeInventoryItemCharacteristicComponentElements(element);
49611      composeElementClose(element);
49612      xml.exit(FHIR_NS, name);
49613    }
49614  }
49615
49616  protected void composeInventoryItemCharacteristicComponentElements(InventoryItem.InventoryItemCharacteristicComponent element) throws IOException {
49617    composeBackboneElementElements(element);
49618    if (element.hasCharacteristicType()) {
49619      composeCodeableConcept("characteristicType", element.getCharacteristicType());
49620    }
49621    if (element.hasValue()) {
49622      composeType("value", element.getValue());
49623    }  }
49624
49625  protected void composeInventoryItemInstanceComponent(String name, InventoryItem.InventoryItemInstanceComponent element) throws IOException {
49626    if (element != null) {
49627    composeElementAttributes(element);
49628      xml.enter(FHIR_NS, name);
49629      composeInventoryItemInstanceComponentElements(element);
49630      composeElementClose(element);
49631      xml.exit(FHIR_NS, name);
49632    }
49633  }
49634
49635  protected void composeInventoryItemInstanceComponentElements(InventoryItem.InventoryItemInstanceComponent element) throws IOException {
49636    composeBackboneElementElements(element);
49637    if (element.hasIdentifier()) { 
49638      for (Identifier e : element.getIdentifier()) 
49639          composeIdentifier("identifier", e);
49640    }
49641    if (element.hasLotNumberElement()) {
49642      composeString("lotNumber", element.getLotNumberElement());
49643    }
49644    if (element.hasExpiryElement()) {
49645      composeDateTime("expiry", element.getExpiryElement());
49646    }
49647    if (element.hasSubject()) {
49648      composeReference("subject", element.getSubject());
49649    }
49650    if (element.hasLocation()) {
49651      composeReference("location", element.getLocation());
49652    }
49653  }
49654
49655  protected void composeInventoryReport(String name, InventoryReport element) throws IOException {
49656    if (element != null) {
49657    composeResourceAttributes(element);
49658      xml.enter(FHIR_NS, name);
49659      composeInventoryReportElements(element);
49660      composeElementClose(element);
49661      xml.exit(FHIR_NS, name);
49662    }
49663  }
49664
49665  protected void composeInventoryReportElements(InventoryReport element) throws IOException {
49666    composeDomainResourceElements(element);
49667    if (element.hasIdentifier()) { 
49668      for (Identifier e : element.getIdentifier()) 
49669          composeIdentifier("identifier", e);
49670    }
49671    if (element.hasStatusElement())
49672      composeEnumeration("status", element.getStatusElement(), new InventoryReport.InventoryReportStatusEnumFactory());
49673    if (element.hasCountTypeElement())
49674      composeEnumeration("countType", element.getCountTypeElement(), new InventoryReport.InventoryCountTypeEnumFactory());
49675    if (element.hasOperationType()) {
49676      composeCodeableConcept("operationType", element.getOperationType());
49677    }
49678    if (element.hasOperationTypeReason()) {
49679      composeCodeableConcept("operationTypeReason", element.getOperationTypeReason());
49680    }
49681    if (element.hasReportedDateTimeElement()) {
49682      composeDateTime("reportedDateTime", element.getReportedDateTimeElement());
49683    }
49684    if (element.hasReporter()) {
49685      composeReference("reporter", element.getReporter());
49686    }
49687    if (element.hasReportingPeriod()) {
49688      composePeriod("reportingPeriod", element.getReportingPeriod());
49689    }
49690    if (element.hasInventoryListing()) { 
49691      for (InventoryReport.InventoryReportInventoryListingComponent e : element.getInventoryListing()) 
49692          composeInventoryReportInventoryListingComponent("inventoryListing", e);
49693    }
49694    if (element.hasNote()) { 
49695      for (Annotation e : element.getNote()) 
49696          composeAnnotation("note", e);
49697    }
49698  }
49699
49700  protected void composeInventoryReportInventoryListingComponent(String name, InventoryReport.InventoryReportInventoryListingComponent element) throws IOException {
49701    if (element != null) {
49702    composeElementAttributes(element);
49703      xml.enter(FHIR_NS, name);
49704      composeInventoryReportInventoryListingComponentElements(element);
49705      composeElementClose(element);
49706      xml.exit(FHIR_NS, name);
49707    }
49708  }
49709
49710  protected void composeInventoryReportInventoryListingComponentElements(InventoryReport.InventoryReportInventoryListingComponent element) throws IOException {
49711    composeBackboneElementElements(element);
49712    if (element.hasLocation()) {
49713      composeReference("location", element.getLocation());
49714    }
49715    if (element.hasItemStatus()) {
49716      composeCodeableConcept("itemStatus", element.getItemStatus());
49717    }
49718    if (element.hasCountingDateTimeElement()) {
49719      composeDateTime("countingDateTime", element.getCountingDateTimeElement());
49720    }
49721    if (element.hasItem()) { 
49722      for (InventoryReport.InventoryReportInventoryListingItemComponent e : element.getItem()) 
49723          composeInventoryReportInventoryListingItemComponent("item", e);
49724    }
49725  }
49726
49727  protected void composeInventoryReportInventoryListingItemComponent(String name, InventoryReport.InventoryReportInventoryListingItemComponent element) throws IOException {
49728    if (element != null) {
49729    composeElementAttributes(element);
49730      xml.enter(FHIR_NS, name);
49731      composeInventoryReportInventoryListingItemComponentElements(element);
49732      composeElementClose(element);
49733      xml.exit(FHIR_NS, name);
49734    }
49735  }
49736
49737  protected void composeInventoryReportInventoryListingItemComponentElements(InventoryReport.InventoryReportInventoryListingItemComponent element) throws IOException {
49738    composeBackboneElementElements(element);
49739    if (element.hasCategory()) {
49740      composeCodeableConcept("category", element.getCategory());
49741    }
49742    if (element.hasQuantity()) {
49743      composeQuantity("quantity", element.getQuantity());
49744    }
49745    if (element.hasItem()) {
49746      composeCodeableReference("item", element.getItem());
49747    }
49748  }
49749
49750  protected void composeInvoice(String name, Invoice element) throws IOException {
49751    if (element != null) {
49752    composeResourceAttributes(element);
49753      xml.enter(FHIR_NS, name);
49754      composeInvoiceElements(element);
49755      composeElementClose(element);
49756      xml.exit(FHIR_NS, name);
49757    }
49758  }
49759
49760  protected void composeInvoiceElements(Invoice element) throws IOException {
49761    composeDomainResourceElements(element);
49762    if (element.hasIdentifier()) { 
49763      for (Identifier e : element.getIdentifier()) 
49764          composeIdentifier("identifier", e);
49765    }
49766    if (element.hasStatusElement())
49767      composeEnumeration("status", element.getStatusElement(), new Invoice.InvoiceStatusEnumFactory());
49768    if (element.hasCancelledReasonElement()) {
49769      composeString("cancelledReason", element.getCancelledReasonElement());
49770    }
49771    if (element.hasType()) {
49772      composeCodeableConcept("type", element.getType());
49773    }
49774    if (element.hasSubject()) {
49775      composeReference("subject", element.getSubject());
49776    }
49777    if (element.hasRecipient()) {
49778      composeReference("recipient", element.getRecipient());
49779    }
49780    if (element.hasDateElement()) {
49781      composeDateTime("date", element.getDateElement());
49782    }
49783    if (element.hasCreationElement()) {
49784      composeDateTime("creation", element.getCreationElement());
49785    }
49786    if (element.hasPeriod()) {
49787      composeType("period", element.getPeriod());
49788    }    if (element.hasParticipant()) { 
49789      for (Invoice.InvoiceParticipantComponent e : element.getParticipant()) 
49790          composeInvoiceParticipantComponent("participant", e);
49791    }
49792    if (element.hasIssuer()) {
49793      composeReference("issuer", element.getIssuer());
49794    }
49795    if (element.hasAccount()) {
49796      composeReference("account", element.getAccount());
49797    }
49798    if (element.hasLineItem()) { 
49799      for (Invoice.InvoiceLineItemComponent e : element.getLineItem()) 
49800          composeInvoiceLineItemComponent("lineItem", e);
49801    }
49802    if (element.hasTotalPriceComponent()) { 
49803      for (MonetaryComponent e : element.getTotalPriceComponent()) 
49804          composeMonetaryComponent("totalPriceComponent", e);
49805    }
49806    if (element.hasTotalNet()) {
49807      composeMoney("totalNet", element.getTotalNet());
49808    }
49809    if (element.hasTotalGross()) {
49810      composeMoney("totalGross", element.getTotalGross());
49811    }
49812    if (element.hasPaymentTermsElement()) {
49813      composeMarkdown("paymentTerms", element.getPaymentTermsElement());
49814    }
49815    if (element.hasNote()) { 
49816      for (Annotation e : element.getNote()) 
49817          composeAnnotation("note", e);
49818    }
49819  }
49820
49821  protected void composeInvoiceParticipantComponent(String name, Invoice.InvoiceParticipantComponent element) throws IOException {
49822    if (element != null) {
49823    composeElementAttributes(element);
49824      xml.enter(FHIR_NS, name);
49825      composeInvoiceParticipantComponentElements(element);
49826      composeElementClose(element);
49827      xml.exit(FHIR_NS, name);
49828    }
49829  }
49830
49831  protected void composeInvoiceParticipantComponentElements(Invoice.InvoiceParticipantComponent element) throws IOException {
49832    composeBackboneElementElements(element);
49833    if (element.hasRole()) {
49834      composeCodeableConcept("role", element.getRole());
49835    }
49836    if (element.hasActor()) {
49837      composeReference("actor", element.getActor());
49838    }
49839  }
49840
49841  protected void composeInvoiceLineItemComponent(String name, Invoice.InvoiceLineItemComponent element) throws IOException {
49842    if (element != null) {
49843    composeElementAttributes(element);
49844      xml.enter(FHIR_NS, name);
49845      composeInvoiceLineItemComponentElements(element);
49846      composeElementClose(element);
49847      xml.exit(FHIR_NS, name);
49848    }
49849  }
49850
49851  protected void composeInvoiceLineItemComponentElements(Invoice.InvoiceLineItemComponent element) throws IOException {
49852    composeBackboneElementElements(element);
49853    if (element.hasSequenceElement()) {
49854      composePositiveInt("sequence", element.getSequenceElement());
49855    }
49856    if (element.hasServiced()) {
49857      composeType("serviced", element.getServiced());
49858    }    if (element.hasChargeItem()) {
49859      composeType("chargeItem", element.getChargeItem());
49860    }    if (element.hasPriceComponent()) { 
49861      for (MonetaryComponent e : element.getPriceComponent()) 
49862          composeMonetaryComponent("priceComponent", e);
49863    }
49864  }
49865
49866  protected void composeLibrary(String name, Library element) throws IOException {
49867    if (element != null) {
49868    composeResourceAttributes(element);
49869      xml.enter(FHIR_NS, name);
49870      composeLibraryElements(element);
49871      composeElementClose(element);
49872      xml.exit(FHIR_NS, name);
49873    }
49874  }
49875
49876  protected void composeLibraryElements(Library element) throws IOException {
49877    composeMetadataResourceElements(element);
49878    if (element.hasUrlElement()) {
49879      composeUri("url", element.getUrlElement());
49880    }
49881    if (element.hasIdentifier()) { 
49882      for (Identifier e : element.getIdentifier()) 
49883          composeIdentifier("identifier", e);
49884    }
49885    if (element.hasVersionElement()) {
49886      composeString("version", element.getVersionElement());
49887    }
49888    if (element.hasVersionAlgorithm()) {
49889      composeType("versionAlgorithm", element.getVersionAlgorithm());
49890    }    if (element.hasNameElement()) {
49891      composeString("name", element.getNameElement());
49892    }
49893    if (element.hasTitleElement()) {
49894      composeString("title", element.getTitleElement());
49895    }
49896    if (element.hasSubtitleElement()) {
49897      composeString("subtitle", element.getSubtitleElement());
49898    }
49899    if (element.hasStatusElement())
49900      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
49901    if (element.hasExperimentalElement()) {
49902      composeBoolean("experimental", element.getExperimentalElement());
49903    }
49904    if (element.hasType()) {
49905      composeCodeableConcept("type", element.getType());
49906    }
49907    if (element.hasSubject()) {
49908      composeType("subject", element.getSubject());
49909    }    if (element.hasDateElement()) {
49910      composeDateTime("date", element.getDateElement());
49911    }
49912    if (element.hasPublisherElement()) {
49913      composeString("publisher", element.getPublisherElement());
49914    }
49915    if (element.hasContact()) { 
49916      for (ContactDetail e : element.getContact()) 
49917          composeContactDetail("contact", e);
49918    }
49919    if (element.hasDescriptionElement()) {
49920      composeMarkdown("description", element.getDescriptionElement());
49921    }
49922    if (element.hasUseContext()) { 
49923      for (UsageContext e : element.getUseContext()) 
49924          composeUsageContext("useContext", e);
49925    }
49926    if (element.hasJurisdiction()) { 
49927      for (CodeableConcept e : element.getJurisdiction()) 
49928          composeCodeableConcept("jurisdiction", e);
49929    }
49930    if (element.hasPurposeElement()) {
49931      composeMarkdown("purpose", element.getPurposeElement());
49932    }
49933    if (element.hasUsageElement()) {
49934      composeMarkdown("usage", element.getUsageElement());
49935    }
49936    if (element.hasCopyrightElement()) {
49937      composeMarkdown("copyright", element.getCopyrightElement());
49938    }
49939    if (element.hasCopyrightLabelElement()) {
49940      composeString("copyrightLabel", element.getCopyrightLabelElement());
49941    }
49942    if (element.hasApprovalDateElement()) {
49943      composeDate("approvalDate", element.getApprovalDateElement());
49944    }
49945    if (element.hasLastReviewDateElement()) {
49946      composeDate("lastReviewDate", element.getLastReviewDateElement());
49947    }
49948    if (element.hasEffectivePeriod()) {
49949      composePeriod("effectivePeriod", element.getEffectivePeriod());
49950    }
49951    if (element.hasTopic()) { 
49952      for (CodeableConcept e : element.getTopic()) 
49953          composeCodeableConcept("topic", e);
49954    }
49955    if (element.hasAuthor()) { 
49956      for (ContactDetail e : element.getAuthor()) 
49957          composeContactDetail("author", e);
49958    }
49959    if (element.hasEditor()) { 
49960      for (ContactDetail e : element.getEditor()) 
49961          composeContactDetail("editor", e);
49962    }
49963    if (element.hasReviewer()) { 
49964      for (ContactDetail e : element.getReviewer()) 
49965          composeContactDetail("reviewer", e);
49966    }
49967    if (element.hasEndorser()) { 
49968      for (ContactDetail e : element.getEndorser()) 
49969          composeContactDetail("endorser", e);
49970    }
49971    if (element.hasRelatedArtifact()) { 
49972      for (RelatedArtifact e : element.getRelatedArtifact()) 
49973          composeRelatedArtifact("relatedArtifact", e);
49974    }
49975    if (element.hasParameter()) { 
49976      for (ParameterDefinition e : element.getParameter()) 
49977          composeParameterDefinition("parameter", e);
49978    }
49979    if (element.hasDataRequirement()) { 
49980      for (DataRequirement e : element.getDataRequirement()) 
49981          composeDataRequirement("dataRequirement", e);
49982    }
49983    if (element.hasContent()) { 
49984      for (Attachment e : element.getContent()) 
49985          composeAttachment("content", e);
49986    }
49987  }
49988
49989  protected void composeLinkage(String name, Linkage element) throws IOException {
49990    if (element != null) {
49991    composeResourceAttributes(element);
49992      xml.enter(FHIR_NS, name);
49993      composeLinkageElements(element);
49994      composeElementClose(element);
49995      xml.exit(FHIR_NS, name);
49996    }
49997  }
49998
49999  protected void composeLinkageElements(Linkage element) throws IOException {
50000    composeDomainResourceElements(element);
50001    if (element.hasActiveElement()) {
50002      composeBoolean("active", element.getActiveElement());
50003    }
50004    if (element.hasAuthor()) {
50005      composeReference("author", element.getAuthor());
50006    }
50007    if (element.hasItem()) { 
50008      for (Linkage.LinkageItemComponent e : element.getItem()) 
50009          composeLinkageItemComponent("item", e);
50010    }
50011  }
50012
50013  protected void composeLinkageItemComponent(String name, Linkage.LinkageItemComponent element) throws IOException {
50014    if (element != null) {
50015    composeElementAttributes(element);
50016      xml.enter(FHIR_NS, name);
50017      composeLinkageItemComponentElements(element);
50018      composeElementClose(element);
50019      xml.exit(FHIR_NS, name);
50020    }
50021  }
50022
50023  protected void composeLinkageItemComponentElements(Linkage.LinkageItemComponent element) throws IOException {
50024    composeBackboneElementElements(element);
50025    if (element.hasTypeElement())
50026      composeEnumeration("type", element.getTypeElement(), new Linkage.LinkageTypeEnumFactory());
50027    if (element.hasResource()) {
50028      composeReference("resource", element.getResource());
50029    }
50030  }
50031
50032  protected void composeListResource(String name, ListResource element) throws IOException {
50033    if (element != null) {
50034    composeResourceAttributes(element);
50035      xml.enter(FHIR_NS, name);
50036      composeListResourceElements(element);
50037      composeElementClose(element);
50038      xml.exit(FHIR_NS, name);
50039    }
50040  }
50041
50042  protected void composeListResourceElements(ListResource element) throws IOException {
50043    composeDomainResourceElements(element);
50044    if (element.hasIdentifier()) { 
50045      for (Identifier e : element.getIdentifier()) 
50046          composeIdentifier("identifier", e);
50047    }
50048    if (element.hasStatusElement())
50049      composeEnumeration("status", element.getStatusElement(), new ListResource.ListStatusEnumFactory());
50050    if (element.hasModeElement())
50051      composeEnumeration("mode", element.getModeElement(), new Enumerations.ListModeEnumFactory());
50052    if (element.hasTitleElement()) {
50053      composeString("title", element.getTitleElement());
50054    }
50055    if (element.hasCode()) {
50056      composeCodeableConcept("code", element.getCode());
50057    }
50058    if (element.hasSubject()) { 
50059      for (Reference e : element.getSubject()) 
50060          composeReference("subject", e);
50061    }
50062    if (element.hasEncounter()) {
50063      composeReference("encounter", element.getEncounter());
50064    }
50065    if (element.hasDateElement()) {
50066      composeDateTime("date", element.getDateElement());
50067    }
50068    if (element.hasSource()) {
50069      composeReference("source", element.getSource());
50070    }
50071    if (element.hasOrderedBy()) {
50072      composeCodeableConcept("orderedBy", element.getOrderedBy());
50073    }
50074    if (element.hasNote()) { 
50075      for (Annotation e : element.getNote()) 
50076          composeAnnotation("note", e);
50077    }
50078    if (element.hasEntry()) { 
50079      for (ListResource.ListResourceEntryComponent e : element.getEntry()) 
50080          composeListResourceEntryComponent("entry", e);
50081    }
50082    if (element.hasEmptyReason()) {
50083      composeCodeableConcept("emptyReason", element.getEmptyReason());
50084    }
50085  }
50086
50087  protected void composeListResourceEntryComponent(String name, ListResource.ListResourceEntryComponent element) throws IOException {
50088    if (element != null) {
50089    composeElementAttributes(element);
50090      xml.enter(FHIR_NS, name);
50091      composeListResourceEntryComponentElements(element);
50092      composeElementClose(element);
50093      xml.exit(FHIR_NS, name);
50094    }
50095  }
50096
50097  protected void composeListResourceEntryComponentElements(ListResource.ListResourceEntryComponent element) throws IOException {
50098    composeBackboneElementElements(element);
50099    if (element.hasFlag()) {
50100      composeCodeableConcept("flag", element.getFlag());
50101    }
50102    if (element.hasDeletedElement()) {
50103      composeBoolean("deleted", element.getDeletedElement());
50104    }
50105    if (element.hasDateElement()) {
50106      composeDateTime("date", element.getDateElement());
50107    }
50108    if (element.hasItem()) {
50109      composeReference("item", element.getItem());
50110    }
50111  }
50112
50113  protected void composeLocation(String name, Location element) throws IOException {
50114    if (element != null) {
50115    composeResourceAttributes(element);
50116      xml.enter(FHIR_NS, name);
50117      composeLocationElements(element);
50118      composeElementClose(element);
50119      xml.exit(FHIR_NS, name);
50120    }
50121  }
50122
50123  protected void composeLocationElements(Location element) throws IOException {
50124    composeDomainResourceElements(element);
50125    if (element.hasIdentifier()) { 
50126      for (Identifier e : element.getIdentifier()) 
50127          composeIdentifier("identifier", e);
50128    }
50129    if (element.hasStatusElement())
50130      composeEnumeration("status", element.getStatusElement(), new Location.LocationStatusEnumFactory());
50131    if (element.hasOperationalStatus()) {
50132      composeCoding("operationalStatus", element.getOperationalStatus());
50133    }
50134    if (element.hasNameElement()) {
50135      composeString("name", element.getNameElement());
50136    }
50137    if (element.hasAlias()) { 
50138      for (StringType e : element.getAlias()) 
50139          composeString("alias", e);
50140    }
50141    if (element.hasDescriptionElement()) {
50142      composeMarkdown("description", element.getDescriptionElement());
50143    }
50144    if (element.hasModeElement())
50145      composeEnumeration("mode", element.getModeElement(), new Location.LocationModeEnumFactory());
50146    if (element.hasType()) { 
50147      for (CodeableConcept e : element.getType()) 
50148          composeCodeableConcept("type", e);
50149    }
50150    if (element.hasContact()) { 
50151      for (ExtendedContactDetail e : element.getContact()) 
50152          composeExtendedContactDetail("contact", e);
50153    }
50154    if (element.hasAddress()) {
50155      composeAddress("address", element.getAddress());
50156    }
50157    if (element.hasForm()) {
50158      composeCodeableConcept("form", element.getForm());
50159    }
50160    if (element.hasPosition()) {
50161      composeLocationPositionComponent("position", element.getPosition());
50162    }
50163    if (element.hasManagingOrganization()) {
50164      composeReference("managingOrganization", element.getManagingOrganization());
50165    }
50166    if (element.hasPartOf()) {
50167      composeReference("partOf", element.getPartOf());
50168    }
50169    if (element.hasCharacteristic()) { 
50170      for (CodeableConcept e : element.getCharacteristic()) 
50171          composeCodeableConcept("characteristic", e);
50172    }
50173    if (element.hasHoursOfOperation()) { 
50174      for (Availability e : element.getHoursOfOperation()) 
50175          composeAvailability("hoursOfOperation", e);
50176    }
50177    if (element.hasVirtualService()) { 
50178      for (VirtualServiceDetail e : element.getVirtualService()) 
50179          composeVirtualServiceDetail("virtualService", e);
50180    }
50181    if (element.hasEndpoint()) { 
50182      for (Reference e : element.getEndpoint()) 
50183          composeReference("endpoint", e);
50184    }
50185  }
50186
50187  protected void composeLocationPositionComponent(String name, Location.LocationPositionComponent element) throws IOException {
50188    if (element != null) {
50189    composeElementAttributes(element);
50190      xml.enter(FHIR_NS, name);
50191      composeLocationPositionComponentElements(element);
50192      composeElementClose(element);
50193      xml.exit(FHIR_NS, name);
50194    }
50195  }
50196
50197  protected void composeLocationPositionComponentElements(Location.LocationPositionComponent element) throws IOException {
50198    composeBackboneElementElements(element);
50199    if (element.hasLongitudeElement()) {
50200      composeDecimal("longitude", element.getLongitudeElement());
50201    }
50202    if (element.hasLatitudeElement()) {
50203      composeDecimal("latitude", element.getLatitudeElement());
50204    }
50205    if (element.hasAltitudeElement()) {
50206      composeDecimal("altitude", element.getAltitudeElement());
50207    }
50208  }
50209
50210  protected void composeManufacturedItemDefinition(String name, ManufacturedItemDefinition element) throws IOException {
50211    if (element != null) {
50212    composeResourceAttributes(element);
50213      xml.enter(FHIR_NS, name);
50214      composeManufacturedItemDefinitionElements(element);
50215      composeElementClose(element);
50216      xml.exit(FHIR_NS, name);
50217    }
50218  }
50219
50220  protected void composeManufacturedItemDefinitionElements(ManufacturedItemDefinition element) throws IOException {
50221    composeDomainResourceElements(element);
50222    if (element.hasIdentifier()) { 
50223      for (Identifier e : element.getIdentifier()) 
50224          composeIdentifier("identifier", e);
50225    }
50226    if (element.hasStatusElement())
50227      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
50228    if (element.hasNameElement()) {
50229      composeString("name", element.getNameElement());
50230    }
50231    if (element.hasManufacturedDoseForm()) {
50232      composeCodeableConcept("manufacturedDoseForm", element.getManufacturedDoseForm());
50233    }
50234    if (element.hasUnitOfPresentation()) {
50235      composeCodeableConcept("unitOfPresentation", element.getUnitOfPresentation());
50236    }
50237    if (element.hasManufacturer()) { 
50238      for (Reference e : element.getManufacturer()) 
50239          composeReference("manufacturer", e);
50240    }
50241    if (element.hasMarketingStatus()) { 
50242      for (MarketingStatus e : element.getMarketingStatus()) 
50243          composeMarketingStatus("marketingStatus", e);
50244    }
50245    if (element.hasIngredient()) { 
50246      for (CodeableConcept e : element.getIngredient()) 
50247          composeCodeableConcept("ingredient", e);
50248    }
50249    if (element.hasProperty()) { 
50250      for (ManufacturedItemDefinition.ManufacturedItemDefinitionPropertyComponent e : element.getProperty()) 
50251          composeManufacturedItemDefinitionPropertyComponent("property", e);
50252    }
50253    if (element.hasComponent()) { 
50254      for (ManufacturedItemDefinition.ManufacturedItemDefinitionComponentComponent e : element.getComponent()) 
50255          composeManufacturedItemDefinitionComponentComponent("component", e);
50256    }
50257  }
50258
50259  protected void composeManufacturedItemDefinitionPropertyComponent(String name, ManufacturedItemDefinition.ManufacturedItemDefinitionPropertyComponent element) throws IOException {
50260    if (element != null) {
50261    composeElementAttributes(element);
50262      xml.enter(FHIR_NS, name);
50263      composeManufacturedItemDefinitionPropertyComponentElements(element);
50264      composeElementClose(element);
50265      xml.exit(FHIR_NS, name);
50266    }
50267  }
50268
50269  protected void composeManufacturedItemDefinitionPropertyComponentElements(ManufacturedItemDefinition.ManufacturedItemDefinitionPropertyComponent element) throws IOException {
50270    composeBackboneElementElements(element);
50271    if (element.hasType()) {
50272      composeCodeableConcept("type", element.getType());
50273    }
50274    if (element.hasValue()) {
50275      composeType("value", element.getValue());
50276    }  }
50277
50278  protected void composeManufacturedItemDefinitionComponentComponent(String name, ManufacturedItemDefinition.ManufacturedItemDefinitionComponentComponent element) throws IOException {
50279    if (element != null) {
50280    composeElementAttributes(element);
50281      xml.enter(FHIR_NS, name);
50282      composeManufacturedItemDefinitionComponentComponentElements(element);
50283      composeElementClose(element);
50284      xml.exit(FHIR_NS, name);
50285    }
50286  }
50287
50288  protected void composeManufacturedItemDefinitionComponentComponentElements(ManufacturedItemDefinition.ManufacturedItemDefinitionComponentComponent element) throws IOException {
50289    composeBackboneElementElements(element);
50290    if (element.hasType()) {
50291      composeCodeableConcept("type", element.getType());
50292    }
50293    if (element.hasFunction()) { 
50294      for (CodeableConcept e : element.getFunction()) 
50295          composeCodeableConcept("function", e);
50296    }
50297    if (element.hasAmount()) { 
50298      for (Quantity e : element.getAmount()) 
50299          composeQuantity("amount", e);
50300    }
50301    if (element.hasConstituent()) { 
50302      for (ManufacturedItemDefinition.ManufacturedItemDefinitionComponentConstituentComponent e : element.getConstituent()) 
50303          composeManufacturedItemDefinitionComponentConstituentComponent("constituent", e);
50304    }
50305    if (element.hasProperty()) { 
50306      for (ManufacturedItemDefinition.ManufacturedItemDefinitionPropertyComponent e : element.getProperty()) 
50307          composeManufacturedItemDefinitionPropertyComponent("property", e);
50308    }
50309    if (element.hasComponent()) { 
50310      for (ManufacturedItemDefinition.ManufacturedItemDefinitionComponentComponent e : element.getComponent()) 
50311          composeManufacturedItemDefinitionComponentComponent("component", e);
50312    }
50313  }
50314
50315  protected void composeManufacturedItemDefinitionComponentConstituentComponent(String name, ManufacturedItemDefinition.ManufacturedItemDefinitionComponentConstituentComponent element) throws IOException {
50316    if (element != null) {
50317    composeElementAttributes(element);
50318      xml.enter(FHIR_NS, name);
50319      composeManufacturedItemDefinitionComponentConstituentComponentElements(element);
50320      composeElementClose(element);
50321      xml.exit(FHIR_NS, name);
50322    }
50323  }
50324
50325  protected void composeManufacturedItemDefinitionComponentConstituentComponentElements(ManufacturedItemDefinition.ManufacturedItemDefinitionComponentConstituentComponent element) throws IOException {
50326    composeBackboneElementElements(element);
50327    if (element.hasAmount()) { 
50328      for (Quantity e : element.getAmount()) 
50329          composeQuantity("amount", e);
50330    }
50331    if (element.hasLocation()) { 
50332      for (CodeableConcept e : element.getLocation()) 
50333          composeCodeableConcept("location", e);
50334    }
50335    if (element.hasFunction()) { 
50336      for (CodeableConcept e : element.getFunction()) 
50337          composeCodeableConcept("function", e);
50338    }
50339    if (element.hasHasIngredient()) { 
50340      for (CodeableReference e : element.getHasIngredient()) 
50341          composeCodeableReference("hasIngredient", e);
50342    }
50343  }
50344
50345  protected void composeMeasure(String name, Measure element) throws IOException {
50346    if (element != null) {
50347    composeResourceAttributes(element);
50348      xml.enter(FHIR_NS, name);
50349      composeMeasureElements(element);
50350      composeElementClose(element);
50351      xml.exit(FHIR_NS, name);
50352    }
50353  }
50354
50355  protected void composeMeasureElements(Measure element) throws IOException {
50356    composeMetadataResourceElements(element);
50357    if (element.hasUrlElement()) {
50358      composeUri("url", element.getUrlElement());
50359    }
50360    if (element.hasIdentifier()) { 
50361      for (Identifier e : element.getIdentifier()) 
50362          composeIdentifier("identifier", e);
50363    }
50364    if (element.hasVersionElement()) {
50365      composeString("version", element.getVersionElement());
50366    }
50367    if (element.hasVersionAlgorithm()) {
50368      composeType("versionAlgorithm", element.getVersionAlgorithm());
50369    }    if (element.hasNameElement()) {
50370      composeString("name", element.getNameElement());
50371    }
50372    if (element.hasTitleElement()) {
50373      composeString("title", element.getTitleElement());
50374    }
50375    if (element.hasSubtitleElement()) {
50376      composeString("subtitle", element.getSubtitleElement());
50377    }
50378    if (element.hasStatusElement())
50379      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
50380    if (element.hasExperimentalElement()) {
50381      composeBoolean("experimental", element.getExperimentalElement());
50382    }
50383    if (element.hasSubject()) {
50384      composeType("subject", element.getSubject());
50385    }    if (element.hasBasisElement())
50386      composeEnumeration("basis", element.getBasisElement(), new Enumerations.FHIRTypesEnumFactory());
50387    if (element.hasDateElement()) {
50388      composeDateTime("date", element.getDateElement());
50389    }
50390    if (element.hasPublisherElement()) {
50391      composeString("publisher", element.getPublisherElement());
50392    }
50393    if (element.hasContact()) { 
50394      for (ContactDetail e : element.getContact()) 
50395          composeContactDetail("contact", e);
50396    }
50397    if (element.hasDescriptionElement()) {
50398      composeMarkdown("description", element.getDescriptionElement());
50399    }
50400    if (element.hasUseContext()) { 
50401      for (UsageContext e : element.getUseContext()) 
50402          composeUsageContext("useContext", e);
50403    }
50404    if (element.hasJurisdiction()) { 
50405      for (CodeableConcept e : element.getJurisdiction()) 
50406          composeCodeableConcept("jurisdiction", e);
50407    }
50408    if (element.hasPurposeElement()) {
50409      composeMarkdown("purpose", element.getPurposeElement());
50410    }
50411    if (element.hasUsageElement()) {
50412      composeMarkdown("usage", element.getUsageElement());
50413    }
50414    if (element.hasCopyrightElement()) {
50415      composeMarkdown("copyright", element.getCopyrightElement());
50416    }
50417    if (element.hasCopyrightLabelElement()) {
50418      composeString("copyrightLabel", element.getCopyrightLabelElement());
50419    }
50420    if (element.hasApprovalDateElement()) {
50421      composeDate("approvalDate", element.getApprovalDateElement());
50422    }
50423    if (element.hasLastReviewDateElement()) {
50424      composeDate("lastReviewDate", element.getLastReviewDateElement());
50425    }
50426    if (element.hasEffectivePeriod()) {
50427      composePeriod("effectivePeriod", element.getEffectivePeriod());
50428    }
50429    if (element.hasTopic()) { 
50430      for (CodeableConcept e : element.getTopic()) 
50431          composeCodeableConcept("topic", e);
50432    }
50433    if (element.hasAuthor()) { 
50434      for (ContactDetail e : element.getAuthor()) 
50435          composeContactDetail("author", e);
50436    }
50437    if (element.hasEditor()) { 
50438      for (ContactDetail e : element.getEditor()) 
50439          composeContactDetail("editor", e);
50440    }
50441    if (element.hasReviewer()) { 
50442      for (ContactDetail e : element.getReviewer()) 
50443          composeContactDetail("reviewer", e);
50444    }
50445    if (element.hasEndorser()) { 
50446      for (ContactDetail e : element.getEndorser()) 
50447          composeContactDetail("endorser", e);
50448    }
50449    if (element.hasRelatedArtifact()) { 
50450      for (RelatedArtifact e : element.getRelatedArtifact()) 
50451          composeRelatedArtifact("relatedArtifact", e);
50452    }
50453    if (element.hasLibrary()) { 
50454      for (CanonicalType e : element.getLibrary()) 
50455          composeCanonical("library", e);
50456    }
50457    if (element.hasDisclaimerElement()) {
50458      composeMarkdown("disclaimer", element.getDisclaimerElement());
50459    }
50460    if (element.hasScoring()) {
50461      composeCodeableConcept("scoring", element.getScoring());
50462    }
50463    if (element.hasScoringUnit()) {
50464      composeCodeableConcept("scoringUnit", element.getScoringUnit());
50465    }
50466    if (element.hasCompositeScoring()) {
50467      composeCodeableConcept("compositeScoring", element.getCompositeScoring());
50468    }
50469    if (element.hasType()) { 
50470      for (CodeableConcept e : element.getType()) 
50471          composeCodeableConcept("type", e);
50472    }
50473    if (element.hasRiskAdjustmentElement()) {
50474      composeMarkdown("riskAdjustment", element.getRiskAdjustmentElement());
50475    }
50476    if (element.hasRateAggregationElement()) {
50477      composeMarkdown("rateAggregation", element.getRateAggregationElement());
50478    }
50479    if (element.hasRationaleElement()) {
50480      composeMarkdown("rationale", element.getRationaleElement());
50481    }
50482    if (element.hasClinicalRecommendationStatementElement()) {
50483      composeMarkdown("clinicalRecommendationStatement", element.getClinicalRecommendationStatementElement());
50484    }
50485    if (element.hasImprovementNotation()) {
50486      composeCodeableConcept("improvementNotation", element.getImprovementNotation());
50487    }
50488    if (element.hasTerm()) { 
50489      for (Measure.MeasureTermComponent e : element.getTerm()) 
50490          composeMeasureTermComponent("term", e);
50491    }
50492    if (element.hasGuidanceElement()) {
50493      composeMarkdown("guidance", element.getGuidanceElement());
50494    }
50495    if (element.hasGroup()) { 
50496      for (Measure.MeasureGroupComponent e : element.getGroup()) 
50497          composeMeasureGroupComponent("group", e);
50498    }
50499    if (element.hasSupplementalData()) { 
50500      for (Measure.MeasureSupplementalDataComponent e : element.getSupplementalData()) 
50501          composeMeasureSupplementalDataComponent("supplementalData", e);
50502    }
50503  }
50504
50505  protected void composeMeasureTermComponent(String name, Measure.MeasureTermComponent element) throws IOException {
50506    if (element != null) {
50507    composeElementAttributes(element);
50508      xml.enter(FHIR_NS, name);
50509      composeMeasureTermComponentElements(element);
50510      composeElementClose(element);
50511      xml.exit(FHIR_NS, name);
50512    }
50513  }
50514
50515  protected void composeMeasureTermComponentElements(Measure.MeasureTermComponent element) throws IOException {
50516    composeBackboneElementElements(element);
50517    if (element.hasCode()) {
50518      composeCodeableConcept("code", element.getCode());
50519    }
50520    if (element.hasDefinitionElement()) {
50521      composeMarkdown("definition", element.getDefinitionElement());
50522    }
50523  }
50524
50525  protected void composeMeasureGroupComponent(String name, Measure.MeasureGroupComponent element) throws IOException {
50526    if (element != null) {
50527    composeElementAttributes(element);
50528      xml.enter(FHIR_NS, name);
50529      composeMeasureGroupComponentElements(element);
50530      composeElementClose(element);
50531      xml.exit(FHIR_NS, name);
50532    }
50533  }
50534
50535  protected void composeMeasureGroupComponentElements(Measure.MeasureGroupComponent element) throws IOException {
50536    composeBackboneElementElements(element);
50537    if (element.hasLinkIdElement()) {
50538      composeString("linkId", element.getLinkIdElement());
50539    }
50540    if (element.hasCode()) {
50541      composeCodeableConcept("code", element.getCode());
50542    }
50543    if (element.hasDescriptionElement()) {
50544      composeMarkdown("description", element.getDescriptionElement());
50545    }
50546    if (element.hasType()) { 
50547      for (CodeableConcept e : element.getType()) 
50548          composeCodeableConcept("type", e);
50549    }
50550    if (element.hasSubject()) {
50551      composeType("subject", element.getSubject());
50552    }    if (element.hasBasisElement())
50553      composeEnumeration("basis", element.getBasisElement(), new Enumerations.FHIRTypesEnumFactory());
50554    if (element.hasScoring()) {
50555      composeCodeableConcept("scoring", element.getScoring());
50556    }
50557    if (element.hasScoringUnit()) {
50558      composeCodeableConcept("scoringUnit", element.getScoringUnit());
50559    }
50560    if (element.hasRateAggregationElement()) {
50561      composeMarkdown("rateAggregation", element.getRateAggregationElement());
50562    }
50563    if (element.hasImprovementNotation()) {
50564      composeCodeableConcept("improvementNotation", element.getImprovementNotation());
50565    }
50566    if (element.hasLibrary()) { 
50567      for (CanonicalType e : element.getLibrary()) 
50568          composeCanonical("library", e);
50569    }
50570    if (element.hasPopulation()) { 
50571      for (Measure.MeasureGroupPopulationComponent e : element.getPopulation()) 
50572          composeMeasureGroupPopulationComponent("population", e);
50573    }
50574    if (element.hasStratifier()) { 
50575      for (Measure.MeasureGroupStratifierComponent e : element.getStratifier()) 
50576          composeMeasureGroupStratifierComponent("stratifier", e);
50577    }
50578  }
50579
50580  protected void composeMeasureGroupPopulationComponent(String name, Measure.MeasureGroupPopulationComponent element) throws IOException {
50581    if (element != null) {
50582    composeElementAttributes(element);
50583      xml.enter(FHIR_NS, name);
50584      composeMeasureGroupPopulationComponentElements(element);
50585      composeElementClose(element);
50586      xml.exit(FHIR_NS, name);
50587    }
50588  }
50589
50590  protected void composeMeasureGroupPopulationComponentElements(Measure.MeasureGroupPopulationComponent element) throws IOException {
50591    composeBackboneElementElements(element);
50592    if (element.hasLinkIdElement()) {
50593      composeString("linkId", element.getLinkIdElement());
50594    }
50595    if (element.hasCode()) {
50596      composeCodeableConcept("code", element.getCode());
50597    }
50598    if (element.hasDescriptionElement()) {
50599      composeMarkdown("description", element.getDescriptionElement());
50600    }
50601    if (element.hasCriteria()) {
50602      composeExpression("criteria", element.getCriteria());
50603    }
50604    if (element.hasGroupDefinition()) {
50605      composeReference("groupDefinition", element.getGroupDefinition());
50606    }
50607    if (element.hasInputPopulationIdElement()) {
50608      composeString("inputPopulationId", element.getInputPopulationIdElement());
50609    }
50610    if (element.hasAggregateMethod()) {
50611      composeCodeableConcept("aggregateMethod", element.getAggregateMethod());
50612    }
50613  }
50614
50615  protected void composeMeasureGroupStratifierComponent(String name, Measure.MeasureGroupStratifierComponent element) throws IOException {
50616    if (element != null) {
50617    composeElementAttributes(element);
50618      xml.enter(FHIR_NS, name);
50619      composeMeasureGroupStratifierComponentElements(element);
50620      composeElementClose(element);
50621      xml.exit(FHIR_NS, name);
50622    }
50623  }
50624
50625  protected void composeMeasureGroupStratifierComponentElements(Measure.MeasureGroupStratifierComponent element) throws IOException {
50626    composeBackboneElementElements(element);
50627    if (element.hasLinkIdElement()) {
50628      composeString("linkId", element.getLinkIdElement());
50629    }
50630    if (element.hasCode()) {
50631      composeCodeableConcept("code", element.getCode());
50632    }
50633    if (element.hasDescriptionElement()) {
50634      composeMarkdown("description", element.getDescriptionElement());
50635    }
50636    if (element.hasCriteria()) {
50637      composeExpression("criteria", element.getCriteria());
50638    }
50639    if (element.hasGroupDefinition()) {
50640      composeReference("groupDefinition", element.getGroupDefinition());
50641    }
50642    if (element.hasComponent()) { 
50643      for (Measure.MeasureGroupStratifierComponentComponent e : element.getComponent()) 
50644          composeMeasureGroupStratifierComponentComponent("component", e);
50645    }
50646  }
50647
50648  protected void composeMeasureGroupStratifierComponentComponent(String name, Measure.MeasureGroupStratifierComponentComponent element) throws IOException {
50649    if (element != null) {
50650    composeElementAttributes(element);
50651      xml.enter(FHIR_NS, name);
50652      composeMeasureGroupStratifierComponentComponentElements(element);
50653      composeElementClose(element);
50654      xml.exit(FHIR_NS, name);
50655    }
50656  }
50657
50658  protected void composeMeasureGroupStratifierComponentComponentElements(Measure.MeasureGroupStratifierComponentComponent element) throws IOException {
50659    composeBackboneElementElements(element);
50660    if (element.hasLinkIdElement()) {
50661      composeString("linkId", element.getLinkIdElement());
50662    }
50663    if (element.hasCode()) {
50664      composeCodeableConcept("code", element.getCode());
50665    }
50666    if (element.hasDescriptionElement()) {
50667      composeMarkdown("description", element.getDescriptionElement());
50668    }
50669    if (element.hasCriteria()) {
50670      composeExpression("criteria", element.getCriteria());
50671    }
50672    if (element.hasGroupDefinition()) {
50673      composeReference("groupDefinition", element.getGroupDefinition());
50674    }
50675  }
50676
50677  protected void composeMeasureSupplementalDataComponent(String name, Measure.MeasureSupplementalDataComponent element) throws IOException {
50678    if (element != null) {
50679    composeElementAttributes(element);
50680      xml.enter(FHIR_NS, name);
50681      composeMeasureSupplementalDataComponentElements(element);
50682      composeElementClose(element);
50683      xml.exit(FHIR_NS, name);
50684    }
50685  }
50686
50687  protected void composeMeasureSupplementalDataComponentElements(Measure.MeasureSupplementalDataComponent element) throws IOException {
50688    composeBackboneElementElements(element);
50689    if (element.hasLinkIdElement()) {
50690      composeString("linkId", element.getLinkIdElement());
50691    }
50692    if (element.hasCode()) {
50693      composeCodeableConcept("code", element.getCode());
50694    }
50695    if (element.hasUsage()) { 
50696      for (CodeableConcept e : element.getUsage()) 
50697          composeCodeableConcept("usage", e);
50698    }
50699    if (element.hasDescriptionElement()) {
50700      composeMarkdown("description", element.getDescriptionElement());
50701    }
50702    if (element.hasCriteria()) {
50703      composeExpression("criteria", element.getCriteria());
50704    }
50705  }
50706
50707  protected void composeMeasureReport(String name, MeasureReport element) throws IOException {
50708    if (element != null) {
50709    composeResourceAttributes(element);
50710      xml.enter(FHIR_NS, name);
50711      composeMeasureReportElements(element);
50712      composeElementClose(element);
50713      xml.exit(FHIR_NS, name);
50714    }
50715  }
50716
50717  protected void composeMeasureReportElements(MeasureReport element) throws IOException {
50718    composeDomainResourceElements(element);
50719    if (element.hasIdentifier()) { 
50720      for (Identifier e : element.getIdentifier()) 
50721          composeIdentifier("identifier", e);
50722    }
50723    if (element.hasStatusElement())
50724      composeEnumeration("status", element.getStatusElement(), new MeasureReport.MeasureReportStatusEnumFactory());
50725    if (element.hasTypeElement())
50726      composeEnumeration("type", element.getTypeElement(), new MeasureReport.MeasureReportTypeEnumFactory());
50727    if (element.hasDataUpdateTypeElement())
50728      composeEnumeration("dataUpdateType", element.getDataUpdateTypeElement(), new MeasureReport.SubmitDataUpdateTypeEnumFactory());
50729    if (element.hasMeasureElement()) {
50730      composeCanonical("measure", element.getMeasureElement());
50731    }
50732    if (element.hasSubject()) {
50733      composeReference("subject", element.getSubject());
50734    }
50735    if (element.hasDateElement()) {
50736      composeDateTime("date", element.getDateElement());
50737    }
50738    if (element.hasReporter()) {
50739      composeReference("reporter", element.getReporter());
50740    }
50741    if (element.hasReportingVendor()) {
50742      composeReference("reportingVendor", element.getReportingVendor());
50743    }
50744    if (element.hasLocation()) {
50745      composeReference("location", element.getLocation());
50746    }
50747    if (element.hasPeriod()) {
50748      composePeriod("period", element.getPeriod());
50749    }
50750    if (element.hasInputParameters()) {
50751      composeReference("inputParameters", element.getInputParameters());
50752    }
50753    if (element.hasScoring()) {
50754      composeCodeableConcept("scoring", element.getScoring());
50755    }
50756    if (element.hasImprovementNotation()) {
50757      composeCodeableConcept("improvementNotation", element.getImprovementNotation());
50758    }
50759    if (element.hasGroup()) { 
50760      for (MeasureReport.MeasureReportGroupComponent e : element.getGroup()) 
50761          composeMeasureReportGroupComponent("group", e);
50762    }
50763    if (element.hasSupplementalData()) { 
50764      for (Reference e : element.getSupplementalData()) 
50765          composeReference("supplementalData", e);
50766    }
50767    if (element.hasEvaluatedResource()) { 
50768      for (Reference e : element.getEvaluatedResource()) 
50769          composeReference("evaluatedResource", e);
50770    }
50771  }
50772
50773  protected void composeMeasureReportGroupComponent(String name, MeasureReport.MeasureReportGroupComponent element) throws IOException {
50774    if (element != null) {
50775    composeElementAttributes(element);
50776      xml.enter(FHIR_NS, name);
50777      composeMeasureReportGroupComponentElements(element);
50778      composeElementClose(element);
50779      xml.exit(FHIR_NS, name);
50780    }
50781  }
50782
50783  protected void composeMeasureReportGroupComponentElements(MeasureReport.MeasureReportGroupComponent element) throws IOException {
50784    composeBackboneElementElements(element);
50785    if (element.hasLinkIdElement()) {
50786      composeString("linkId", element.getLinkIdElement());
50787    }
50788    if (element.hasCode()) {
50789      composeCodeableConcept("code", element.getCode());
50790    }
50791    if (element.hasSubject()) {
50792      composeReference("subject", element.getSubject());
50793    }
50794    if (element.hasPopulation()) { 
50795      for (MeasureReport.MeasureReportGroupPopulationComponent e : element.getPopulation()) 
50796          composeMeasureReportGroupPopulationComponent("population", e);
50797    }
50798    if (element.hasMeasureScore()) {
50799      composeType("measureScore", element.getMeasureScore());
50800    }    if (element.hasStratifier()) { 
50801      for (MeasureReport.MeasureReportGroupStratifierComponent e : element.getStratifier()) 
50802          composeMeasureReportGroupStratifierComponent("stratifier", e);
50803    }
50804  }
50805
50806  protected void composeMeasureReportGroupPopulationComponent(String name, MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
50807    if (element != null) {
50808    composeElementAttributes(element);
50809      xml.enter(FHIR_NS, name);
50810      composeMeasureReportGroupPopulationComponentElements(element);
50811      composeElementClose(element);
50812      xml.exit(FHIR_NS, name);
50813    }
50814  }
50815
50816  protected void composeMeasureReportGroupPopulationComponentElements(MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
50817    composeBackboneElementElements(element);
50818    if (element.hasLinkIdElement()) {
50819      composeString("linkId", element.getLinkIdElement());
50820    }
50821    if (element.hasCode()) {
50822      composeCodeableConcept("code", element.getCode());
50823    }
50824    if (element.hasCountElement()) {
50825      composeInteger("count", element.getCountElement());
50826    }
50827    if (element.hasSubjectResults()) {
50828      composeReference("subjectResults", element.getSubjectResults());
50829    }
50830    if (element.hasSubjectReport()) { 
50831      for (Reference e : element.getSubjectReport()) 
50832          composeReference("subjectReport", e);
50833    }
50834    if (element.hasSubjects()) {
50835      composeReference("subjects", element.getSubjects());
50836    }
50837  }
50838
50839  protected void composeMeasureReportGroupStratifierComponent(String name, MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
50840    if (element != null) {
50841    composeElementAttributes(element);
50842      xml.enter(FHIR_NS, name);
50843      composeMeasureReportGroupStratifierComponentElements(element);
50844      composeElementClose(element);
50845      xml.exit(FHIR_NS, name);
50846    }
50847  }
50848
50849  protected void composeMeasureReportGroupStratifierComponentElements(MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
50850    composeBackboneElementElements(element);
50851    if (element.hasLinkIdElement()) {
50852      composeString("linkId", element.getLinkIdElement());
50853    }
50854    if (element.hasCode()) {
50855      composeCodeableConcept("code", element.getCode());
50856    }
50857    if (element.hasStratum()) { 
50858      for (MeasureReport.StratifierGroupComponent e : element.getStratum()) 
50859          composeMeasureReportStratifierGroupComponent("stratum", e);
50860    }
50861  }
50862
50863  protected void composeMeasureReportStratifierGroupComponent(String name, MeasureReport.StratifierGroupComponent element) throws IOException {
50864    if (element != null) {
50865    composeElementAttributes(element);
50866      xml.enter(FHIR_NS, name);
50867      composeMeasureReportStratifierGroupComponentElements(element);
50868      composeElementClose(element);
50869      xml.exit(FHIR_NS, name);
50870    }
50871  }
50872
50873  protected void composeMeasureReportStratifierGroupComponentElements(MeasureReport.StratifierGroupComponent element) throws IOException {
50874    composeBackboneElementElements(element);
50875    if (element.hasValue()) {
50876      composeType("value", element.getValue());
50877    }    if (element.hasComponent()) { 
50878      for (MeasureReport.StratifierGroupComponentComponent e : element.getComponent()) 
50879          composeMeasureReportStratifierGroupComponentComponent("component", e);
50880    }
50881    if (element.hasPopulation()) { 
50882      for (MeasureReport.StratifierGroupPopulationComponent e : element.getPopulation()) 
50883          composeMeasureReportStratifierGroupPopulationComponent("population", e);
50884    }
50885    if (element.hasMeasureScore()) {
50886      composeType("measureScore", element.getMeasureScore());
50887    }  }
50888
50889  protected void composeMeasureReportStratifierGroupComponentComponent(String name, MeasureReport.StratifierGroupComponentComponent element) throws IOException {
50890    if (element != null) {
50891    composeElementAttributes(element);
50892      xml.enter(FHIR_NS, name);
50893      composeMeasureReportStratifierGroupComponentComponentElements(element);
50894      composeElementClose(element);
50895      xml.exit(FHIR_NS, name);
50896    }
50897  }
50898
50899  protected void composeMeasureReportStratifierGroupComponentComponentElements(MeasureReport.StratifierGroupComponentComponent element) throws IOException {
50900    composeBackboneElementElements(element);
50901    if (element.hasLinkIdElement()) {
50902      composeString("linkId", element.getLinkIdElement());
50903    }
50904    if (element.hasCode()) {
50905      composeCodeableConcept("code", element.getCode());
50906    }
50907    if (element.hasValue()) {
50908      composeType("value", element.getValue());
50909    }  }
50910
50911  protected void composeMeasureReportStratifierGroupPopulationComponent(String name, MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
50912    if (element != null) {
50913    composeElementAttributes(element);
50914      xml.enter(FHIR_NS, name);
50915      composeMeasureReportStratifierGroupPopulationComponentElements(element);
50916      composeElementClose(element);
50917      xml.exit(FHIR_NS, name);
50918    }
50919  }
50920
50921  protected void composeMeasureReportStratifierGroupPopulationComponentElements(MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
50922    composeBackboneElementElements(element);
50923    if (element.hasLinkIdElement()) {
50924      composeString("linkId", element.getLinkIdElement());
50925    }
50926    if (element.hasCode()) {
50927      composeCodeableConcept("code", element.getCode());
50928    }
50929    if (element.hasCountElement()) {
50930      composeInteger("count", element.getCountElement());
50931    }
50932    if (element.hasSubjectResults()) {
50933      composeReference("subjectResults", element.getSubjectResults());
50934    }
50935    if (element.hasSubjectReport()) { 
50936      for (Reference e : element.getSubjectReport()) 
50937          composeReference("subjectReport", e);
50938    }
50939    if (element.hasSubjects()) {
50940      composeReference("subjects", element.getSubjects());
50941    }
50942  }
50943
50944  protected void composeMedication(String name, Medication element) throws IOException {
50945    if (element != null) {
50946    composeResourceAttributes(element);
50947      xml.enter(FHIR_NS, name);
50948      composeMedicationElements(element);
50949      composeElementClose(element);
50950      xml.exit(FHIR_NS, name);
50951    }
50952  }
50953
50954  protected void composeMedicationElements(Medication element) throws IOException {
50955    composeDomainResourceElements(element);
50956    if (element.hasIdentifier()) { 
50957      for (Identifier e : element.getIdentifier()) 
50958          composeIdentifier("identifier", e);
50959    }
50960    if (element.hasCode()) {
50961      composeCodeableConcept("code", element.getCode());
50962    }
50963    if (element.hasStatusElement())
50964      composeEnumeration("status", element.getStatusElement(), new Medication.MedicationStatusCodesEnumFactory());
50965    if (element.hasMarketingAuthorizationHolder()) {
50966      composeReference("marketingAuthorizationHolder", element.getMarketingAuthorizationHolder());
50967    }
50968    if (element.hasDoseForm()) {
50969      composeCodeableConcept("doseForm", element.getDoseForm());
50970    }
50971    if (element.hasTotalVolume()) {
50972      composeQuantity("totalVolume", element.getTotalVolume());
50973    }
50974    if (element.hasIngredient()) { 
50975      for (Medication.MedicationIngredientComponent e : element.getIngredient()) 
50976          composeMedicationIngredientComponent("ingredient", e);
50977    }
50978    if (element.hasBatch()) {
50979      composeMedicationBatchComponent("batch", element.getBatch());
50980    }
50981    if (element.hasDefinition()) {
50982      composeReference("definition", element.getDefinition());
50983    }
50984  }
50985
50986  protected void composeMedicationIngredientComponent(String name, Medication.MedicationIngredientComponent element) throws IOException {
50987    if (element != null) {
50988    composeElementAttributes(element);
50989      xml.enter(FHIR_NS, name);
50990      composeMedicationIngredientComponentElements(element);
50991      composeElementClose(element);
50992      xml.exit(FHIR_NS, name);
50993    }
50994  }
50995
50996  protected void composeMedicationIngredientComponentElements(Medication.MedicationIngredientComponent element) throws IOException {
50997    composeBackboneElementElements(element);
50998    if (element.hasItem()) {
50999      composeCodeableReference("item", element.getItem());
51000    }
51001    if (element.hasIsActiveElement()) {
51002      composeBoolean("isActive", element.getIsActiveElement());
51003    }
51004    if (element.hasStrength()) {
51005      composeType("strength", element.getStrength());
51006    }  }
51007
51008  protected void composeMedicationBatchComponent(String name, Medication.MedicationBatchComponent element) throws IOException {
51009    if (element != null) {
51010    composeElementAttributes(element);
51011      xml.enter(FHIR_NS, name);
51012      composeMedicationBatchComponentElements(element);
51013      composeElementClose(element);
51014      xml.exit(FHIR_NS, name);
51015    }
51016  }
51017
51018  protected void composeMedicationBatchComponentElements(Medication.MedicationBatchComponent element) throws IOException {
51019    composeBackboneElementElements(element);
51020    if (element.hasLotNumberElement()) {
51021      composeString("lotNumber", element.getLotNumberElement());
51022    }
51023    if (element.hasExpirationDateElement()) {
51024      composeDateTime("expirationDate", element.getExpirationDateElement());
51025    }
51026  }
51027
51028  protected void composeMedicationAdministration(String name, MedicationAdministration element) throws IOException {
51029    if (element != null) {
51030    composeResourceAttributes(element);
51031      xml.enter(FHIR_NS, name);
51032      composeMedicationAdministrationElements(element);
51033      composeElementClose(element);
51034      xml.exit(FHIR_NS, name);
51035    }
51036  }
51037
51038  protected void composeMedicationAdministrationElements(MedicationAdministration element) throws IOException {
51039    composeDomainResourceElements(element);
51040    if (element.hasIdentifier()) { 
51041      for (Identifier e : element.getIdentifier()) 
51042          composeIdentifier("identifier", e);
51043    }
51044    if (element.hasBasedOn()) { 
51045      for (Reference e : element.getBasedOn()) 
51046          composeReference("basedOn", e);
51047    }
51048    if (element.hasPartOf()) { 
51049      for (Reference e : element.getPartOf()) 
51050          composeReference("partOf", e);
51051    }
51052    if (element.hasStatusElement())
51053      composeEnumeration("status", element.getStatusElement(), new MedicationAdministration.MedicationAdministrationStatusCodesEnumFactory());
51054    if (element.hasStatusReason()) { 
51055      for (CodeableConcept e : element.getStatusReason()) 
51056          composeCodeableConcept("statusReason", e);
51057    }
51058    if (element.hasCategory()) { 
51059      for (CodeableConcept e : element.getCategory()) 
51060          composeCodeableConcept("category", e);
51061    }
51062    if (element.hasMedication()) {
51063      composeCodeableReference("medication", element.getMedication());
51064    }
51065    if (element.hasSubject()) {
51066      composeReference("subject", element.getSubject());
51067    }
51068    if (element.hasEncounter()) {
51069      composeReference("encounter", element.getEncounter());
51070    }
51071    if (element.hasSupportingInformation()) { 
51072      for (Reference e : element.getSupportingInformation()) 
51073          composeReference("supportingInformation", e);
51074    }
51075    if (element.hasOccurence()) {
51076      composeType("occurence", element.getOccurence());
51077    }    if (element.hasRecordedElement()) {
51078      composeDateTime("recorded", element.getRecordedElement());
51079    }
51080    if (element.hasIsSubPotentElement()) {
51081      composeBoolean("isSubPotent", element.getIsSubPotentElement());
51082    }
51083    if (element.hasSubPotentReason()) { 
51084      for (CodeableConcept e : element.getSubPotentReason()) 
51085          composeCodeableConcept("subPotentReason", e);
51086    }
51087    if (element.hasPerformer()) { 
51088      for (MedicationAdministration.MedicationAdministrationPerformerComponent e : element.getPerformer()) 
51089          composeMedicationAdministrationPerformerComponent("performer", e);
51090    }
51091    if (element.hasReason()) { 
51092      for (CodeableReference e : element.getReason()) 
51093          composeCodeableReference("reason", e);
51094    }
51095    if (element.hasRequest()) {
51096      composeReference("request", element.getRequest());
51097    }
51098    if (element.hasDevice()) { 
51099      for (CodeableReference e : element.getDevice()) 
51100          composeCodeableReference("device", e);
51101    }
51102    if (element.hasNote()) { 
51103      for (Annotation e : element.getNote()) 
51104          composeAnnotation("note", e);
51105    }
51106    if (element.hasDosage()) {
51107      composeMedicationAdministrationDosageComponent("dosage", element.getDosage());
51108    }
51109    if (element.hasEventHistory()) { 
51110      for (Reference e : element.getEventHistory()) 
51111          composeReference("eventHistory", e);
51112    }
51113  }
51114
51115  protected void composeMedicationAdministrationPerformerComponent(String name, MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
51116    if (element != null) {
51117    composeElementAttributes(element);
51118      xml.enter(FHIR_NS, name);
51119      composeMedicationAdministrationPerformerComponentElements(element);
51120      composeElementClose(element);
51121      xml.exit(FHIR_NS, name);
51122    }
51123  }
51124
51125  protected void composeMedicationAdministrationPerformerComponentElements(MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
51126    composeBackboneElementElements(element);
51127    if (element.hasFunction()) {
51128      composeCodeableConcept("function", element.getFunction());
51129    }
51130    if (element.hasActor()) {
51131      composeCodeableReference("actor", element.getActor());
51132    }
51133  }
51134
51135  protected void composeMedicationAdministrationDosageComponent(String name, MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
51136    if (element != null) {
51137    composeElementAttributes(element);
51138      xml.enter(FHIR_NS, name);
51139      composeMedicationAdministrationDosageComponentElements(element);
51140      composeElementClose(element);
51141      xml.exit(FHIR_NS, name);
51142    }
51143  }
51144
51145  protected void composeMedicationAdministrationDosageComponentElements(MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
51146    composeBackboneElementElements(element);
51147    if (element.hasTextElement()) {
51148      composeString("text", element.getTextElement());
51149    }
51150    if (element.hasSite()) {
51151      composeCodeableConcept("site", element.getSite());
51152    }
51153    if (element.hasRoute()) {
51154      composeCodeableConcept("route", element.getRoute());
51155    }
51156    if (element.hasMethod()) {
51157      composeCodeableConcept("method", element.getMethod());
51158    }
51159    if (element.hasDose()) {
51160      composeQuantity("dose", element.getDose());
51161    }
51162    if (element.hasRate()) {
51163      composeType("rate", element.getRate());
51164    }  }
51165
51166  protected void composeMedicationDispense(String name, MedicationDispense element) throws IOException {
51167    if (element != null) {
51168    composeResourceAttributes(element);
51169      xml.enter(FHIR_NS, name);
51170      composeMedicationDispenseElements(element);
51171      composeElementClose(element);
51172      xml.exit(FHIR_NS, name);
51173    }
51174  }
51175
51176  protected void composeMedicationDispenseElements(MedicationDispense element) throws IOException {
51177    composeDomainResourceElements(element);
51178    if (element.hasIdentifier()) { 
51179      for (Identifier e : element.getIdentifier()) 
51180          composeIdentifier("identifier", e);
51181    }
51182    if (element.hasBasedOn()) { 
51183      for (Reference e : element.getBasedOn()) 
51184          composeReference("basedOn", e);
51185    }
51186    if (element.hasPartOf()) { 
51187      for (Reference e : element.getPartOf()) 
51188          composeReference("partOf", e);
51189    }
51190    if (element.hasStatusElement())
51191      composeEnumeration("status", element.getStatusElement(), new MedicationDispense.MedicationDispenseStatusCodesEnumFactory());
51192    if (element.hasNotPerformedReason()) {
51193      composeCodeableReference("notPerformedReason", element.getNotPerformedReason());
51194    }
51195    if (element.hasStatusChangedElement()) {
51196      composeDateTime("statusChanged", element.getStatusChangedElement());
51197    }
51198    if (element.hasCategory()) { 
51199      for (CodeableConcept e : element.getCategory()) 
51200          composeCodeableConcept("category", e);
51201    }
51202    if (element.hasMedication()) {
51203      composeCodeableReference("medication", element.getMedication());
51204    }
51205    if (element.hasSubject()) {
51206      composeReference("subject", element.getSubject());
51207    }
51208    if (element.hasEncounter()) {
51209      composeReference("encounter", element.getEncounter());
51210    }
51211    if (element.hasSupportingInformation()) { 
51212      for (Reference e : element.getSupportingInformation()) 
51213          composeReference("supportingInformation", e);
51214    }
51215    if (element.hasPerformer()) { 
51216      for (MedicationDispense.MedicationDispensePerformerComponent e : element.getPerformer()) 
51217          composeMedicationDispensePerformerComponent("performer", e);
51218    }
51219    if (element.hasLocation()) {
51220      composeReference("location", element.getLocation());
51221    }
51222    if (element.hasAuthorizingPrescription()) { 
51223      for (Reference e : element.getAuthorizingPrescription()) 
51224          composeReference("authorizingPrescription", e);
51225    }
51226    if (element.hasType()) {
51227      composeCodeableConcept("type", element.getType());
51228    }
51229    if (element.hasQuantity()) {
51230      composeQuantity("quantity", element.getQuantity());
51231    }
51232    if (element.hasDaysSupply()) {
51233      composeQuantity("daysSupply", element.getDaysSupply());
51234    }
51235    if (element.hasRecordedElement()) {
51236      composeDateTime("recorded", element.getRecordedElement());
51237    }
51238    if (element.hasWhenPreparedElement()) {
51239      composeDateTime("whenPrepared", element.getWhenPreparedElement());
51240    }
51241    if (element.hasWhenHandedOverElement()) {
51242      composeDateTime("whenHandedOver", element.getWhenHandedOverElement());
51243    }
51244    if (element.hasDestination()) {
51245      composeReference("destination", element.getDestination());
51246    }
51247    if (element.hasReceiver()) { 
51248      for (Reference e : element.getReceiver()) 
51249          composeReference("receiver", e);
51250    }
51251    if (element.hasNote()) { 
51252      for (Annotation e : element.getNote()) 
51253          composeAnnotation("note", e);
51254    }
51255    if (element.hasRenderedDosageInstructionElement()) {
51256      composeMarkdown("renderedDosageInstruction", element.getRenderedDosageInstructionElement());
51257    }
51258    if (element.hasDosageInstruction()) { 
51259      for (Dosage e : element.getDosageInstruction()) 
51260          composeDosage("dosageInstruction", e);
51261    }
51262    if (element.hasSubstitution()) {
51263      composeMedicationDispenseSubstitutionComponent("substitution", element.getSubstitution());
51264    }
51265    if (element.hasEventHistory()) { 
51266      for (Reference e : element.getEventHistory()) 
51267          composeReference("eventHistory", e);
51268    }
51269  }
51270
51271  protected void composeMedicationDispensePerformerComponent(String name, MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
51272    if (element != null) {
51273    composeElementAttributes(element);
51274      xml.enter(FHIR_NS, name);
51275      composeMedicationDispensePerformerComponentElements(element);
51276      composeElementClose(element);
51277      xml.exit(FHIR_NS, name);
51278    }
51279  }
51280
51281  protected void composeMedicationDispensePerformerComponentElements(MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
51282    composeBackboneElementElements(element);
51283    if (element.hasFunction()) {
51284      composeCodeableConcept("function", element.getFunction());
51285    }
51286    if (element.hasActor()) {
51287      composeReference("actor", element.getActor());
51288    }
51289  }
51290
51291  protected void composeMedicationDispenseSubstitutionComponent(String name, MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
51292    if (element != null) {
51293    composeElementAttributes(element);
51294      xml.enter(FHIR_NS, name);
51295      composeMedicationDispenseSubstitutionComponentElements(element);
51296      composeElementClose(element);
51297      xml.exit(FHIR_NS, name);
51298    }
51299  }
51300
51301  protected void composeMedicationDispenseSubstitutionComponentElements(MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
51302    composeBackboneElementElements(element);
51303    if (element.hasWasSubstitutedElement()) {
51304      composeBoolean("wasSubstituted", element.getWasSubstitutedElement());
51305    }
51306    if (element.hasType()) {
51307      composeCodeableConcept("type", element.getType());
51308    }
51309    if (element.hasReason()) { 
51310      for (CodeableConcept e : element.getReason()) 
51311          composeCodeableConcept("reason", e);
51312    }
51313    if (element.hasResponsibleParty()) {
51314      composeReference("responsibleParty", element.getResponsibleParty());
51315    }
51316  }
51317
51318  protected void composeMedicationKnowledge(String name, MedicationKnowledge element) throws IOException {
51319    if (element != null) {
51320    composeResourceAttributes(element);
51321      xml.enter(FHIR_NS, name);
51322      composeMedicationKnowledgeElements(element);
51323      composeElementClose(element);
51324      xml.exit(FHIR_NS, name);
51325    }
51326  }
51327
51328  protected void composeMedicationKnowledgeElements(MedicationKnowledge element) throws IOException {
51329    composeDomainResourceElements(element);
51330    if (element.hasIdentifier()) { 
51331      for (Identifier e : element.getIdentifier()) 
51332          composeIdentifier("identifier", e);
51333    }
51334    if (element.hasCode()) {
51335      composeCodeableConcept("code", element.getCode());
51336    }
51337    if (element.hasStatusElement())
51338      composeEnumeration("status", element.getStatusElement(), new MedicationKnowledge.MedicationKnowledgeStatusCodesEnumFactory());
51339    if (element.hasAuthor()) {
51340      composeReference("author", element.getAuthor());
51341    }
51342    if (element.hasIntendedJurisdiction()) { 
51343      for (CodeableConcept e : element.getIntendedJurisdiction()) 
51344          composeCodeableConcept("intendedJurisdiction", e);
51345    }
51346    if (element.hasName()) { 
51347      for (StringType e : element.getName()) 
51348          composeString("name", e);
51349    }
51350    if (element.hasRelatedMedicationKnowledge()) { 
51351      for (MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent e : element.getRelatedMedicationKnowledge()) 
51352          composeMedicationKnowledgeRelatedMedicationKnowledgeComponent("relatedMedicationKnowledge", e);
51353    }
51354    if (element.hasAssociatedMedication()) { 
51355      for (Reference e : element.getAssociatedMedication()) 
51356          composeReference("associatedMedication", e);
51357    }
51358    if (element.hasProductType()) { 
51359      for (CodeableConcept e : element.getProductType()) 
51360          composeCodeableConcept("productType", e);
51361    }
51362    if (element.hasMonograph()) { 
51363      for (MedicationKnowledge.MedicationKnowledgeMonographComponent e : element.getMonograph()) 
51364          composeMedicationKnowledgeMonographComponent("monograph", e);
51365    }
51366    if (element.hasPreparationInstructionElement()) {
51367      composeMarkdown("preparationInstruction", element.getPreparationInstructionElement());
51368    }
51369    if (element.hasCost()) { 
51370      for (MedicationKnowledge.MedicationKnowledgeCostComponent e : element.getCost()) 
51371          composeMedicationKnowledgeCostComponent("cost", e);
51372    }
51373    if (element.hasMonitoringProgram()) { 
51374      for (MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent e : element.getMonitoringProgram()) 
51375          composeMedicationKnowledgeMonitoringProgramComponent("monitoringProgram", e);
51376    }
51377    if (element.hasIndicationGuideline()) { 
51378      for (MedicationKnowledge.MedicationKnowledgeIndicationGuidelineComponent e : element.getIndicationGuideline()) 
51379          composeMedicationKnowledgeIndicationGuidelineComponent("indicationGuideline", e);
51380    }
51381    if (element.hasMedicineClassification()) { 
51382      for (MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent e : element.getMedicineClassification()) 
51383          composeMedicationKnowledgeMedicineClassificationComponent("medicineClassification", e);
51384    }
51385    if (element.hasPackaging()) { 
51386      for (MedicationKnowledge.MedicationKnowledgePackagingComponent e : element.getPackaging()) 
51387          composeMedicationKnowledgePackagingComponent("packaging", e);
51388    }
51389    if (element.hasClinicalUseIssue()) { 
51390      for (Reference e : element.getClinicalUseIssue()) 
51391          composeReference("clinicalUseIssue", e);
51392    }
51393    if (element.hasStorageGuideline()) { 
51394      for (MedicationKnowledge.MedicationKnowledgeStorageGuidelineComponent e : element.getStorageGuideline()) 
51395          composeMedicationKnowledgeStorageGuidelineComponent("storageGuideline", e);
51396    }
51397    if (element.hasRegulatory()) { 
51398      for (MedicationKnowledge.MedicationKnowledgeRegulatoryComponent e : element.getRegulatory()) 
51399          composeMedicationKnowledgeRegulatoryComponent("regulatory", e);
51400    }
51401    if (element.hasDefinitional()) {
51402      composeMedicationKnowledgeDefinitionalComponent("definitional", element.getDefinitional());
51403    }
51404  }
51405
51406  protected void composeMedicationKnowledgeRelatedMedicationKnowledgeComponent(String name, MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent element) throws IOException {
51407    if (element != null) {
51408    composeElementAttributes(element);
51409      xml.enter(FHIR_NS, name);
51410      composeMedicationKnowledgeRelatedMedicationKnowledgeComponentElements(element);
51411      composeElementClose(element);
51412      xml.exit(FHIR_NS, name);
51413    }
51414  }
51415
51416  protected void composeMedicationKnowledgeRelatedMedicationKnowledgeComponentElements(MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent element) throws IOException {
51417    composeBackboneElementElements(element);
51418    if (element.hasType()) {
51419      composeCodeableConcept("type", element.getType());
51420    }
51421    if (element.hasReference()) { 
51422      for (Reference e : element.getReference()) 
51423          composeReference("reference", e);
51424    }
51425  }
51426
51427  protected void composeMedicationKnowledgeMonographComponent(String name, MedicationKnowledge.MedicationKnowledgeMonographComponent element) throws IOException {
51428    if (element != null) {
51429    composeElementAttributes(element);
51430      xml.enter(FHIR_NS, name);
51431      composeMedicationKnowledgeMonographComponentElements(element);
51432      composeElementClose(element);
51433      xml.exit(FHIR_NS, name);
51434    }
51435  }
51436
51437  protected void composeMedicationKnowledgeMonographComponentElements(MedicationKnowledge.MedicationKnowledgeMonographComponent element) throws IOException {
51438    composeBackboneElementElements(element);
51439    if (element.hasType()) {
51440      composeCodeableConcept("type", element.getType());
51441    }
51442    if (element.hasSource()) {
51443      composeReference("source", element.getSource());
51444    }
51445  }
51446
51447  protected void composeMedicationKnowledgeCostComponent(String name, MedicationKnowledge.MedicationKnowledgeCostComponent element) throws IOException {
51448    if (element != null) {
51449    composeElementAttributes(element);
51450      xml.enter(FHIR_NS, name);
51451      composeMedicationKnowledgeCostComponentElements(element);
51452      composeElementClose(element);
51453      xml.exit(FHIR_NS, name);
51454    }
51455  }
51456
51457  protected void composeMedicationKnowledgeCostComponentElements(MedicationKnowledge.MedicationKnowledgeCostComponent element) throws IOException {
51458    composeBackboneElementElements(element);
51459    if (element.hasEffectiveDate()) { 
51460      for (Period e : element.getEffectiveDate()) 
51461          composePeriod("effectiveDate", e);
51462    }
51463    if (element.hasType()) {
51464      composeCodeableConcept("type", element.getType());
51465    }
51466    if (element.hasSourceElement()) {
51467      composeString("source", element.getSourceElement());
51468    }
51469    if (element.hasCost()) {
51470      composeType("cost", element.getCost());
51471    }  }
51472
51473  protected void composeMedicationKnowledgeMonitoringProgramComponent(String name, MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent element) throws IOException {
51474    if (element != null) {
51475    composeElementAttributes(element);
51476      xml.enter(FHIR_NS, name);
51477      composeMedicationKnowledgeMonitoringProgramComponentElements(element);
51478      composeElementClose(element);
51479      xml.exit(FHIR_NS, name);
51480    }
51481  }
51482
51483  protected void composeMedicationKnowledgeMonitoringProgramComponentElements(MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent element) throws IOException {
51484    composeBackboneElementElements(element);
51485    if (element.hasType()) {
51486      composeCodeableConcept("type", element.getType());
51487    }
51488    if (element.hasNameElement()) {
51489      composeString("name", element.getNameElement());
51490    }
51491  }
51492
51493  protected void composeMedicationKnowledgeIndicationGuidelineComponent(String name, MedicationKnowledge.MedicationKnowledgeIndicationGuidelineComponent element) throws IOException {
51494    if (element != null) {
51495    composeElementAttributes(element);
51496      xml.enter(FHIR_NS, name);
51497      composeMedicationKnowledgeIndicationGuidelineComponentElements(element);
51498      composeElementClose(element);
51499      xml.exit(FHIR_NS, name);
51500    }
51501  }
51502
51503  protected void composeMedicationKnowledgeIndicationGuidelineComponentElements(MedicationKnowledge.MedicationKnowledgeIndicationGuidelineComponent element) throws IOException {
51504    composeBackboneElementElements(element);
51505    if (element.hasIndication()) { 
51506      for (CodeableReference e : element.getIndication()) 
51507          composeCodeableReference("indication", e);
51508    }
51509    if (element.hasDosingGuideline()) { 
51510      for (MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelineComponent e : element.getDosingGuideline()) 
51511          composeMedicationKnowledgeIndicationGuidelineDosingGuidelineComponent("dosingGuideline", e);
51512    }
51513  }
51514
51515  protected void composeMedicationKnowledgeIndicationGuidelineDosingGuidelineComponent(String name, MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelineComponent element) throws IOException {
51516    if (element != null) {
51517    composeElementAttributes(element);
51518      xml.enter(FHIR_NS, name);
51519      composeMedicationKnowledgeIndicationGuidelineDosingGuidelineComponentElements(element);
51520      composeElementClose(element);
51521      xml.exit(FHIR_NS, name);
51522    }
51523  }
51524
51525  protected void composeMedicationKnowledgeIndicationGuidelineDosingGuidelineComponentElements(MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelineComponent element) throws IOException {
51526    composeBackboneElementElements(element);
51527    if (element.hasTreatmentIntent()) {
51528      composeCodeableConcept("treatmentIntent", element.getTreatmentIntent());
51529    }
51530    if (element.hasDosage()) { 
51531      for (MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponent e : element.getDosage()) 
51532          composeMedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponent("dosage", e);
51533    }
51534    if (element.hasAdministrationTreatment()) {
51535      composeCodeableConcept("administrationTreatment", element.getAdministrationTreatment());
51536    }
51537    if (element.hasPatientCharacteristic()) { 
51538      for (MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponent e : element.getPatientCharacteristic()) 
51539          composeMedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponent("patientCharacteristic", e);
51540    }
51541  }
51542
51543  protected void composeMedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponent(String name, MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponent element) throws IOException {
51544    if (element != null) {
51545    composeElementAttributes(element);
51546      xml.enter(FHIR_NS, name);
51547      composeMedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponentElements(element);
51548      composeElementClose(element);
51549      xml.exit(FHIR_NS, name);
51550    }
51551  }
51552
51553  protected void composeMedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponentElements(MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponent element) throws IOException {
51554    composeBackboneElementElements(element);
51555    if (element.hasType()) {
51556      composeCodeableConcept("type", element.getType());
51557    }
51558    if (element.hasDosage()) { 
51559      for (Dosage e : element.getDosage()) 
51560          composeDosage("dosage", e);
51561    }
51562  }
51563
51564  protected void composeMedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponent(String name, MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponent element) throws IOException {
51565    if (element != null) {
51566    composeElementAttributes(element);
51567      xml.enter(FHIR_NS, name);
51568      composeMedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponentElements(element);
51569      composeElementClose(element);
51570      xml.exit(FHIR_NS, name);
51571    }
51572  }
51573
51574  protected void composeMedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponentElements(MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponent element) throws IOException {
51575    composeBackboneElementElements(element);
51576    if (element.hasType()) {
51577      composeCodeableConcept("type", element.getType());
51578    }
51579    if (element.hasValue()) {
51580      composeType("value", element.getValue());
51581    }  }
51582
51583  protected void composeMedicationKnowledgeMedicineClassificationComponent(String name, MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent element) throws IOException {
51584    if (element != null) {
51585    composeElementAttributes(element);
51586      xml.enter(FHIR_NS, name);
51587      composeMedicationKnowledgeMedicineClassificationComponentElements(element);
51588      composeElementClose(element);
51589      xml.exit(FHIR_NS, name);
51590    }
51591  }
51592
51593  protected void composeMedicationKnowledgeMedicineClassificationComponentElements(MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent element) throws IOException {
51594    composeBackboneElementElements(element);
51595    if (element.hasType()) {
51596      composeCodeableConcept("type", element.getType());
51597    }
51598    if (element.hasSource()) {
51599      composeType("source", element.getSource());
51600    }    if (element.hasClassification()) { 
51601      for (CodeableConcept e : element.getClassification()) 
51602          composeCodeableConcept("classification", e);
51603    }
51604  }
51605
51606  protected void composeMedicationKnowledgePackagingComponent(String name, MedicationKnowledge.MedicationKnowledgePackagingComponent element) throws IOException {
51607    if (element != null) {
51608    composeElementAttributes(element);
51609      xml.enter(FHIR_NS, name);
51610      composeMedicationKnowledgePackagingComponentElements(element);
51611      composeElementClose(element);
51612      xml.exit(FHIR_NS, name);
51613    }
51614  }
51615
51616  protected void composeMedicationKnowledgePackagingComponentElements(MedicationKnowledge.MedicationKnowledgePackagingComponent element) throws IOException {
51617    composeBackboneElementElements(element);
51618    if (element.hasCost()) { 
51619      for (MedicationKnowledge.MedicationKnowledgeCostComponent e : element.getCost()) 
51620          composeMedicationKnowledgeCostComponent("cost", e);
51621    }
51622    if (element.hasPackagedProduct()) {
51623      composeReference("packagedProduct", element.getPackagedProduct());
51624    }
51625  }
51626
51627  protected void composeMedicationKnowledgeStorageGuidelineComponent(String name, MedicationKnowledge.MedicationKnowledgeStorageGuidelineComponent element) throws IOException {
51628    if (element != null) {
51629    composeElementAttributes(element);
51630      xml.enter(FHIR_NS, name);
51631      composeMedicationKnowledgeStorageGuidelineComponentElements(element);
51632      composeElementClose(element);
51633      xml.exit(FHIR_NS, name);
51634    }
51635  }
51636
51637  protected void composeMedicationKnowledgeStorageGuidelineComponentElements(MedicationKnowledge.MedicationKnowledgeStorageGuidelineComponent element) throws IOException {
51638    composeBackboneElementElements(element);
51639    if (element.hasReferenceElement()) {
51640      composeUri("reference", element.getReferenceElement());
51641    }
51642    if (element.hasNote()) { 
51643      for (Annotation e : element.getNote()) 
51644          composeAnnotation("note", e);
51645    }
51646    if (element.hasStabilityDuration()) {
51647      composeDuration("stabilityDuration", element.getStabilityDuration());
51648    }
51649    if (element.hasEnvironmentalSetting()) { 
51650      for (MedicationKnowledge.MedicationKnowledgeStorageGuidelineEnvironmentalSettingComponent e : element.getEnvironmentalSetting()) 
51651          composeMedicationKnowledgeStorageGuidelineEnvironmentalSettingComponent("environmentalSetting", e);
51652    }
51653  }
51654
51655  protected void composeMedicationKnowledgeStorageGuidelineEnvironmentalSettingComponent(String name, MedicationKnowledge.MedicationKnowledgeStorageGuidelineEnvironmentalSettingComponent element) throws IOException {
51656    if (element != null) {
51657    composeElementAttributes(element);
51658      xml.enter(FHIR_NS, name);
51659      composeMedicationKnowledgeStorageGuidelineEnvironmentalSettingComponentElements(element);
51660      composeElementClose(element);
51661      xml.exit(FHIR_NS, name);
51662    }
51663  }
51664
51665  protected void composeMedicationKnowledgeStorageGuidelineEnvironmentalSettingComponentElements(MedicationKnowledge.MedicationKnowledgeStorageGuidelineEnvironmentalSettingComponent element) throws IOException {
51666    composeBackboneElementElements(element);
51667    if (element.hasType()) {
51668      composeCodeableConcept("type", element.getType());
51669    }
51670    if (element.hasValue()) {
51671      composeType("value", element.getValue());
51672    }  }
51673
51674  protected void composeMedicationKnowledgeRegulatoryComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatoryComponent element) throws IOException {
51675    if (element != null) {
51676    composeElementAttributes(element);
51677      xml.enter(FHIR_NS, name);
51678      composeMedicationKnowledgeRegulatoryComponentElements(element);
51679      composeElementClose(element);
51680      xml.exit(FHIR_NS, name);
51681    }
51682  }
51683
51684  protected void composeMedicationKnowledgeRegulatoryComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatoryComponent element) throws IOException {
51685    composeBackboneElementElements(element);
51686    if (element.hasRegulatoryAuthority()) {
51687      composeReference("regulatoryAuthority", element.getRegulatoryAuthority());
51688    }
51689    if (element.hasSubstitution()) { 
51690      for (MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent e : element.getSubstitution()) 
51691          composeMedicationKnowledgeRegulatorySubstitutionComponent("substitution", e);
51692    }
51693    if (element.hasSchedule()) { 
51694      for (CodeableConcept e : element.getSchedule()) 
51695          composeCodeableConcept("schedule", e);
51696    }
51697    if (element.hasMaxDispense()) {
51698      composeMedicationKnowledgeRegulatoryMaxDispenseComponent("maxDispense", element.getMaxDispense());
51699    }
51700  }
51701
51702  protected void composeMedicationKnowledgeRegulatorySubstitutionComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent element) throws IOException {
51703    if (element != null) {
51704    composeElementAttributes(element);
51705      xml.enter(FHIR_NS, name);
51706      composeMedicationKnowledgeRegulatorySubstitutionComponentElements(element);
51707      composeElementClose(element);
51708      xml.exit(FHIR_NS, name);
51709    }
51710  }
51711
51712  protected void composeMedicationKnowledgeRegulatorySubstitutionComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent element) throws IOException {
51713    composeBackboneElementElements(element);
51714    if (element.hasType()) {
51715      composeCodeableConcept("type", element.getType());
51716    }
51717    if (element.hasAllowedElement()) {
51718      composeBoolean("allowed", element.getAllowedElement());
51719    }
51720  }
51721
51722  protected void composeMedicationKnowledgeRegulatoryMaxDispenseComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent element) throws IOException {
51723    if (element != null) {
51724    composeElementAttributes(element);
51725      xml.enter(FHIR_NS, name);
51726      composeMedicationKnowledgeRegulatoryMaxDispenseComponentElements(element);
51727      composeElementClose(element);
51728      xml.exit(FHIR_NS, name);
51729    }
51730  }
51731
51732  protected void composeMedicationKnowledgeRegulatoryMaxDispenseComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent element) throws IOException {
51733    composeBackboneElementElements(element);
51734    if (element.hasQuantity()) {
51735      composeQuantity("quantity", element.getQuantity());
51736    }
51737    if (element.hasPeriod()) {
51738      composeDuration("period", element.getPeriod());
51739    }
51740  }
51741
51742  protected void composeMedicationKnowledgeDefinitionalComponent(String name, MedicationKnowledge.MedicationKnowledgeDefinitionalComponent element) throws IOException {
51743    if (element != null) {
51744    composeElementAttributes(element);
51745      xml.enter(FHIR_NS, name);
51746      composeMedicationKnowledgeDefinitionalComponentElements(element);
51747      composeElementClose(element);
51748      xml.exit(FHIR_NS, name);
51749    }
51750  }
51751
51752  protected void composeMedicationKnowledgeDefinitionalComponentElements(MedicationKnowledge.MedicationKnowledgeDefinitionalComponent element) throws IOException {
51753    composeBackboneElementElements(element);
51754    if (element.hasDefinition()) { 
51755      for (Reference e : element.getDefinition()) 
51756          composeReference("definition", e);
51757    }
51758    if (element.hasDoseForm()) {
51759      composeCodeableConcept("doseForm", element.getDoseForm());
51760    }
51761    if (element.hasIntendedRoute()) { 
51762      for (CodeableConcept e : element.getIntendedRoute()) 
51763          composeCodeableConcept("intendedRoute", e);
51764    }
51765    if (element.hasIngredient()) { 
51766      for (MedicationKnowledge.MedicationKnowledgeDefinitionalIngredientComponent e : element.getIngredient()) 
51767          composeMedicationKnowledgeDefinitionalIngredientComponent("ingredient", e);
51768    }
51769    if (element.hasDrugCharacteristic()) { 
51770      for (MedicationKnowledge.MedicationKnowledgeDefinitionalDrugCharacteristicComponent e : element.getDrugCharacteristic()) 
51771          composeMedicationKnowledgeDefinitionalDrugCharacteristicComponent("drugCharacteristic", e);
51772    }
51773  }
51774
51775  protected void composeMedicationKnowledgeDefinitionalIngredientComponent(String name, MedicationKnowledge.MedicationKnowledgeDefinitionalIngredientComponent element) throws IOException {
51776    if (element != null) {
51777    composeElementAttributes(element);
51778      xml.enter(FHIR_NS, name);
51779      composeMedicationKnowledgeDefinitionalIngredientComponentElements(element);
51780      composeElementClose(element);
51781      xml.exit(FHIR_NS, name);
51782    }
51783  }
51784
51785  protected void composeMedicationKnowledgeDefinitionalIngredientComponentElements(MedicationKnowledge.MedicationKnowledgeDefinitionalIngredientComponent element) throws IOException {
51786    composeBackboneElementElements(element);
51787    if (element.hasItem()) {
51788      composeCodeableReference("item", element.getItem());
51789    }
51790    if (element.hasType()) {
51791      composeCodeableConcept("type", element.getType());
51792    }
51793    if (element.hasStrength()) {
51794      composeType("strength", element.getStrength());
51795    }  }
51796
51797  protected void composeMedicationKnowledgeDefinitionalDrugCharacteristicComponent(String name, MedicationKnowledge.MedicationKnowledgeDefinitionalDrugCharacteristicComponent element) throws IOException {
51798    if (element != null) {
51799    composeElementAttributes(element);
51800      xml.enter(FHIR_NS, name);
51801      composeMedicationKnowledgeDefinitionalDrugCharacteristicComponentElements(element);
51802      composeElementClose(element);
51803      xml.exit(FHIR_NS, name);
51804    }
51805  }
51806
51807  protected void composeMedicationKnowledgeDefinitionalDrugCharacteristicComponentElements(MedicationKnowledge.MedicationKnowledgeDefinitionalDrugCharacteristicComponent element) throws IOException {
51808    composeBackboneElementElements(element);
51809    if (element.hasType()) {
51810      composeCodeableConcept("type", element.getType());
51811    }
51812    if (element.hasValue()) {
51813      composeType("value", element.getValue());
51814    }  }
51815
51816  protected void composeMedicationRequest(String name, MedicationRequest element) throws IOException {
51817    if (element != null) {
51818    composeResourceAttributes(element);
51819      xml.enter(FHIR_NS, name);
51820      composeMedicationRequestElements(element);
51821      composeElementClose(element);
51822      xml.exit(FHIR_NS, name);
51823    }
51824  }
51825
51826  protected void composeMedicationRequestElements(MedicationRequest element) throws IOException {
51827    composeDomainResourceElements(element);
51828    if (element.hasIdentifier()) { 
51829      for (Identifier e : element.getIdentifier()) 
51830          composeIdentifier("identifier", e);
51831    }
51832    if (element.hasBasedOn()) { 
51833      for (Reference e : element.getBasedOn()) 
51834          composeReference("basedOn", e);
51835    }
51836    if (element.hasPriorPrescription()) {
51837      composeReference("priorPrescription", element.getPriorPrescription());
51838    }
51839    if (element.hasGroupIdentifier()) {
51840      composeIdentifier("groupIdentifier", element.getGroupIdentifier());
51841    }
51842    if (element.hasStatusElement())
51843      composeEnumeration("status", element.getStatusElement(), new MedicationRequest.MedicationrequestStatusEnumFactory());
51844    if (element.hasStatusReason()) {
51845      composeCodeableConcept("statusReason", element.getStatusReason());
51846    }
51847    if (element.hasStatusChangedElement()) {
51848      composeDateTime("statusChanged", element.getStatusChangedElement());
51849    }
51850    if (element.hasIntentElement())
51851      composeEnumeration("intent", element.getIntentElement(), new MedicationRequest.MedicationRequestIntentEnumFactory());
51852    if (element.hasCategory()) { 
51853      for (CodeableConcept e : element.getCategory()) 
51854          composeCodeableConcept("category", e);
51855    }
51856    if (element.hasPriorityElement())
51857      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
51858    if (element.hasDoNotPerformElement()) {
51859      composeBoolean("doNotPerform", element.getDoNotPerformElement());
51860    }
51861    if (element.hasMedication()) {
51862      composeCodeableReference("medication", element.getMedication());
51863    }
51864    if (element.hasSubject()) {
51865      composeReference("subject", element.getSubject());
51866    }
51867    if (element.hasInformationSource()) { 
51868      for (Reference e : element.getInformationSource()) 
51869          composeReference("informationSource", e);
51870    }
51871    if (element.hasEncounter()) {
51872      composeReference("encounter", element.getEncounter());
51873    }
51874    if (element.hasSupportingInformation()) { 
51875      for (Reference e : element.getSupportingInformation()) 
51876          composeReference("supportingInformation", e);
51877    }
51878    if (element.hasAuthoredOnElement()) {
51879      composeDateTime("authoredOn", element.getAuthoredOnElement());
51880    }
51881    if (element.hasRequester()) {
51882      composeReference("requester", element.getRequester());
51883    }
51884    if (element.hasReportedElement()) {
51885      composeBoolean("reported", element.getReportedElement());
51886    }
51887    if (element.hasPerformerType()) {
51888      composeCodeableConcept("performerType", element.getPerformerType());
51889    }
51890    if (element.hasPerformer()) { 
51891      for (Reference e : element.getPerformer()) 
51892          composeReference("performer", e);
51893    }
51894    if (element.hasDevice()) { 
51895      for (CodeableReference e : element.getDevice()) 
51896          composeCodeableReference("device", e);
51897    }
51898    if (element.hasRecorder()) {
51899      composeReference("recorder", element.getRecorder());
51900    }
51901    if (element.hasReason()) { 
51902      for (CodeableReference e : element.getReason()) 
51903          composeCodeableReference("reason", e);
51904    }
51905    if (element.hasCourseOfTherapyType()) {
51906      composeCodeableConcept("courseOfTherapyType", element.getCourseOfTherapyType());
51907    }
51908    if (element.hasInsurance()) { 
51909      for (Reference e : element.getInsurance()) 
51910          composeReference("insurance", e);
51911    }
51912    if (element.hasNote()) { 
51913      for (Annotation e : element.getNote()) 
51914          composeAnnotation("note", e);
51915    }
51916    if (element.hasRenderedDosageInstructionElement()) {
51917      composeMarkdown("renderedDosageInstruction", element.getRenderedDosageInstructionElement());
51918    }
51919    if (element.hasEffectiveDosePeriod()) {
51920      composePeriod("effectiveDosePeriod", element.getEffectiveDosePeriod());
51921    }
51922    if (element.hasDosageInstruction()) { 
51923      for (Dosage e : element.getDosageInstruction()) 
51924          composeDosage("dosageInstruction", e);
51925    }
51926    if (element.hasDispenseRequest()) {
51927      composeMedicationRequestDispenseRequestComponent("dispenseRequest", element.getDispenseRequest());
51928    }
51929    if (element.hasSubstitution()) {
51930      composeMedicationRequestSubstitutionComponent("substitution", element.getSubstitution());
51931    }
51932    if (element.hasEventHistory()) { 
51933      for (Reference e : element.getEventHistory()) 
51934          composeReference("eventHistory", e);
51935    }
51936  }
51937
51938  protected void composeMedicationRequestDispenseRequestComponent(String name, MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
51939    if (element != null) {
51940    composeElementAttributes(element);
51941      xml.enter(FHIR_NS, name);
51942      composeMedicationRequestDispenseRequestComponentElements(element);
51943      composeElementClose(element);
51944      xml.exit(FHIR_NS, name);
51945    }
51946  }
51947
51948  protected void composeMedicationRequestDispenseRequestComponentElements(MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
51949    composeBackboneElementElements(element);
51950    if (element.hasInitialFill()) {
51951      composeMedicationRequestDispenseRequestInitialFillComponent("initialFill", element.getInitialFill());
51952    }
51953    if (element.hasDispenseInterval()) {
51954      composeDuration("dispenseInterval", element.getDispenseInterval());
51955    }
51956    if (element.hasValidityPeriod()) {
51957      composePeriod("validityPeriod", element.getValidityPeriod());
51958    }
51959    if (element.hasNumberOfRepeatsAllowedElement()) {
51960      composeUnsignedInt("numberOfRepeatsAllowed", element.getNumberOfRepeatsAllowedElement());
51961    }
51962    if (element.hasQuantity()) {
51963      composeQuantity("quantity", element.getQuantity());
51964    }
51965    if (element.hasExpectedSupplyDuration()) {
51966      composeDuration("expectedSupplyDuration", element.getExpectedSupplyDuration());
51967    }
51968    if (element.hasDispenser()) {
51969      composeReference("dispenser", element.getDispenser());
51970    }
51971    if (element.hasDispenserInstruction()) { 
51972      for (Annotation e : element.getDispenserInstruction()) 
51973          composeAnnotation("dispenserInstruction", e);
51974    }
51975    if (element.hasDoseAdministrationAid()) {
51976      composeCodeableConcept("doseAdministrationAid", element.getDoseAdministrationAid());
51977    }
51978  }
51979
51980  protected void composeMedicationRequestDispenseRequestInitialFillComponent(String name, MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent element) throws IOException {
51981    if (element != null) {
51982    composeElementAttributes(element);
51983      xml.enter(FHIR_NS, name);
51984      composeMedicationRequestDispenseRequestInitialFillComponentElements(element);
51985      composeElementClose(element);
51986      xml.exit(FHIR_NS, name);
51987    }
51988  }
51989
51990  protected void composeMedicationRequestDispenseRequestInitialFillComponentElements(MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent element) throws IOException {
51991    composeBackboneElementElements(element);
51992    if (element.hasQuantity()) {
51993      composeQuantity("quantity", element.getQuantity());
51994    }
51995    if (element.hasDuration()) {
51996      composeDuration("duration", element.getDuration());
51997    }
51998  }
51999
52000  protected void composeMedicationRequestSubstitutionComponent(String name, MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
52001    if (element != null) {
52002    composeElementAttributes(element);
52003      xml.enter(FHIR_NS, name);
52004      composeMedicationRequestSubstitutionComponentElements(element);
52005      composeElementClose(element);
52006      xml.exit(FHIR_NS, name);
52007    }
52008  }
52009
52010  protected void composeMedicationRequestSubstitutionComponentElements(MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
52011    composeBackboneElementElements(element);
52012    if (element.hasAllowed()) {
52013      composeType("allowed", element.getAllowed());
52014    }    if (element.hasReason()) {
52015      composeCodeableConcept("reason", element.getReason());
52016    }
52017  }
52018
52019  protected void composeMedicationStatement(String name, MedicationStatement element) throws IOException {
52020    if (element != null) {
52021    composeResourceAttributes(element);
52022      xml.enter(FHIR_NS, name);
52023      composeMedicationStatementElements(element);
52024      composeElementClose(element);
52025      xml.exit(FHIR_NS, name);
52026    }
52027  }
52028
52029  protected void composeMedicationStatementElements(MedicationStatement element) throws IOException {
52030    composeDomainResourceElements(element);
52031    if (element.hasIdentifier()) { 
52032      for (Identifier e : element.getIdentifier()) 
52033          composeIdentifier("identifier", e);
52034    }
52035    if (element.hasPartOf()) { 
52036      for (Reference e : element.getPartOf()) 
52037          composeReference("partOf", e);
52038    }
52039    if (element.hasStatusElement())
52040      composeEnumeration("status", element.getStatusElement(), new MedicationStatement.MedicationStatementStatusCodesEnumFactory());
52041    if (element.hasCategory()) { 
52042      for (CodeableConcept e : element.getCategory()) 
52043          composeCodeableConcept("category", e);
52044    }
52045    if (element.hasMedication()) {
52046      composeCodeableReference("medication", element.getMedication());
52047    }
52048    if (element.hasSubject()) {
52049      composeReference("subject", element.getSubject());
52050    }
52051    if (element.hasEncounter()) {
52052      composeReference("encounter", element.getEncounter());
52053    }
52054    if (element.hasEffective()) {
52055      composeType("effective", element.getEffective());
52056    }    if (element.hasDateAssertedElement()) {
52057      composeDateTime("dateAsserted", element.getDateAssertedElement());
52058    }
52059    if (element.hasInformationSource()) { 
52060      for (Reference e : element.getInformationSource()) 
52061          composeReference("informationSource", e);
52062    }
52063    if (element.hasDerivedFrom()) { 
52064      for (Reference e : element.getDerivedFrom()) 
52065          composeReference("derivedFrom", e);
52066    }
52067    if (element.hasReason()) { 
52068      for (CodeableReference e : element.getReason()) 
52069          composeCodeableReference("reason", e);
52070    }
52071    if (element.hasNote()) { 
52072      for (Annotation e : element.getNote()) 
52073          composeAnnotation("note", e);
52074    }
52075    if (element.hasRelatedClinicalInformation()) { 
52076      for (Reference e : element.getRelatedClinicalInformation()) 
52077          composeReference("relatedClinicalInformation", e);
52078    }
52079    if (element.hasRenderedDosageInstructionElement()) {
52080      composeMarkdown("renderedDosageInstruction", element.getRenderedDosageInstructionElement());
52081    }
52082    if (element.hasDosage()) { 
52083      for (Dosage e : element.getDosage()) 
52084          composeDosage("dosage", e);
52085    }
52086    if (element.hasAdherence()) {
52087      composeMedicationStatementAdherenceComponent("adherence", element.getAdherence());
52088    }
52089  }
52090
52091  protected void composeMedicationStatementAdherenceComponent(String name, MedicationStatement.MedicationStatementAdherenceComponent element) throws IOException {
52092    if (element != null) {
52093    composeElementAttributes(element);
52094      xml.enter(FHIR_NS, name);
52095      composeMedicationStatementAdherenceComponentElements(element);
52096      composeElementClose(element);
52097      xml.exit(FHIR_NS, name);
52098    }
52099  }
52100
52101  protected void composeMedicationStatementAdherenceComponentElements(MedicationStatement.MedicationStatementAdherenceComponent element) throws IOException {
52102    composeBackboneElementElements(element);
52103    if (element.hasCode()) {
52104      composeCodeableConcept("code", element.getCode());
52105    }
52106    if (element.hasReason()) {
52107      composeCodeableConcept("reason", element.getReason());
52108    }
52109  }
52110
52111  protected void composeMedicinalProductDefinition(String name, MedicinalProductDefinition element) throws IOException {
52112    if (element != null) {
52113    composeResourceAttributes(element);
52114      xml.enter(FHIR_NS, name);
52115      composeMedicinalProductDefinitionElements(element);
52116      composeElementClose(element);
52117      xml.exit(FHIR_NS, name);
52118    }
52119  }
52120
52121  protected void composeMedicinalProductDefinitionElements(MedicinalProductDefinition element) throws IOException {
52122    composeDomainResourceElements(element);
52123    if (element.hasIdentifier()) { 
52124      for (Identifier e : element.getIdentifier()) 
52125          composeIdentifier("identifier", e);
52126    }
52127    if (element.hasType()) {
52128      composeCodeableConcept("type", element.getType());
52129    }
52130    if (element.hasDomain()) {
52131      composeCodeableConcept("domain", element.getDomain());
52132    }
52133    if (element.hasVersionElement()) {
52134      composeString("version", element.getVersionElement());
52135    }
52136    if (element.hasStatus()) {
52137      composeCodeableConcept("status", element.getStatus());
52138    }
52139    if (element.hasStatusDateElement()) {
52140      composeDateTime("statusDate", element.getStatusDateElement());
52141    }
52142    if (element.hasDescriptionElement()) {
52143      composeMarkdown("description", element.getDescriptionElement());
52144    }
52145    if (element.hasCombinedPharmaceuticalDoseForm()) {
52146      composeCodeableConcept("combinedPharmaceuticalDoseForm", element.getCombinedPharmaceuticalDoseForm());
52147    }
52148    if (element.hasRoute()) { 
52149      for (CodeableConcept e : element.getRoute()) 
52150          composeCodeableConcept("route", e);
52151    }
52152    if (element.hasIndicationElement()) {
52153      composeMarkdown("indication", element.getIndicationElement());
52154    }
52155    if (element.hasLegalStatusOfSupply()) {
52156      composeCodeableConcept("legalStatusOfSupply", element.getLegalStatusOfSupply());
52157    }
52158    if (element.hasAdditionalMonitoringIndicator()) {
52159      composeCodeableConcept("additionalMonitoringIndicator", element.getAdditionalMonitoringIndicator());
52160    }
52161    if (element.hasSpecialMeasures()) { 
52162      for (CodeableConcept e : element.getSpecialMeasures()) 
52163          composeCodeableConcept("specialMeasures", e);
52164    }
52165    if (element.hasPediatricUseIndicator()) {
52166      composeCodeableConcept("pediatricUseIndicator", element.getPediatricUseIndicator());
52167    }
52168    if (element.hasClassification()) { 
52169      for (CodeableConcept e : element.getClassification()) 
52170          composeCodeableConcept("classification", e);
52171    }
52172    if (element.hasMarketingStatus()) { 
52173      for (MarketingStatus e : element.getMarketingStatus()) 
52174          composeMarketingStatus("marketingStatus", e);
52175    }
52176    if (element.hasPackagedMedicinalProduct()) { 
52177      for (CodeableConcept e : element.getPackagedMedicinalProduct()) 
52178          composeCodeableConcept("packagedMedicinalProduct", e);
52179    }
52180    if (element.hasComprisedOf()) { 
52181      for (Reference e : element.getComprisedOf()) 
52182          composeReference("comprisedOf", e);
52183    }
52184    if (element.hasIngredient()) { 
52185      for (CodeableConcept e : element.getIngredient()) 
52186          composeCodeableConcept("ingredient", e);
52187    }
52188    if (element.hasImpurity()) { 
52189      for (CodeableReference e : element.getImpurity()) 
52190          composeCodeableReference("impurity", e);
52191    }
52192    if (element.hasAttachedDocument()) { 
52193      for (Reference e : element.getAttachedDocument()) 
52194          composeReference("attachedDocument", e);
52195    }
52196    if (element.hasMasterFile()) { 
52197      for (Reference e : element.getMasterFile()) 
52198          composeReference("masterFile", e);
52199    }
52200    if (element.hasContact()) { 
52201      for (MedicinalProductDefinition.MedicinalProductDefinitionContactComponent e : element.getContact()) 
52202          composeMedicinalProductDefinitionContactComponent("contact", e);
52203    }
52204    if (element.hasClinicalTrial()) { 
52205      for (Reference e : element.getClinicalTrial()) 
52206          composeReference("clinicalTrial", e);
52207    }
52208    if (element.hasCode()) { 
52209      for (Coding e : element.getCode()) 
52210          composeCoding("code", e);
52211    }
52212    if (element.hasName()) { 
52213      for (MedicinalProductDefinition.MedicinalProductDefinitionNameComponent e : element.getName()) 
52214          composeMedicinalProductDefinitionNameComponent("name", e);
52215    }
52216    if (element.hasCrossReference()) { 
52217      for (MedicinalProductDefinition.MedicinalProductDefinitionCrossReferenceComponent e : element.getCrossReference()) 
52218          composeMedicinalProductDefinitionCrossReferenceComponent("crossReference", e);
52219    }
52220    if (element.hasOperation()) { 
52221      for (MedicinalProductDefinition.MedicinalProductDefinitionOperationComponent e : element.getOperation()) 
52222          composeMedicinalProductDefinitionOperationComponent("operation", e);
52223    }
52224    if (element.hasCharacteristic()) { 
52225      for (MedicinalProductDefinition.MedicinalProductDefinitionCharacteristicComponent e : element.getCharacteristic()) 
52226          composeMedicinalProductDefinitionCharacteristicComponent("characteristic", e);
52227    }
52228  }
52229
52230  protected void composeMedicinalProductDefinitionContactComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionContactComponent element) throws IOException {
52231    if (element != null) {
52232    composeElementAttributes(element);
52233      xml.enter(FHIR_NS, name);
52234      composeMedicinalProductDefinitionContactComponentElements(element);
52235      composeElementClose(element);
52236      xml.exit(FHIR_NS, name);
52237    }
52238  }
52239
52240  protected void composeMedicinalProductDefinitionContactComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionContactComponent element) throws IOException {
52241    composeBackboneElementElements(element);
52242    if (element.hasType()) {
52243      composeCodeableConcept("type", element.getType());
52244    }
52245    if (element.hasContact()) {
52246      composeReference("contact", element.getContact());
52247    }
52248  }
52249
52250  protected void composeMedicinalProductDefinitionNameComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionNameComponent element) throws IOException {
52251    if (element != null) {
52252    composeElementAttributes(element);
52253      xml.enter(FHIR_NS, name);
52254      composeMedicinalProductDefinitionNameComponentElements(element);
52255      composeElementClose(element);
52256      xml.exit(FHIR_NS, name);
52257    }
52258  }
52259
52260  protected void composeMedicinalProductDefinitionNameComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionNameComponent element) throws IOException {
52261    composeBackboneElementElements(element);
52262    if (element.hasProductNameElement()) {
52263      composeString("productName", element.getProductNameElement());
52264    }
52265    if (element.hasType()) {
52266      composeCodeableConcept("type", element.getType());
52267    }
52268    if (element.hasPart()) { 
52269      for (MedicinalProductDefinition.MedicinalProductDefinitionNamePartComponent e : element.getPart()) 
52270          composeMedicinalProductDefinitionNamePartComponent("part", e);
52271    }
52272    if (element.hasUsage()) { 
52273      for (MedicinalProductDefinition.MedicinalProductDefinitionNameUsageComponent e : element.getUsage()) 
52274          composeMedicinalProductDefinitionNameUsageComponent("usage", e);
52275    }
52276  }
52277
52278  protected void composeMedicinalProductDefinitionNamePartComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionNamePartComponent element) throws IOException {
52279    if (element != null) {
52280    composeElementAttributes(element);
52281      xml.enter(FHIR_NS, name);
52282      composeMedicinalProductDefinitionNamePartComponentElements(element);
52283      composeElementClose(element);
52284      xml.exit(FHIR_NS, name);
52285    }
52286  }
52287
52288  protected void composeMedicinalProductDefinitionNamePartComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionNamePartComponent element) throws IOException {
52289    composeBackboneElementElements(element);
52290    if (element.hasPartElement()) {
52291      composeString("part", element.getPartElement());
52292    }
52293    if (element.hasType()) {
52294      composeCodeableConcept("type", element.getType());
52295    }
52296  }
52297
52298  protected void composeMedicinalProductDefinitionNameUsageComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionNameUsageComponent element) throws IOException {
52299    if (element != null) {
52300    composeElementAttributes(element);
52301      xml.enter(FHIR_NS, name);
52302      composeMedicinalProductDefinitionNameUsageComponentElements(element);
52303      composeElementClose(element);
52304      xml.exit(FHIR_NS, name);
52305    }
52306  }
52307
52308  protected void composeMedicinalProductDefinitionNameUsageComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionNameUsageComponent element) throws IOException {
52309    composeBackboneElementElements(element);
52310    if (element.hasCountry()) {
52311      composeCodeableConcept("country", element.getCountry());
52312    }
52313    if (element.hasJurisdiction()) {
52314      composeCodeableConcept("jurisdiction", element.getJurisdiction());
52315    }
52316    if (element.hasLanguage()) {
52317      composeCodeableConcept("language", element.getLanguage());
52318    }
52319  }
52320
52321  protected void composeMedicinalProductDefinitionCrossReferenceComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionCrossReferenceComponent element) throws IOException {
52322    if (element != null) {
52323    composeElementAttributes(element);
52324      xml.enter(FHIR_NS, name);
52325      composeMedicinalProductDefinitionCrossReferenceComponentElements(element);
52326      composeElementClose(element);
52327      xml.exit(FHIR_NS, name);
52328    }
52329  }
52330
52331  protected void composeMedicinalProductDefinitionCrossReferenceComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionCrossReferenceComponent element) throws IOException {
52332    composeBackboneElementElements(element);
52333    if (element.hasProduct()) {
52334      composeCodeableReference("product", element.getProduct());
52335    }
52336    if (element.hasType()) {
52337      composeCodeableConcept("type", element.getType());
52338    }
52339  }
52340
52341  protected void composeMedicinalProductDefinitionOperationComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionOperationComponent element) throws IOException {
52342    if (element != null) {
52343    composeElementAttributes(element);
52344      xml.enter(FHIR_NS, name);
52345      composeMedicinalProductDefinitionOperationComponentElements(element);
52346      composeElementClose(element);
52347      xml.exit(FHIR_NS, name);
52348    }
52349  }
52350
52351  protected void composeMedicinalProductDefinitionOperationComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionOperationComponent element) throws IOException {
52352    composeBackboneElementElements(element);
52353    if (element.hasType()) {
52354      composeCodeableReference("type", element.getType());
52355    }
52356    if (element.hasEffectiveDate()) {
52357      composePeriod("effectiveDate", element.getEffectiveDate());
52358    }
52359    if (element.hasOrganization()) { 
52360      for (Reference e : element.getOrganization()) 
52361          composeReference("organization", e);
52362    }
52363    if (element.hasConfidentialityIndicator()) {
52364      composeCodeableConcept("confidentialityIndicator", element.getConfidentialityIndicator());
52365    }
52366  }
52367
52368  protected void composeMedicinalProductDefinitionCharacteristicComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionCharacteristicComponent element) throws IOException {
52369    if (element != null) {
52370    composeElementAttributes(element);
52371      xml.enter(FHIR_NS, name);
52372      composeMedicinalProductDefinitionCharacteristicComponentElements(element);
52373      composeElementClose(element);
52374      xml.exit(FHIR_NS, name);
52375    }
52376  }
52377
52378  protected void composeMedicinalProductDefinitionCharacteristicComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionCharacteristicComponent element) throws IOException {
52379    composeBackboneElementElements(element);
52380    if (element.hasType()) {
52381      composeCodeableConcept("type", element.getType());
52382    }
52383    if (element.hasValue()) {
52384      composeType("value", element.getValue());
52385    }  }
52386
52387  protected void composeMessageDefinition(String name, MessageDefinition element) throws IOException {
52388    if (element != null) {
52389    composeResourceAttributes(element);
52390      xml.enter(FHIR_NS, name);
52391      composeMessageDefinitionElements(element);
52392      composeElementClose(element);
52393      xml.exit(FHIR_NS, name);
52394    }
52395  }
52396
52397  protected void composeMessageDefinitionElements(MessageDefinition element) throws IOException {
52398    composeCanonicalResourceElements(element);
52399    if (element.hasUrlElement()) {
52400      composeUri("url", element.getUrlElement());
52401    }
52402    if (element.hasIdentifier()) { 
52403      for (Identifier e : element.getIdentifier()) 
52404          composeIdentifier("identifier", e);
52405    }
52406    if (element.hasVersionElement()) {
52407      composeString("version", element.getVersionElement());
52408    }
52409    if (element.hasVersionAlgorithm()) {
52410      composeType("versionAlgorithm", element.getVersionAlgorithm());
52411    }    if (element.hasNameElement()) {
52412      composeString("name", element.getNameElement());
52413    }
52414    if (element.hasTitleElement()) {
52415      composeString("title", element.getTitleElement());
52416    }
52417    if (element.hasReplaces()) { 
52418      for (CanonicalType e : element.getReplaces()) 
52419          composeCanonical("replaces", e);
52420    }
52421    if (element.hasStatusElement())
52422      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
52423    if (element.hasExperimentalElement()) {
52424      composeBoolean("experimental", element.getExperimentalElement());
52425    }
52426    if (element.hasDateElement()) {
52427      composeDateTime("date", element.getDateElement());
52428    }
52429    if (element.hasPublisherElement()) {
52430      composeString("publisher", element.getPublisherElement());
52431    }
52432    if (element.hasContact()) { 
52433      for (ContactDetail e : element.getContact()) 
52434          composeContactDetail("contact", e);
52435    }
52436    if (element.hasDescriptionElement()) {
52437      composeMarkdown("description", element.getDescriptionElement());
52438    }
52439    if (element.hasUseContext()) { 
52440      for (UsageContext e : element.getUseContext()) 
52441          composeUsageContext("useContext", e);
52442    }
52443    if (element.hasJurisdiction()) { 
52444      for (CodeableConcept e : element.getJurisdiction()) 
52445          composeCodeableConcept("jurisdiction", e);
52446    }
52447    if (element.hasPurposeElement()) {
52448      composeMarkdown("purpose", element.getPurposeElement());
52449    }
52450    if (element.hasCopyrightElement()) {
52451      composeMarkdown("copyright", element.getCopyrightElement());
52452    }
52453    if (element.hasCopyrightLabelElement()) {
52454      composeString("copyrightLabel", element.getCopyrightLabelElement());
52455    }
52456    if (element.hasBaseElement()) {
52457      composeCanonical("base", element.getBaseElement());
52458    }
52459    if (element.hasParent()) { 
52460      for (CanonicalType e : element.getParent()) 
52461          composeCanonical("parent", e);
52462    }
52463    if (element.hasEvent()) {
52464      composeType("event", element.getEvent());
52465    }    if (element.hasCategoryElement())
52466      composeEnumeration("category", element.getCategoryElement(), new MessageDefinition.MessageSignificanceCategoryEnumFactory());
52467    if (element.hasFocus()) { 
52468      for (MessageDefinition.MessageDefinitionFocusComponent e : element.getFocus()) 
52469          composeMessageDefinitionFocusComponent("focus", e);
52470    }
52471    if (element.hasResponseRequiredElement())
52472      composeEnumeration("responseRequired", element.getResponseRequiredElement(), new MessageDefinition.MessageheaderResponseRequestEnumFactory());
52473    if (element.hasAllowedResponse()) { 
52474      for (MessageDefinition.MessageDefinitionAllowedResponseComponent e : element.getAllowedResponse()) 
52475          composeMessageDefinitionAllowedResponseComponent("allowedResponse", e);
52476    }
52477    if (element.hasGraphElement()) {
52478      composeCanonical("graph", element.getGraphElement());
52479    }
52480  }
52481
52482  protected void composeMessageDefinitionFocusComponent(String name, MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
52483    if (element != null) {
52484    composeElementAttributes(element);
52485      xml.enter(FHIR_NS, name);
52486      composeMessageDefinitionFocusComponentElements(element);
52487      composeElementClose(element);
52488      xml.exit(FHIR_NS, name);
52489    }
52490  }
52491
52492  protected void composeMessageDefinitionFocusComponentElements(MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
52493    composeBackboneElementElements(element);
52494    if (element.hasCodeElement()) {
52495      composeCode("code", element.getCodeElement());
52496    }
52497    if (element.hasProfileElement()) {
52498      composeCanonical("profile", element.getProfileElement());
52499    }
52500    if (element.hasMinElement()) {
52501      composeUnsignedInt("min", element.getMinElement());
52502    }
52503    if (element.hasMaxElement()) {
52504      composeString("max", element.getMaxElement());
52505    }
52506  }
52507
52508  protected void composeMessageDefinitionAllowedResponseComponent(String name, MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
52509    if (element != null) {
52510    composeElementAttributes(element);
52511      xml.enter(FHIR_NS, name);
52512      composeMessageDefinitionAllowedResponseComponentElements(element);
52513      composeElementClose(element);
52514      xml.exit(FHIR_NS, name);
52515    }
52516  }
52517
52518  protected void composeMessageDefinitionAllowedResponseComponentElements(MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
52519    composeBackboneElementElements(element);
52520    if (element.hasMessageElement()) {
52521      composeCanonical("message", element.getMessageElement());
52522    }
52523    if (element.hasSituationElement()) {
52524      composeMarkdown("situation", element.getSituationElement());
52525    }
52526  }
52527
52528  protected void composeMessageHeader(String name, MessageHeader element) throws IOException {
52529    if (element != null) {
52530    composeResourceAttributes(element);
52531      xml.enter(FHIR_NS, name);
52532      composeMessageHeaderElements(element);
52533      composeElementClose(element);
52534      xml.exit(FHIR_NS, name);
52535    }
52536  }
52537
52538  protected void composeMessageHeaderElements(MessageHeader element) throws IOException {
52539    composeDomainResourceElements(element);
52540    if (element.hasEvent()) {
52541      composeType("event", element.getEvent());
52542    }    if (element.hasDestination()) { 
52543      for (MessageHeader.MessageDestinationComponent e : element.getDestination()) 
52544          composeMessageHeaderMessageDestinationComponent("destination", e);
52545    }
52546    if (element.hasSender()) {
52547      composeReference("sender", element.getSender());
52548    }
52549    if (element.hasAuthor()) {
52550      composeReference("author", element.getAuthor());
52551    }
52552    if (element.hasSource()) {
52553      composeMessageHeaderMessageSourceComponent("source", element.getSource());
52554    }
52555    if (element.hasResponsible()) {
52556      composeReference("responsible", element.getResponsible());
52557    }
52558    if (element.hasReason()) {
52559      composeCodeableConcept("reason", element.getReason());
52560    }
52561    if (element.hasResponse()) {
52562      composeMessageHeaderResponseComponent("response", element.getResponse());
52563    }
52564    if (element.hasFocus()) { 
52565      for (Reference e : element.getFocus()) 
52566          composeReference("focus", e);
52567    }
52568    if (element.hasDefinitionElement()) {
52569      composeCanonical("definition", element.getDefinitionElement());
52570    }
52571  }
52572
52573  protected void composeMessageHeaderMessageDestinationComponent(String name, MessageHeader.MessageDestinationComponent element) throws IOException {
52574    if (element != null) {
52575    composeElementAttributes(element);
52576      xml.enter(FHIR_NS, name);
52577      composeMessageHeaderMessageDestinationComponentElements(element);
52578      composeElementClose(element);
52579      xml.exit(FHIR_NS, name);
52580    }
52581  }
52582
52583  protected void composeMessageHeaderMessageDestinationComponentElements(MessageHeader.MessageDestinationComponent element) throws IOException {
52584    composeBackboneElementElements(element);
52585    if (element.hasEndpoint()) {
52586      composeType("endpoint", element.getEndpoint());
52587    }    if (element.hasNameElement()) {
52588      composeString("name", element.getNameElement());
52589    }
52590    if (element.hasTarget()) {
52591      composeReference("target", element.getTarget());
52592    }
52593    if (element.hasReceiver()) {
52594      composeReference("receiver", element.getReceiver());
52595    }
52596  }
52597
52598  protected void composeMessageHeaderMessageSourceComponent(String name, MessageHeader.MessageSourceComponent element) throws IOException {
52599    if (element != null) {
52600    composeElementAttributes(element);
52601      xml.enter(FHIR_NS, name);
52602      composeMessageHeaderMessageSourceComponentElements(element);
52603      composeElementClose(element);
52604      xml.exit(FHIR_NS, name);
52605    }
52606  }
52607
52608  protected void composeMessageHeaderMessageSourceComponentElements(MessageHeader.MessageSourceComponent element) throws IOException {
52609    composeBackboneElementElements(element);
52610    if (element.hasEndpoint()) {
52611      composeType("endpoint", element.getEndpoint());
52612    }    if (element.hasNameElement()) {
52613      composeString("name", element.getNameElement());
52614    }
52615    if (element.hasSoftwareElement()) {
52616      composeString("software", element.getSoftwareElement());
52617    }
52618    if (element.hasVersionElement()) {
52619      composeString("version", element.getVersionElement());
52620    }
52621    if (element.hasContact()) {
52622      composeContactPoint("contact", element.getContact());
52623    }
52624  }
52625
52626  protected void composeMessageHeaderResponseComponent(String name, MessageHeader.MessageHeaderResponseComponent element) throws IOException {
52627    if (element != null) {
52628    composeElementAttributes(element);
52629      xml.enter(FHIR_NS, name);
52630      composeMessageHeaderResponseComponentElements(element);
52631      composeElementClose(element);
52632      xml.exit(FHIR_NS, name);
52633    }
52634  }
52635
52636  protected void composeMessageHeaderResponseComponentElements(MessageHeader.MessageHeaderResponseComponent element) throws IOException {
52637    composeBackboneElementElements(element);
52638    if (element.hasIdentifier()) {
52639      composeIdentifier("identifier", element.getIdentifier());
52640    }
52641    if (element.hasCodeElement())
52642      composeEnumeration("code", element.getCodeElement(), new MessageHeader.ResponseTypeEnumFactory());
52643    if (element.hasDetails()) {
52644      composeReference("details", element.getDetails());
52645    }
52646  }
52647
52648  protected void composeMolecularSequence(String name, MolecularSequence element) throws IOException {
52649    if (element != null) {
52650    composeResourceAttributes(element);
52651      xml.enter(FHIR_NS, name);
52652      composeMolecularSequenceElements(element);
52653      composeElementClose(element);
52654      xml.exit(FHIR_NS, name);
52655    }
52656  }
52657
52658  protected void composeMolecularSequenceElements(MolecularSequence element) throws IOException {
52659    composeDomainResourceElements(element);
52660    if (element.hasIdentifier()) { 
52661      for (Identifier e : element.getIdentifier()) 
52662          composeIdentifier("identifier", e);
52663    }
52664    if (element.hasTypeElement())
52665      composeEnumeration("type", element.getTypeElement(), new MolecularSequence.SequenceTypeEnumFactory());
52666    if (element.hasSubject()) {
52667      composeReference("subject", element.getSubject());
52668    }
52669    if (element.hasFocus()) { 
52670      for (Reference e : element.getFocus()) 
52671          composeReference("focus", e);
52672    }
52673    if (element.hasSpecimen()) {
52674      composeReference("specimen", element.getSpecimen());
52675    }
52676    if (element.hasDevice()) {
52677      composeReference("device", element.getDevice());
52678    }
52679    if (element.hasPerformer()) {
52680      composeReference("performer", element.getPerformer());
52681    }
52682    if (element.hasLiteralElement()) {
52683      composeString("literal", element.getLiteralElement());
52684    }
52685    if (element.hasFormatted()) { 
52686      for (Attachment e : element.getFormatted()) 
52687          composeAttachment("formatted", e);
52688    }
52689    if (element.hasRelative()) { 
52690      for (MolecularSequence.MolecularSequenceRelativeComponent e : element.getRelative()) 
52691          composeMolecularSequenceRelativeComponent("relative", e);
52692    }
52693  }
52694
52695  protected void composeMolecularSequenceRelativeComponent(String name, MolecularSequence.MolecularSequenceRelativeComponent element) throws IOException {
52696    if (element != null) {
52697    composeElementAttributes(element);
52698      xml.enter(FHIR_NS, name);
52699      composeMolecularSequenceRelativeComponentElements(element);
52700      composeElementClose(element);
52701      xml.exit(FHIR_NS, name);
52702    }
52703  }
52704
52705  protected void composeMolecularSequenceRelativeComponentElements(MolecularSequence.MolecularSequenceRelativeComponent element) throws IOException {
52706    composeBackboneElementElements(element);
52707    if (element.hasCoordinateSystem()) {
52708      composeCodeableConcept("coordinateSystem", element.getCoordinateSystem());
52709    }
52710    if (element.hasOrdinalPositionElement()) {
52711      composeInteger("ordinalPosition", element.getOrdinalPositionElement());
52712    }
52713    if (element.hasSequenceRange()) {
52714      composeRange("sequenceRange", element.getSequenceRange());
52715    }
52716    if (element.hasStartingSequence()) {
52717      composeMolecularSequenceRelativeStartingSequenceComponent("startingSequence", element.getStartingSequence());
52718    }
52719    if (element.hasEdit()) { 
52720      for (MolecularSequence.MolecularSequenceRelativeEditComponent e : element.getEdit()) 
52721          composeMolecularSequenceRelativeEditComponent("edit", e);
52722    }
52723  }
52724
52725  protected void composeMolecularSequenceRelativeStartingSequenceComponent(String name, MolecularSequence.MolecularSequenceRelativeStartingSequenceComponent element) throws IOException {
52726    if (element != null) {
52727    composeElementAttributes(element);
52728      xml.enter(FHIR_NS, name);
52729      composeMolecularSequenceRelativeStartingSequenceComponentElements(element);
52730      composeElementClose(element);
52731      xml.exit(FHIR_NS, name);
52732    }
52733  }
52734
52735  protected void composeMolecularSequenceRelativeStartingSequenceComponentElements(MolecularSequence.MolecularSequenceRelativeStartingSequenceComponent element) throws IOException {
52736    composeBackboneElementElements(element);
52737    if (element.hasGenomeAssembly()) {
52738      composeCodeableConcept("genomeAssembly", element.getGenomeAssembly());
52739    }
52740    if (element.hasChromosome()) {
52741      composeCodeableConcept("chromosome", element.getChromosome());
52742    }
52743    if (element.hasSequence()) {
52744      composeType("sequence", element.getSequence());
52745    }    if (element.hasWindowStartElement()) {
52746      composeInteger("windowStart", element.getWindowStartElement());
52747    }
52748    if (element.hasWindowEndElement()) {
52749      composeInteger("windowEnd", element.getWindowEndElement());
52750    }
52751    if (element.hasOrientationElement())
52752      composeEnumeration("orientation", element.getOrientationElement(), new MolecularSequence.OrientationTypeEnumFactory());
52753    if (element.hasStrandElement())
52754      composeEnumeration("strand", element.getStrandElement(), new MolecularSequence.StrandTypeEnumFactory());
52755  }
52756
52757  protected void composeMolecularSequenceRelativeEditComponent(String name, MolecularSequence.MolecularSequenceRelativeEditComponent element) throws IOException {
52758    if (element != null) {
52759    composeElementAttributes(element);
52760      xml.enter(FHIR_NS, name);
52761      composeMolecularSequenceRelativeEditComponentElements(element);
52762      composeElementClose(element);
52763      xml.exit(FHIR_NS, name);
52764    }
52765  }
52766
52767  protected void composeMolecularSequenceRelativeEditComponentElements(MolecularSequence.MolecularSequenceRelativeEditComponent element) throws IOException {
52768    composeBackboneElementElements(element);
52769    if (element.hasStartElement()) {
52770      composeInteger("start", element.getStartElement());
52771    }
52772    if (element.hasEndElement()) {
52773      composeInteger("end", element.getEndElement());
52774    }
52775    if (element.hasReplacementSequenceElement()) {
52776      composeString("replacementSequence", element.getReplacementSequenceElement());
52777    }
52778    if (element.hasReplacedSequenceElement()) {
52779      composeString("replacedSequence", element.getReplacedSequenceElement());
52780    }
52781  }
52782
52783  protected void composeNamingSystem(String name, NamingSystem element) throws IOException {
52784    if (element != null) {
52785    composeResourceAttributes(element);
52786      xml.enter(FHIR_NS, name);
52787      composeNamingSystemElements(element);
52788      composeElementClose(element);
52789      xml.exit(FHIR_NS, name);
52790    }
52791  }
52792
52793  protected void composeNamingSystemElements(NamingSystem element) throws IOException {
52794    composeMetadataResourceElements(element);
52795    if (element.hasUrlElement()) {
52796      composeUri("url", element.getUrlElement());
52797    }
52798    if (element.hasIdentifier()) { 
52799      for (Identifier e : element.getIdentifier()) 
52800          composeIdentifier("identifier", e);
52801    }
52802    if (element.hasVersionElement()) {
52803      composeString("version", element.getVersionElement());
52804    }
52805    if (element.hasVersionAlgorithm()) {
52806      composeType("versionAlgorithm", element.getVersionAlgorithm());
52807    }    if (element.hasNameElement()) {
52808      composeString("name", element.getNameElement());
52809    }
52810    if (element.hasTitleElement()) {
52811      composeString("title", element.getTitleElement());
52812    }
52813    if (element.hasStatusElement())
52814      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
52815    if (element.hasKindElement())
52816      composeEnumeration("kind", element.getKindElement(), new NamingSystem.NamingSystemTypeEnumFactory());
52817    if (element.hasExperimentalElement()) {
52818      composeBoolean("experimental", element.getExperimentalElement());
52819    }
52820    if (element.hasDateElement()) {
52821      composeDateTime("date", element.getDateElement());
52822    }
52823    if (element.hasPublisherElement()) {
52824      composeString("publisher", element.getPublisherElement());
52825    }
52826    if (element.hasContact()) { 
52827      for (ContactDetail e : element.getContact()) 
52828          composeContactDetail("contact", e);
52829    }
52830    if (element.hasResponsibleElement()) {
52831      composeString("responsible", element.getResponsibleElement());
52832    }
52833    if (element.hasType()) {
52834      composeCodeableConcept("type", element.getType());
52835    }
52836    if (element.hasDescriptionElement()) {
52837      composeMarkdown("description", element.getDescriptionElement());
52838    }
52839    if (element.hasUseContext()) { 
52840      for (UsageContext e : element.getUseContext()) 
52841          composeUsageContext("useContext", e);
52842    }
52843    if (element.hasJurisdiction()) { 
52844      for (CodeableConcept e : element.getJurisdiction()) 
52845          composeCodeableConcept("jurisdiction", e);
52846    }
52847    if (element.hasPurposeElement()) {
52848      composeMarkdown("purpose", element.getPurposeElement());
52849    }
52850    if (element.hasCopyrightElement()) {
52851      composeMarkdown("copyright", element.getCopyrightElement());
52852    }
52853    if (element.hasCopyrightLabelElement()) {
52854      composeString("copyrightLabel", element.getCopyrightLabelElement());
52855    }
52856    if (element.hasApprovalDateElement()) {
52857      composeDate("approvalDate", element.getApprovalDateElement());
52858    }
52859    if (element.hasLastReviewDateElement()) {
52860      composeDate("lastReviewDate", element.getLastReviewDateElement());
52861    }
52862    if (element.hasEffectivePeriod()) {
52863      composePeriod("effectivePeriod", element.getEffectivePeriod());
52864    }
52865    if (element.hasTopic()) { 
52866      for (CodeableConcept e : element.getTopic()) 
52867          composeCodeableConcept("topic", e);
52868    }
52869    if (element.hasAuthor()) { 
52870      for (ContactDetail e : element.getAuthor()) 
52871          composeContactDetail("author", e);
52872    }
52873    if (element.hasEditor()) { 
52874      for (ContactDetail e : element.getEditor()) 
52875          composeContactDetail("editor", e);
52876    }
52877    if (element.hasReviewer()) { 
52878      for (ContactDetail e : element.getReviewer()) 
52879          composeContactDetail("reviewer", e);
52880    }
52881    if (element.hasEndorser()) { 
52882      for (ContactDetail e : element.getEndorser()) 
52883          composeContactDetail("endorser", e);
52884    }
52885    if (element.hasRelatedArtifact()) { 
52886      for (RelatedArtifact e : element.getRelatedArtifact()) 
52887          composeRelatedArtifact("relatedArtifact", e);
52888    }
52889    if (element.hasUsageElement()) {
52890      composeString("usage", element.getUsageElement());
52891    }
52892    if (element.hasUniqueId()) { 
52893      for (NamingSystem.NamingSystemUniqueIdComponent e : element.getUniqueId()) 
52894          composeNamingSystemUniqueIdComponent("uniqueId", e);
52895    }
52896  }
52897
52898  protected void composeNamingSystemUniqueIdComponent(String name, NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
52899    if (element != null) {
52900    composeElementAttributes(element);
52901      xml.enter(FHIR_NS, name);
52902      composeNamingSystemUniqueIdComponentElements(element);
52903      composeElementClose(element);
52904      xml.exit(FHIR_NS, name);
52905    }
52906  }
52907
52908  protected void composeNamingSystemUniqueIdComponentElements(NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
52909    composeBackboneElementElements(element);
52910    if (element.hasTypeElement())
52911      composeEnumeration("type", element.getTypeElement(), new NamingSystem.NamingSystemIdentifierTypeEnumFactory());
52912    if (element.hasValueElement()) {
52913      composeString("value", element.getValueElement());
52914    }
52915    if (element.hasPreferredElement()) {
52916      composeBoolean("preferred", element.getPreferredElement());
52917    }
52918    if (element.hasCommentElement()) {
52919      composeString("comment", element.getCommentElement());
52920    }
52921    if (element.hasPeriod()) {
52922      composePeriod("period", element.getPeriod());
52923    }
52924    if (element.hasAuthoritativeElement()) {
52925      composeBoolean("authoritative", element.getAuthoritativeElement());
52926    }
52927  }
52928
52929  protected void composeNutritionIntake(String name, NutritionIntake element) throws IOException {
52930    if (element != null) {
52931    composeResourceAttributes(element);
52932      xml.enter(FHIR_NS, name);
52933      composeNutritionIntakeElements(element);
52934      composeElementClose(element);
52935      xml.exit(FHIR_NS, name);
52936    }
52937  }
52938
52939  protected void composeNutritionIntakeElements(NutritionIntake element) throws IOException {
52940    composeDomainResourceElements(element);
52941    if (element.hasIdentifier()) { 
52942      for (Identifier e : element.getIdentifier()) 
52943          composeIdentifier("identifier", e);
52944    }
52945    if (element.hasInstantiatesCanonical()) { 
52946      for (CanonicalType e : element.getInstantiatesCanonical()) 
52947          composeCanonical("instantiatesCanonical", e);
52948    }
52949    if (element.hasInstantiatesUri()) { 
52950      for (UriType e : element.getInstantiatesUri()) 
52951          composeUri("instantiatesUri", e);
52952    }
52953    if (element.hasBasedOn()) { 
52954      for (Reference e : element.getBasedOn()) 
52955          composeReference("basedOn", e);
52956    }
52957    if (element.hasPartOf()) { 
52958      for (Reference e : element.getPartOf()) 
52959          composeReference("partOf", e);
52960    }
52961    if (element.hasStatusElement())
52962      composeEnumeration("status", element.getStatusElement(), new Enumerations.EventStatusEnumFactory());
52963    if (element.hasStatusReason()) { 
52964      for (CodeableConcept e : element.getStatusReason()) 
52965          composeCodeableConcept("statusReason", e);
52966    }
52967    if (element.hasCode()) {
52968      composeCodeableConcept("code", element.getCode());
52969    }
52970    if (element.hasSubject()) {
52971      composeReference("subject", element.getSubject());
52972    }
52973    if (element.hasEncounter()) {
52974      composeReference("encounter", element.getEncounter());
52975    }
52976    if (element.hasOccurrence()) {
52977      composeType("occurrence", element.getOccurrence());
52978    }    if (element.hasRecordedElement()) {
52979      composeDateTime("recorded", element.getRecordedElement());
52980    }
52981    if (element.hasReported()) {
52982      composeType("reported", element.getReported());
52983    }    if (element.hasConsumedItem()) { 
52984      for (NutritionIntake.NutritionIntakeConsumedItemComponent e : element.getConsumedItem()) 
52985          composeNutritionIntakeConsumedItemComponent("consumedItem", e);
52986    }
52987    if (element.hasIngredientLabel()) { 
52988      for (NutritionIntake.NutritionIntakeIngredientLabelComponent e : element.getIngredientLabel()) 
52989          composeNutritionIntakeIngredientLabelComponent("ingredientLabel", e);
52990    }
52991    if (element.hasPerformer()) { 
52992      for (NutritionIntake.NutritionIntakePerformerComponent e : element.getPerformer()) 
52993          composeNutritionIntakePerformerComponent("performer", e);
52994    }
52995    if (element.hasLocation()) {
52996      composeReference("location", element.getLocation());
52997    }
52998    if (element.hasDerivedFrom()) { 
52999      for (Reference e : element.getDerivedFrom()) 
53000          composeReference("derivedFrom", e);
53001    }
53002    if (element.hasReason()) { 
53003      for (CodeableReference e : element.getReason()) 
53004          composeCodeableReference("reason", e);
53005    }
53006    if (element.hasNote()) { 
53007      for (Annotation e : element.getNote()) 
53008          composeAnnotation("note", e);
53009    }
53010  }
53011
53012  protected void composeNutritionIntakeConsumedItemComponent(String name, NutritionIntake.NutritionIntakeConsumedItemComponent element) throws IOException {
53013    if (element != null) {
53014    composeElementAttributes(element);
53015      xml.enter(FHIR_NS, name);
53016      composeNutritionIntakeConsumedItemComponentElements(element);
53017      composeElementClose(element);
53018      xml.exit(FHIR_NS, name);
53019    }
53020  }
53021
53022  protected void composeNutritionIntakeConsumedItemComponentElements(NutritionIntake.NutritionIntakeConsumedItemComponent element) throws IOException {
53023    composeBackboneElementElements(element);
53024    if (element.hasType()) {
53025      composeCodeableConcept("type", element.getType());
53026    }
53027    if (element.hasNutritionProduct()) {
53028      composeCodeableReference("nutritionProduct", element.getNutritionProduct());
53029    }
53030    if (element.hasSchedule()) {
53031      composeTiming("schedule", element.getSchedule());
53032    }
53033    if (element.hasAmount()) {
53034      composeQuantity("amount", element.getAmount());
53035    }
53036    if (element.hasRate()) {
53037      composeQuantity("rate", element.getRate());
53038    }
53039    if (element.hasNotConsumedElement()) {
53040      composeBoolean("notConsumed", element.getNotConsumedElement());
53041    }
53042    if (element.hasNotConsumedReason()) {
53043      composeCodeableConcept("notConsumedReason", element.getNotConsumedReason());
53044    }
53045  }
53046
53047  protected void composeNutritionIntakeIngredientLabelComponent(String name, NutritionIntake.NutritionIntakeIngredientLabelComponent element) throws IOException {
53048    if (element != null) {
53049    composeElementAttributes(element);
53050      xml.enter(FHIR_NS, name);
53051      composeNutritionIntakeIngredientLabelComponentElements(element);
53052      composeElementClose(element);
53053      xml.exit(FHIR_NS, name);
53054    }
53055  }
53056
53057  protected void composeNutritionIntakeIngredientLabelComponentElements(NutritionIntake.NutritionIntakeIngredientLabelComponent element) throws IOException {
53058    composeBackboneElementElements(element);
53059    if (element.hasNutrient()) {
53060      composeCodeableReference("nutrient", element.getNutrient());
53061    }
53062    if (element.hasAmount()) {
53063      composeQuantity("amount", element.getAmount());
53064    }
53065  }
53066
53067  protected void composeNutritionIntakePerformerComponent(String name, NutritionIntake.NutritionIntakePerformerComponent element) throws IOException {
53068    if (element != null) {
53069    composeElementAttributes(element);
53070      xml.enter(FHIR_NS, name);
53071      composeNutritionIntakePerformerComponentElements(element);
53072      composeElementClose(element);
53073      xml.exit(FHIR_NS, name);
53074    }
53075  }
53076
53077  protected void composeNutritionIntakePerformerComponentElements(NutritionIntake.NutritionIntakePerformerComponent element) throws IOException {
53078    composeBackboneElementElements(element);
53079    if (element.hasFunction()) {
53080      composeCodeableConcept("function", element.getFunction());
53081    }
53082    if (element.hasActor()) {
53083      composeReference("actor", element.getActor());
53084    }
53085  }
53086
53087  protected void composeNutritionOrder(String name, NutritionOrder element) throws IOException {
53088    if (element != null) {
53089    composeResourceAttributes(element);
53090      xml.enter(FHIR_NS, name);
53091      composeNutritionOrderElements(element);
53092      composeElementClose(element);
53093      xml.exit(FHIR_NS, name);
53094    }
53095  }
53096
53097  protected void composeNutritionOrderElements(NutritionOrder element) throws IOException {
53098    composeDomainResourceElements(element);
53099    if (element.hasIdentifier()) { 
53100      for (Identifier e : element.getIdentifier()) 
53101          composeIdentifier("identifier", e);
53102    }
53103    if (element.hasInstantiatesCanonical()) { 
53104      for (CanonicalType e : element.getInstantiatesCanonical()) 
53105          composeCanonical("instantiatesCanonical", e);
53106    }
53107    if (element.hasInstantiatesUri()) { 
53108      for (UriType e : element.getInstantiatesUri()) 
53109          composeUri("instantiatesUri", e);
53110    }
53111    if (element.hasInstantiates()) { 
53112      for (UriType e : element.getInstantiates()) 
53113          composeUri("instantiates", e);
53114    }
53115    if (element.hasBasedOn()) { 
53116      for (Reference e : element.getBasedOn()) 
53117          composeReference("basedOn", e);
53118    }
53119    if (element.hasGroupIdentifier()) {
53120      composeIdentifier("groupIdentifier", element.getGroupIdentifier());
53121    }
53122    if (element.hasStatusElement())
53123      composeEnumeration("status", element.getStatusElement(), new Enumerations.RequestStatusEnumFactory());
53124    if (element.hasIntentElement())
53125      composeEnumeration("intent", element.getIntentElement(), new Enumerations.RequestIntentEnumFactory());
53126    if (element.hasPriorityElement())
53127      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
53128    if (element.hasSubject()) {
53129      composeReference("subject", element.getSubject());
53130    }
53131    if (element.hasEncounter()) {
53132      composeReference("encounter", element.getEncounter());
53133    }
53134    if (element.hasSupportingInformation()) { 
53135      for (Reference e : element.getSupportingInformation()) 
53136          composeReference("supportingInformation", e);
53137    }
53138    if (element.hasDateTimeElement()) {
53139      composeDateTime("dateTime", element.getDateTimeElement());
53140    }
53141    if (element.hasOrderer()) {
53142      composeReference("orderer", element.getOrderer());
53143    }
53144    if (element.hasPerformer()) { 
53145      for (CodeableReference e : element.getPerformer()) 
53146          composeCodeableReference("performer", e);
53147    }
53148    if (element.hasAllergyIntolerance()) { 
53149      for (Reference e : element.getAllergyIntolerance()) 
53150          composeReference("allergyIntolerance", e);
53151    }
53152    if (element.hasFoodPreferenceModifier()) { 
53153      for (CodeableConcept e : element.getFoodPreferenceModifier()) 
53154          composeCodeableConcept("foodPreferenceModifier", e);
53155    }
53156    if (element.hasExcludeFoodModifier()) { 
53157      for (CodeableConcept e : element.getExcludeFoodModifier()) 
53158          composeCodeableConcept("excludeFoodModifier", e);
53159    }
53160    if (element.hasOutsideFoodAllowedElement()) {
53161      composeBoolean("outsideFoodAllowed", element.getOutsideFoodAllowedElement());
53162    }
53163    if (element.hasOralDiet()) {
53164      composeNutritionOrderOralDietComponent("oralDiet", element.getOralDiet());
53165    }
53166    if (element.hasSupplement()) { 
53167      for (NutritionOrder.NutritionOrderSupplementComponent e : element.getSupplement()) 
53168          composeNutritionOrderSupplementComponent("supplement", e);
53169    }
53170    if (element.hasEnteralFormula()) {
53171      composeNutritionOrderEnteralFormulaComponent("enteralFormula", element.getEnteralFormula());
53172    }
53173    if (element.hasNote()) { 
53174      for (Annotation e : element.getNote()) 
53175          composeAnnotation("note", e);
53176    }
53177  }
53178
53179  protected void composeNutritionOrderOralDietComponent(String name, NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
53180    if (element != null) {
53181    composeElementAttributes(element);
53182      xml.enter(FHIR_NS, name);
53183      composeNutritionOrderOralDietComponentElements(element);
53184      composeElementClose(element);
53185      xml.exit(FHIR_NS, name);
53186    }
53187  }
53188
53189  protected void composeNutritionOrderOralDietComponentElements(NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
53190    composeBackboneElementElements(element);
53191    if (element.hasType()) { 
53192      for (CodeableConcept e : element.getType()) 
53193          composeCodeableConcept("type", e);
53194    }
53195    if (element.hasSchedule()) {
53196      composeNutritionOrderOralDietScheduleComponent("schedule", element.getSchedule());
53197    }
53198    if (element.hasNutrient()) { 
53199      for (NutritionOrder.NutritionOrderOralDietNutrientComponent e : element.getNutrient()) 
53200          composeNutritionOrderOralDietNutrientComponent("nutrient", e);
53201    }
53202    if (element.hasTexture()) { 
53203      for (NutritionOrder.NutritionOrderOralDietTextureComponent e : element.getTexture()) 
53204          composeNutritionOrderOralDietTextureComponent("texture", e);
53205    }
53206    if (element.hasFluidConsistencyType()) { 
53207      for (CodeableConcept e : element.getFluidConsistencyType()) 
53208          composeCodeableConcept("fluidConsistencyType", e);
53209    }
53210    if (element.hasInstructionElement()) {
53211      composeString("instruction", element.getInstructionElement());
53212    }
53213  }
53214
53215  protected void composeNutritionOrderOralDietScheduleComponent(String name, NutritionOrder.OralDietScheduleComponent element) throws IOException {
53216    if (element != null) {
53217    composeElementAttributes(element);
53218      xml.enter(FHIR_NS, name);
53219      composeNutritionOrderOralDietScheduleComponentElements(element);
53220      composeElementClose(element);
53221      xml.exit(FHIR_NS, name);
53222    }
53223  }
53224
53225  protected void composeNutritionOrderOralDietScheduleComponentElements(NutritionOrder.OralDietScheduleComponent element) throws IOException {
53226    composeBackboneElementElements(element);
53227    if (element.hasTiming()) { 
53228      for (Timing e : element.getTiming()) 
53229          composeTiming("timing", e);
53230    }
53231    if (element.hasAsNeededElement()) {
53232      composeBoolean("asNeeded", element.getAsNeededElement());
53233    }
53234    if (element.hasAsNeededFor()) {
53235      composeCodeableConcept("asNeededFor", element.getAsNeededFor());
53236    }
53237  }
53238
53239  protected void composeNutritionOrderOralDietNutrientComponent(String name, NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
53240    if (element != null) {
53241    composeElementAttributes(element);
53242      xml.enter(FHIR_NS, name);
53243      composeNutritionOrderOralDietNutrientComponentElements(element);
53244      composeElementClose(element);
53245      xml.exit(FHIR_NS, name);
53246    }
53247  }
53248
53249  protected void composeNutritionOrderOralDietNutrientComponentElements(NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
53250    composeBackboneElementElements(element);
53251    if (element.hasModifier()) {
53252      composeCodeableConcept("modifier", element.getModifier());
53253    }
53254    if (element.hasAmount()) {
53255      composeQuantity("amount", element.getAmount());
53256    }
53257  }
53258
53259  protected void composeNutritionOrderOralDietTextureComponent(String name, NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
53260    if (element != null) {
53261    composeElementAttributes(element);
53262      xml.enter(FHIR_NS, name);
53263      composeNutritionOrderOralDietTextureComponentElements(element);
53264      composeElementClose(element);
53265      xml.exit(FHIR_NS, name);
53266    }
53267  }
53268
53269  protected void composeNutritionOrderOralDietTextureComponentElements(NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
53270    composeBackboneElementElements(element);
53271    if (element.hasModifier()) {
53272      composeCodeableConcept("modifier", element.getModifier());
53273    }
53274    if (element.hasFoodType()) {
53275      composeCodeableConcept("foodType", element.getFoodType());
53276    }
53277  }
53278
53279  protected void composeNutritionOrderSupplementComponent(String name, NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
53280    if (element != null) {
53281    composeElementAttributes(element);
53282      xml.enter(FHIR_NS, name);
53283      composeNutritionOrderSupplementComponentElements(element);
53284      composeElementClose(element);
53285      xml.exit(FHIR_NS, name);
53286    }
53287  }
53288
53289  protected void composeNutritionOrderSupplementComponentElements(NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
53290    composeBackboneElementElements(element);
53291    if (element.hasType()) {
53292      composeCodeableReference("type", element.getType());
53293    }
53294    if (element.hasProductNameElement()) {
53295      composeString("productName", element.getProductNameElement());
53296    }
53297    if (element.hasSchedule()) {
53298      composeNutritionOrderSupplementScheduleComponent("schedule", element.getSchedule());
53299    }
53300    if (element.hasQuantity()) {
53301      composeQuantity("quantity", element.getQuantity());
53302    }
53303    if (element.hasInstructionElement()) {
53304      composeString("instruction", element.getInstructionElement());
53305    }
53306  }
53307
53308  protected void composeNutritionOrderSupplementScheduleComponent(String name, NutritionOrder.SupplementScheduleComponent element) throws IOException {
53309    if (element != null) {
53310    composeElementAttributes(element);
53311      xml.enter(FHIR_NS, name);
53312      composeNutritionOrderSupplementScheduleComponentElements(element);
53313      composeElementClose(element);
53314      xml.exit(FHIR_NS, name);
53315    }
53316  }
53317
53318  protected void composeNutritionOrderSupplementScheduleComponentElements(NutritionOrder.SupplementScheduleComponent element) throws IOException {
53319    composeBackboneElementElements(element);
53320    if (element.hasTiming()) { 
53321      for (Timing e : element.getTiming()) 
53322          composeTiming("timing", e);
53323    }
53324    if (element.hasAsNeededElement()) {
53325      composeBoolean("asNeeded", element.getAsNeededElement());
53326    }
53327    if (element.hasAsNeededFor()) {
53328      composeCodeableConcept("asNeededFor", element.getAsNeededFor());
53329    }
53330  }
53331
53332  protected void composeNutritionOrderEnteralFormulaComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
53333    if (element != null) {
53334    composeElementAttributes(element);
53335      xml.enter(FHIR_NS, name);
53336      composeNutritionOrderEnteralFormulaComponentElements(element);
53337      composeElementClose(element);
53338      xml.exit(FHIR_NS, name);
53339    }
53340  }
53341
53342  protected void composeNutritionOrderEnteralFormulaComponentElements(NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
53343    composeBackboneElementElements(element);
53344    if (element.hasBaseFormulaType()) {
53345      composeCodeableReference("baseFormulaType", element.getBaseFormulaType());
53346    }
53347    if (element.hasBaseFormulaProductNameElement()) {
53348      composeString("baseFormulaProductName", element.getBaseFormulaProductNameElement());
53349    }
53350    if (element.hasDeliveryDevice()) { 
53351      for (CodeableReference e : element.getDeliveryDevice()) 
53352          composeCodeableReference("deliveryDevice", e);
53353    }
53354    if (element.hasAdditive()) { 
53355      for (NutritionOrder.NutritionOrderEnteralFormulaAdditiveComponent e : element.getAdditive()) 
53356          composeNutritionOrderEnteralFormulaAdditiveComponent("additive", e);
53357    }
53358    if (element.hasCaloricDensity()) {
53359      composeQuantity("caloricDensity", element.getCaloricDensity());
53360    }
53361    if (element.hasRouteOfAdministration()) {
53362      composeCodeableConcept("routeOfAdministration", element.getRouteOfAdministration());
53363    }
53364    if (element.hasAdministration()) { 
53365      for (NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent e : element.getAdministration()) 
53366          composeNutritionOrderEnteralFormulaAdministrationComponent("administration", e);
53367    }
53368    if (element.hasMaxVolumeToDeliver()) {
53369      composeQuantity("maxVolumeToDeliver", element.getMaxVolumeToDeliver());
53370    }
53371    if (element.hasAdministrationInstructionElement()) {
53372      composeMarkdown("administrationInstruction", element.getAdministrationInstructionElement());
53373    }
53374  }
53375
53376  protected void composeNutritionOrderEnteralFormulaAdditiveComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaAdditiveComponent element) throws IOException {
53377    if (element != null) {
53378    composeElementAttributes(element);
53379      xml.enter(FHIR_NS, name);
53380      composeNutritionOrderEnteralFormulaAdditiveComponentElements(element);
53381      composeElementClose(element);
53382      xml.exit(FHIR_NS, name);
53383    }
53384  }
53385
53386  protected void composeNutritionOrderEnteralFormulaAdditiveComponentElements(NutritionOrder.NutritionOrderEnteralFormulaAdditiveComponent element) throws IOException {
53387    composeBackboneElementElements(element);
53388    if (element.hasType()) {
53389      composeCodeableReference("type", element.getType());
53390    }
53391    if (element.hasProductNameElement()) {
53392      composeString("productName", element.getProductNameElement());
53393    }
53394    if (element.hasQuantity()) {
53395      composeQuantity("quantity", element.getQuantity());
53396    }
53397  }
53398
53399  protected void composeNutritionOrderEnteralFormulaAdministrationComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
53400    if (element != null) {
53401    composeElementAttributes(element);
53402      xml.enter(FHIR_NS, name);
53403      composeNutritionOrderEnteralFormulaAdministrationComponentElements(element);
53404      composeElementClose(element);
53405      xml.exit(FHIR_NS, name);
53406    }
53407  }
53408
53409  protected void composeNutritionOrderEnteralFormulaAdministrationComponentElements(NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
53410    composeBackboneElementElements(element);
53411    if (element.hasSchedule()) {
53412      composeNutritionOrderEnteralFormulaScheduleComponent("schedule", element.getSchedule());
53413    }
53414    if (element.hasQuantity()) {
53415      composeQuantity("quantity", element.getQuantity());
53416    }
53417    if (element.hasRate()) {
53418      composeType("rate", element.getRate());
53419    }  }
53420
53421  protected void composeNutritionOrderEnteralFormulaScheduleComponent(String name, NutritionOrder.EnteralFormulaScheduleComponent element) throws IOException {
53422    if (element != null) {
53423    composeElementAttributes(element);
53424      xml.enter(FHIR_NS, name);
53425      composeNutritionOrderEnteralFormulaScheduleComponentElements(element);
53426      composeElementClose(element);
53427      xml.exit(FHIR_NS, name);
53428    }
53429  }
53430
53431  protected void composeNutritionOrderEnteralFormulaScheduleComponentElements(NutritionOrder.EnteralFormulaScheduleComponent element) throws IOException {
53432    composeBackboneElementElements(element);
53433    if (element.hasTiming()) { 
53434      for (Timing e : element.getTiming()) 
53435          composeTiming("timing", e);
53436    }
53437    if (element.hasAsNeededElement()) {
53438      composeBoolean("asNeeded", element.getAsNeededElement());
53439    }
53440    if (element.hasAsNeededFor()) {
53441      composeCodeableConcept("asNeededFor", element.getAsNeededFor());
53442    }
53443  }
53444
53445  protected void composeNutritionProduct(String name, NutritionProduct element) throws IOException {
53446    if (element != null) {
53447    composeResourceAttributes(element);
53448      xml.enter(FHIR_NS, name);
53449      composeNutritionProductElements(element);
53450      composeElementClose(element);
53451      xml.exit(FHIR_NS, name);
53452    }
53453  }
53454
53455  protected void composeNutritionProductElements(NutritionProduct element) throws IOException {
53456    composeDomainResourceElements(element);
53457    if (element.hasCode()) {
53458      composeCodeableConcept("code", element.getCode());
53459    }
53460    if (element.hasStatusElement())
53461      composeEnumeration("status", element.getStatusElement(), new NutritionProduct.NutritionProductStatusEnumFactory());
53462    if (element.hasCategory()) { 
53463      for (CodeableConcept e : element.getCategory()) 
53464          composeCodeableConcept("category", e);
53465    }
53466    if (element.hasManufacturer()) { 
53467      for (Reference e : element.getManufacturer()) 
53468          composeReference("manufacturer", e);
53469    }
53470    if (element.hasNutrient()) { 
53471      for (NutritionProduct.NutritionProductNutrientComponent e : element.getNutrient()) 
53472          composeNutritionProductNutrientComponent("nutrient", e);
53473    }
53474    if (element.hasIngredient()) { 
53475      for (NutritionProduct.NutritionProductIngredientComponent e : element.getIngredient()) 
53476          composeNutritionProductIngredientComponent("ingredient", e);
53477    }
53478    if (element.hasKnownAllergen()) { 
53479      for (CodeableReference e : element.getKnownAllergen()) 
53480          composeCodeableReference("knownAllergen", e);
53481    }
53482    if (element.hasCharacteristic()) { 
53483      for (NutritionProduct.NutritionProductCharacteristicComponent e : element.getCharacteristic()) 
53484          composeNutritionProductCharacteristicComponent("characteristic", e);
53485    }
53486    if (element.hasInstance()) { 
53487      for (NutritionProduct.NutritionProductInstanceComponent e : element.getInstance()) 
53488          composeNutritionProductInstanceComponent("instance", e);
53489    }
53490    if (element.hasNote()) { 
53491      for (Annotation e : element.getNote()) 
53492          composeAnnotation("note", e);
53493    }
53494  }
53495
53496  protected void composeNutritionProductNutrientComponent(String name, NutritionProduct.NutritionProductNutrientComponent element) throws IOException {
53497    if (element != null) {
53498    composeElementAttributes(element);
53499      xml.enter(FHIR_NS, name);
53500      composeNutritionProductNutrientComponentElements(element);
53501      composeElementClose(element);
53502      xml.exit(FHIR_NS, name);
53503    }
53504  }
53505
53506  protected void composeNutritionProductNutrientComponentElements(NutritionProduct.NutritionProductNutrientComponent element) throws IOException {
53507    composeBackboneElementElements(element);
53508    if (element.hasItem()) {
53509      composeCodeableReference("item", element.getItem());
53510    }
53511    if (element.hasAmount()) { 
53512      for (Ratio e : element.getAmount()) 
53513          composeRatio("amount", e);
53514    }
53515  }
53516
53517  protected void composeNutritionProductIngredientComponent(String name, NutritionProduct.NutritionProductIngredientComponent element) throws IOException {
53518    if (element != null) {
53519    composeElementAttributes(element);
53520      xml.enter(FHIR_NS, name);
53521      composeNutritionProductIngredientComponentElements(element);
53522      composeElementClose(element);
53523      xml.exit(FHIR_NS, name);
53524    }
53525  }
53526
53527  protected void composeNutritionProductIngredientComponentElements(NutritionProduct.NutritionProductIngredientComponent element) throws IOException {
53528    composeBackboneElementElements(element);
53529    if (element.hasItem()) {
53530      composeCodeableReference("item", element.getItem());
53531    }
53532    if (element.hasAmount()) { 
53533      for (Ratio e : element.getAmount()) 
53534          composeRatio("amount", e);
53535    }
53536  }
53537
53538  protected void composeNutritionProductCharacteristicComponent(String name, NutritionProduct.NutritionProductCharacteristicComponent element) throws IOException {
53539    if (element != null) {
53540    composeElementAttributes(element);
53541      xml.enter(FHIR_NS, name);
53542      composeNutritionProductCharacteristicComponentElements(element);
53543      composeElementClose(element);
53544      xml.exit(FHIR_NS, name);
53545    }
53546  }
53547
53548  protected void composeNutritionProductCharacteristicComponentElements(NutritionProduct.NutritionProductCharacteristicComponent element) throws IOException {
53549    composeBackboneElementElements(element);
53550    if (element.hasType()) {
53551      composeCodeableConcept("type", element.getType());
53552    }
53553    if (element.hasValue()) {
53554      composeType("value", element.getValue());
53555    }  }
53556
53557  protected void composeNutritionProductInstanceComponent(String name, NutritionProduct.NutritionProductInstanceComponent element) throws IOException {
53558    if (element != null) {
53559    composeElementAttributes(element);
53560      xml.enter(FHIR_NS, name);
53561      composeNutritionProductInstanceComponentElements(element);
53562      composeElementClose(element);
53563      xml.exit(FHIR_NS, name);
53564    }
53565  }
53566
53567  protected void composeNutritionProductInstanceComponentElements(NutritionProduct.NutritionProductInstanceComponent element) throws IOException {
53568    composeBackboneElementElements(element);
53569    if (element.hasQuantity()) {
53570      composeQuantity("quantity", element.getQuantity());
53571    }
53572    if (element.hasIdentifier()) { 
53573      for (Identifier e : element.getIdentifier()) 
53574          composeIdentifier("identifier", e);
53575    }
53576    if (element.hasNameElement()) {
53577      composeString("name", element.getNameElement());
53578    }
53579    if (element.hasLotNumberElement()) {
53580      composeString("lotNumber", element.getLotNumberElement());
53581    }
53582    if (element.hasExpiryElement()) {
53583      composeDateTime("expiry", element.getExpiryElement());
53584    }
53585    if (element.hasUseByElement()) {
53586      composeDateTime("useBy", element.getUseByElement());
53587    }
53588    if (element.hasBiologicalSourceEvent()) {
53589      composeIdentifier("biologicalSourceEvent", element.getBiologicalSourceEvent());
53590    }
53591  }
53592
53593  protected void composeObservation(String name, Observation element) throws IOException {
53594    if (element != null) {
53595    composeResourceAttributes(element);
53596      xml.enter(FHIR_NS, name);
53597      composeObservationElements(element);
53598      composeElementClose(element);
53599      xml.exit(FHIR_NS, name);
53600    }
53601  }
53602
53603  protected void composeObservationElements(Observation element) throws IOException {
53604    composeDomainResourceElements(element);
53605    if (element.hasIdentifier()) { 
53606      for (Identifier e : element.getIdentifier()) 
53607          composeIdentifier("identifier", e);
53608    }
53609    if (element.hasInstantiates()) {
53610      composeType("instantiates", element.getInstantiates());
53611    }    if (element.hasBasedOn()) { 
53612      for (Reference e : element.getBasedOn()) 
53613          composeReference("basedOn", e);
53614    }
53615    if (element.hasTriggeredBy()) { 
53616      for (Observation.ObservationTriggeredByComponent e : element.getTriggeredBy()) 
53617          composeObservationTriggeredByComponent("triggeredBy", e);
53618    }
53619    if (element.hasPartOf()) { 
53620      for (Reference e : element.getPartOf()) 
53621          composeReference("partOf", e);
53622    }
53623    if (element.hasStatusElement())
53624      composeEnumeration("status", element.getStatusElement(), new Enumerations.ObservationStatusEnumFactory());
53625    if (element.hasCategory()) { 
53626      for (CodeableConcept e : element.getCategory()) 
53627          composeCodeableConcept("category", e);
53628    }
53629    if (element.hasCode()) {
53630      composeCodeableConcept("code", element.getCode());
53631    }
53632    if (element.hasSubject()) {
53633      composeReference("subject", element.getSubject());
53634    }
53635    if (element.hasFocus()) { 
53636      for (Reference e : element.getFocus()) 
53637          composeReference("focus", e);
53638    }
53639    if (element.hasEncounter()) {
53640      composeReference("encounter", element.getEncounter());
53641    }
53642    if (element.hasEffective()) {
53643      composeType("effective", element.getEffective());
53644    }    if (element.hasIssuedElement()) {
53645      composeInstant("issued", element.getIssuedElement());
53646    }
53647    if (element.hasPerformer()) { 
53648      for (Reference e : element.getPerformer()) 
53649          composeReference("performer", e);
53650    }
53651    if (element.hasValue()) {
53652      composeType("value", element.getValue());
53653    }    if (element.hasDataAbsentReason()) {
53654      composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
53655    }
53656    if (element.hasInterpretation()) { 
53657      for (CodeableConcept e : element.getInterpretation()) 
53658          composeCodeableConcept("interpretation", e);
53659    }
53660    if (element.hasNote()) { 
53661      for (Annotation e : element.getNote()) 
53662          composeAnnotation("note", e);
53663    }
53664    if (element.hasBodySite()) {
53665      composeCodeableConcept("bodySite", element.getBodySite());
53666    }
53667    if (element.hasBodyStructure()) {
53668      composeReference("bodyStructure", element.getBodyStructure());
53669    }
53670    if (element.hasMethod()) {
53671      composeCodeableConcept("method", element.getMethod());
53672    }
53673    if (element.hasSpecimen()) {
53674      composeReference("specimen", element.getSpecimen());
53675    }
53676    if (element.hasDevice()) {
53677      composeReference("device", element.getDevice());
53678    }
53679    if (element.hasReferenceRange()) { 
53680      for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
53681          composeObservationReferenceRangeComponent("referenceRange", e);
53682    }
53683    if (element.hasHasMember()) { 
53684      for (Reference e : element.getHasMember()) 
53685          composeReference("hasMember", e);
53686    }
53687    if (element.hasDerivedFrom()) { 
53688      for (Reference e : element.getDerivedFrom()) 
53689          composeReference("derivedFrom", e);
53690    }
53691    if (element.hasComponent()) { 
53692      for (Observation.ObservationComponentComponent e : element.getComponent()) 
53693          composeObservationComponentComponent("component", e);
53694    }
53695  }
53696
53697  protected void composeObservationTriggeredByComponent(String name, Observation.ObservationTriggeredByComponent element) throws IOException {
53698    if (element != null) {
53699    composeElementAttributes(element);
53700      xml.enter(FHIR_NS, name);
53701      composeObservationTriggeredByComponentElements(element);
53702      composeElementClose(element);
53703      xml.exit(FHIR_NS, name);
53704    }
53705  }
53706
53707  protected void composeObservationTriggeredByComponentElements(Observation.ObservationTriggeredByComponent element) throws IOException {
53708    composeBackboneElementElements(element);
53709    if (element.hasObservation()) {
53710      composeReference("observation", element.getObservation());
53711    }
53712    if (element.hasTypeElement())
53713      composeEnumeration("type", element.getTypeElement(), new Observation.TriggeredBytypeEnumFactory());
53714    if (element.hasReasonElement()) {
53715      composeString("reason", element.getReasonElement());
53716    }
53717  }
53718
53719  protected void composeObservationReferenceRangeComponent(String name, Observation.ObservationReferenceRangeComponent element) throws IOException {
53720    if (element != null) {
53721    composeElementAttributes(element);
53722      xml.enter(FHIR_NS, name);
53723      composeObservationReferenceRangeComponentElements(element);
53724      composeElementClose(element);
53725      xml.exit(FHIR_NS, name);
53726    }
53727  }
53728
53729  protected void composeObservationReferenceRangeComponentElements(Observation.ObservationReferenceRangeComponent element) throws IOException {
53730    composeBackboneElementElements(element);
53731    if (element.hasLow()) {
53732      composeQuantity("low", element.getLow());
53733    }
53734    if (element.hasHigh()) {
53735      composeQuantity("high", element.getHigh());
53736    }
53737    if (element.hasNormalValue()) {
53738      composeCodeableConcept("normalValue", element.getNormalValue());
53739    }
53740    if (element.hasType()) {
53741      composeCodeableConcept("type", element.getType());
53742    }
53743    if (element.hasAppliesTo()) { 
53744      for (CodeableConcept e : element.getAppliesTo()) 
53745          composeCodeableConcept("appliesTo", e);
53746    }
53747    if (element.hasAge()) {
53748      composeRange("age", element.getAge());
53749    }
53750    if (element.hasTextElement()) {
53751      composeMarkdown("text", element.getTextElement());
53752    }
53753  }
53754
53755  protected void composeObservationComponentComponent(String name, Observation.ObservationComponentComponent element) throws IOException {
53756    if (element != null) {
53757    composeElementAttributes(element);
53758      xml.enter(FHIR_NS, name);
53759      composeObservationComponentComponentElements(element);
53760      composeElementClose(element);
53761      xml.exit(FHIR_NS, name);
53762    }
53763  }
53764
53765  protected void composeObservationComponentComponentElements(Observation.ObservationComponentComponent element) throws IOException {
53766    composeBackboneElementElements(element);
53767    if (element.hasCode()) {
53768      composeCodeableConcept("code", element.getCode());
53769    }
53770    if (element.hasValue()) {
53771      composeType("value", element.getValue());
53772    }    if (element.hasDataAbsentReason()) {
53773      composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
53774    }
53775    if (element.hasInterpretation()) { 
53776      for (CodeableConcept e : element.getInterpretation()) 
53777          composeCodeableConcept("interpretation", e);
53778    }
53779    if (element.hasReferenceRange()) { 
53780      for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
53781          composeObservationReferenceRangeComponent("referenceRange", e);
53782    }
53783  }
53784
53785  protected void composeObservationDefinition(String name, ObservationDefinition element) throws IOException {
53786    if (element != null) {
53787    composeResourceAttributes(element);
53788      xml.enter(FHIR_NS, name);
53789      composeObservationDefinitionElements(element);
53790      composeElementClose(element);
53791      xml.exit(FHIR_NS, name);
53792    }
53793  }
53794
53795  protected void composeObservationDefinitionElements(ObservationDefinition element) throws IOException {
53796    composeDomainResourceElements(element);
53797    if (element.hasUrlElement()) {
53798      composeUri("url", element.getUrlElement());
53799    }
53800    if (element.hasIdentifier()) {
53801      composeIdentifier("identifier", element.getIdentifier());
53802    }
53803    if (element.hasVersionElement()) {
53804      composeString("version", element.getVersionElement());
53805    }
53806    if (element.hasVersionAlgorithm()) {
53807      composeType("versionAlgorithm", element.getVersionAlgorithm());
53808    }    if (element.hasNameElement()) {
53809      composeString("name", element.getNameElement());
53810    }
53811    if (element.hasTitleElement()) {
53812      composeString("title", element.getTitleElement());
53813    }
53814    if (element.hasStatusElement())
53815      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
53816    if (element.hasExperimentalElement()) {
53817      composeBoolean("experimental", element.getExperimentalElement());
53818    }
53819    if (element.hasDateElement()) {
53820      composeDateTime("date", element.getDateElement());
53821    }
53822    if (element.hasPublisherElement()) {
53823      composeString("publisher", element.getPublisherElement());
53824    }
53825    if (element.hasContact()) { 
53826      for (ContactDetail e : element.getContact()) 
53827          composeContactDetail("contact", e);
53828    }
53829    if (element.hasDescriptionElement()) {
53830      composeMarkdown("description", element.getDescriptionElement());
53831    }
53832    if (element.hasUseContext()) { 
53833      for (UsageContext e : element.getUseContext()) 
53834          composeUsageContext("useContext", e);
53835    }
53836    if (element.hasJurisdiction()) { 
53837      for (CodeableConcept e : element.getJurisdiction()) 
53838          composeCodeableConcept("jurisdiction", e);
53839    }
53840    if (element.hasPurposeElement()) {
53841      composeMarkdown("purpose", element.getPurposeElement());
53842    }
53843    if (element.hasCopyrightElement()) {
53844      composeMarkdown("copyright", element.getCopyrightElement());
53845    }
53846    if (element.hasCopyrightLabelElement()) {
53847      composeString("copyrightLabel", element.getCopyrightLabelElement());
53848    }
53849    if (element.hasApprovalDateElement()) {
53850      composeDate("approvalDate", element.getApprovalDateElement());
53851    }
53852    if (element.hasLastReviewDateElement()) {
53853      composeDate("lastReviewDate", element.getLastReviewDateElement());
53854    }
53855    if (element.hasEffectivePeriod()) {
53856      composePeriod("effectivePeriod", element.getEffectivePeriod());
53857    }
53858    if (element.hasDerivedFromCanonical()) { 
53859      for (CanonicalType e : element.getDerivedFromCanonical()) 
53860          composeCanonical("derivedFromCanonical", e);
53861    }
53862    if (element.hasDerivedFromUri()) { 
53863      for (UriType e : element.getDerivedFromUri()) 
53864          composeUri("derivedFromUri", e);
53865    }
53866    if (element.hasSubject()) { 
53867      for (CodeableConcept e : element.getSubject()) 
53868          composeCodeableConcept("subject", e);
53869    }
53870    if (element.hasPerformerType()) {
53871      composeCodeableConcept("performerType", element.getPerformerType());
53872    }
53873    if (element.hasCategory()) { 
53874      for (CodeableConcept e : element.getCategory()) 
53875          composeCodeableConcept("category", e);
53876    }
53877    if (element.hasCode()) {
53878      composeCodeableConcept("code", element.getCode());
53879    }
53880      if (element.hasPermittedDataType()) 
53881        for (Enumeration<ObservationDefinition.ObservationDataType> e : element.getPermittedDataType()) 
53882          composeEnumeration("permittedDataType", e, new ObservationDefinition.ObservationDataTypeEnumFactory());
53883    if (element.hasMultipleResultsAllowedElement()) {
53884      composeBoolean("multipleResultsAllowed", element.getMultipleResultsAllowedElement());
53885    }
53886    if (element.hasBodySite()) {
53887      composeCodeableConcept("bodySite", element.getBodySite());
53888    }
53889    if (element.hasMethod()) {
53890      composeCodeableConcept("method", element.getMethod());
53891    }
53892    if (element.hasSpecimen()) { 
53893      for (Reference e : element.getSpecimen()) 
53894          composeReference("specimen", e);
53895    }
53896    if (element.hasDevice()) { 
53897      for (Reference e : element.getDevice()) 
53898          composeReference("device", e);
53899    }
53900    if (element.hasPreferredReportNameElement()) {
53901      composeString("preferredReportName", element.getPreferredReportNameElement());
53902    }
53903    if (element.hasPermittedUnit()) { 
53904      for (Coding e : element.getPermittedUnit()) 
53905          composeCoding("permittedUnit", e);
53906    }
53907    if (element.hasQualifiedValue()) { 
53908      for (ObservationDefinition.ObservationDefinitionQualifiedValueComponent e : element.getQualifiedValue()) 
53909          composeObservationDefinitionQualifiedValueComponent("qualifiedValue", e);
53910    }
53911    if (element.hasHasMember()) { 
53912      for (Reference e : element.getHasMember()) 
53913          composeReference("hasMember", e);
53914    }
53915    if (element.hasComponent()) { 
53916      for (ObservationDefinition.ObservationDefinitionComponentComponent e : element.getComponent()) 
53917          composeObservationDefinitionComponentComponent("component", e);
53918    }
53919  }
53920
53921  protected void composeObservationDefinitionQualifiedValueComponent(String name, ObservationDefinition.ObservationDefinitionQualifiedValueComponent element) throws IOException {
53922    if (element != null) {
53923    composeElementAttributes(element);
53924      xml.enter(FHIR_NS, name);
53925      composeObservationDefinitionQualifiedValueComponentElements(element);
53926      composeElementClose(element);
53927      xml.exit(FHIR_NS, name);
53928    }
53929  }
53930
53931  protected void composeObservationDefinitionQualifiedValueComponentElements(ObservationDefinition.ObservationDefinitionQualifiedValueComponent element) throws IOException {
53932    composeBackboneElementElements(element);
53933    if (element.hasContext()) {
53934      composeCodeableConcept("context", element.getContext());
53935    }
53936    if (element.hasAppliesTo()) { 
53937      for (CodeableConcept e : element.getAppliesTo()) 
53938          composeCodeableConcept("appliesTo", e);
53939    }
53940    if (element.hasGenderElement())
53941      composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
53942    if (element.hasAge()) {
53943      composeRange("age", element.getAge());
53944    }
53945    if (element.hasGestationalAge()) {
53946      composeRange("gestationalAge", element.getGestationalAge());
53947    }
53948    if (element.hasConditionElement()) {
53949      composeString("condition", element.getConditionElement());
53950    }
53951    if (element.hasRangeCategoryElement())
53952      composeEnumeration("rangeCategory", element.getRangeCategoryElement(), new ObservationDefinition.ObservationRangeCategoryEnumFactory());
53953    if (element.hasRange()) {
53954      composeRange("range", element.getRange());
53955    }
53956    if (element.hasValidCodedValueSetElement()) {
53957      composeCanonical("validCodedValueSet", element.getValidCodedValueSetElement());
53958    }
53959    if (element.hasNormalCodedValueSetElement()) {
53960      composeCanonical("normalCodedValueSet", element.getNormalCodedValueSetElement());
53961    }
53962    if (element.hasAbnormalCodedValueSetElement()) {
53963      composeCanonical("abnormalCodedValueSet", element.getAbnormalCodedValueSetElement());
53964    }
53965    if (element.hasCriticalCodedValueSetElement()) {
53966      composeCanonical("criticalCodedValueSet", element.getCriticalCodedValueSetElement());
53967    }
53968  }
53969
53970  protected void composeObservationDefinitionComponentComponent(String name, ObservationDefinition.ObservationDefinitionComponentComponent element) throws IOException {
53971    if (element != null) {
53972    composeElementAttributes(element);
53973      xml.enter(FHIR_NS, name);
53974      composeObservationDefinitionComponentComponentElements(element);
53975      composeElementClose(element);
53976      xml.exit(FHIR_NS, name);
53977    }
53978  }
53979
53980  protected void composeObservationDefinitionComponentComponentElements(ObservationDefinition.ObservationDefinitionComponentComponent element) throws IOException {
53981    composeBackboneElementElements(element);
53982    if (element.hasCode()) {
53983      composeCodeableConcept("code", element.getCode());
53984    }
53985      if (element.hasPermittedDataType()) 
53986        for (Enumeration<ObservationDefinition.ObservationDataType> e : element.getPermittedDataType()) 
53987          composeEnumeration("permittedDataType", e, new ObservationDefinition.ObservationDataTypeEnumFactory());
53988    if (element.hasPermittedUnit()) { 
53989      for (Coding e : element.getPermittedUnit()) 
53990          composeCoding("permittedUnit", e);
53991    }
53992    if (element.hasQualifiedValue()) { 
53993      for (ObservationDefinition.ObservationDefinitionQualifiedValueComponent e : element.getQualifiedValue()) 
53994          composeObservationDefinitionQualifiedValueComponent("qualifiedValue", e);
53995    }
53996  }
53997
53998  protected void composeOperationDefinition(String name, OperationDefinition element) throws IOException {
53999    if (element != null) {
54000    composeResourceAttributes(element);
54001      xml.enter(FHIR_NS, name);
54002      composeOperationDefinitionElements(element);
54003      composeElementClose(element);
54004      xml.exit(FHIR_NS, name);
54005    }
54006  }
54007
54008  protected void composeOperationDefinitionElements(OperationDefinition element) throws IOException {
54009    composeCanonicalResourceElements(element);
54010    if (element.hasUrlElement()) {
54011      composeUri("url", element.getUrlElement());
54012    }
54013    if (element.hasIdentifier()) { 
54014      for (Identifier e : element.getIdentifier()) 
54015          composeIdentifier("identifier", e);
54016    }
54017    if (element.hasVersionElement()) {
54018      composeString("version", element.getVersionElement());
54019    }
54020    if (element.hasVersionAlgorithm()) {
54021      composeType("versionAlgorithm", element.getVersionAlgorithm());
54022    }    if (element.hasNameElement()) {
54023      composeString("name", element.getNameElement());
54024    }
54025    if (element.hasTitleElement()) {
54026      composeString("title", element.getTitleElement());
54027    }
54028    if (element.hasStatusElement())
54029      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
54030    if (element.hasKindElement())
54031      composeEnumeration("kind", element.getKindElement(), new OperationDefinition.OperationKindEnumFactory());
54032    if (element.hasExperimentalElement()) {
54033      composeBoolean("experimental", element.getExperimentalElement());
54034    }
54035    if (element.hasDateElement()) {
54036      composeDateTime("date", element.getDateElement());
54037    }
54038    if (element.hasPublisherElement()) {
54039      composeString("publisher", element.getPublisherElement());
54040    }
54041    if (element.hasContact()) { 
54042      for (ContactDetail e : element.getContact()) 
54043          composeContactDetail("contact", e);
54044    }
54045    if (element.hasDescriptionElement()) {
54046      composeMarkdown("description", element.getDescriptionElement());
54047    }
54048    if (element.hasUseContext()) { 
54049      for (UsageContext e : element.getUseContext()) 
54050          composeUsageContext("useContext", e);
54051    }
54052    if (element.hasJurisdiction()) { 
54053      for (CodeableConcept e : element.getJurisdiction()) 
54054          composeCodeableConcept("jurisdiction", e);
54055    }
54056    if (element.hasPurposeElement()) {
54057      composeMarkdown("purpose", element.getPurposeElement());
54058    }
54059    if (element.hasCopyrightElement()) {
54060      composeMarkdown("copyright", element.getCopyrightElement());
54061    }
54062    if (element.hasCopyrightLabelElement()) {
54063      composeString("copyrightLabel", element.getCopyrightLabelElement());
54064    }
54065    if (element.hasAffectsStateElement()) {
54066      composeBoolean("affectsState", element.getAffectsStateElement());
54067    }
54068    if (element.hasCodeElement()) {
54069      composeCode("code", element.getCodeElement());
54070    }
54071    if (element.hasCommentElement()) {
54072      composeMarkdown("comment", element.getCommentElement());
54073    }
54074    if (element.hasBaseElement()) {
54075      composeCanonical("base", element.getBaseElement());
54076    }
54077      if (element.hasResource()) 
54078        for (Enumeration<Enumerations.VersionIndependentResourceTypesAll> e : element.getResource()) 
54079          composeEnumeration("resource", e, new Enumerations.VersionIndependentResourceTypesAllEnumFactory());
54080    if (element.hasSystemElement()) {
54081      composeBoolean("system", element.getSystemElement());
54082    }
54083    if (element.hasTypeElement()) {
54084      composeBoolean("type", element.getTypeElement());
54085    }
54086    if (element.hasInstanceElement()) {
54087      composeBoolean("instance", element.getInstanceElement());
54088    }
54089    if (element.hasInputProfileElement()) {
54090      composeCanonical("inputProfile", element.getInputProfileElement());
54091    }
54092    if (element.hasOutputProfileElement()) {
54093      composeCanonical("outputProfile", element.getOutputProfileElement());
54094    }
54095    if (element.hasParameter()) { 
54096      for (OperationDefinition.OperationDefinitionParameterComponent e : element.getParameter()) 
54097          composeOperationDefinitionParameterComponent("parameter", e);
54098    }
54099    if (element.hasOverload()) { 
54100      for (OperationDefinition.OperationDefinitionOverloadComponent e : element.getOverload()) 
54101          composeOperationDefinitionOverloadComponent("overload", e);
54102    }
54103  }
54104
54105  protected void composeOperationDefinitionParameterComponent(String name, OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
54106    if (element != null) {
54107    composeElementAttributes(element);
54108      xml.enter(FHIR_NS, name);
54109      composeOperationDefinitionParameterComponentElements(element);
54110      composeElementClose(element);
54111      xml.exit(FHIR_NS, name);
54112    }
54113  }
54114
54115  protected void composeOperationDefinitionParameterComponentElements(OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
54116    composeBackboneElementElements(element);
54117    if (element.hasNameElement()) {
54118      composeCode("name", element.getNameElement());
54119    }
54120    if (element.hasUseElement())
54121      composeEnumeration("use", element.getUseElement(), new Enumerations.OperationParameterUseEnumFactory());
54122      if (element.hasScope()) 
54123        for (Enumeration<OperationDefinition.OperationParameterScope> e : element.getScope()) 
54124          composeEnumeration("scope", e, new OperationDefinition.OperationParameterScopeEnumFactory());
54125    if (element.hasMinElement()) {
54126      composeInteger("min", element.getMinElement());
54127    }
54128    if (element.hasMaxElement()) {
54129      composeString("max", element.getMaxElement());
54130    }
54131    if (element.hasDocumentationElement()) {
54132      composeMarkdown("documentation", element.getDocumentationElement());
54133    }
54134    if (element.hasTypeElement())
54135      composeEnumeration("type", element.getTypeElement(), new Enumerations.FHIRTypesEnumFactory());
54136      if (element.hasAllowedType()) 
54137        for (Enumeration<Enumerations.FHIRTypes> e : element.getAllowedType()) 
54138          composeEnumeration("allowedType", e, new Enumerations.FHIRTypesEnumFactory());
54139    if (element.hasTargetProfile()) { 
54140      for (CanonicalType e : element.getTargetProfile()) 
54141          composeCanonical("targetProfile", e);
54142    }
54143    if (element.hasSearchTypeElement())
54144      composeEnumeration("searchType", element.getSearchTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
54145    if (element.hasBinding()) {
54146      composeOperationDefinitionParameterBindingComponent("binding", element.getBinding());
54147    }
54148    if (element.hasReferencedFrom()) { 
54149      for (OperationDefinition.OperationDefinitionParameterReferencedFromComponent e : element.getReferencedFrom()) 
54150          composeOperationDefinitionParameterReferencedFromComponent("referencedFrom", e);
54151    }
54152    if (element.hasPart()) { 
54153      for (OperationDefinition.OperationDefinitionParameterComponent e : element.getPart()) 
54154          composeOperationDefinitionParameterComponent("part", e);
54155    }
54156  }
54157
54158  protected void composeOperationDefinitionParameterBindingComponent(String name, OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
54159    if (element != null) {
54160    composeElementAttributes(element);
54161      xml.enter(FHIR_NS, name);
54162      composeOperationDefinitionParameterBindingComponentElements(element);
54163      composeElementClose(element);
54164      xml.exit(FHIR_NS, name);
54165    }
54166  }
54167
54168  protected void composeOperationDefinitionParameterBindingComponentElements(OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
54169    composeBackboneElementElements(element);
54170    if (element.hasStrengthElement())
54171      composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
54172    if (element.hasValueSetElement()) {
54173      composeCanonical("valueSet", element.getValueSetElement());
54174    }
54175  }
54176
54177  protected void composeOperationDefinitionParameterReferencedFromComponent(String name, OperationDefinition.OperationDefinitionParameterReferencedFromComponent element) throws IOException {
54178    if (element != null) {
54179    composeElementAttributes(element);
54180      xml.enter(FHIR_NS, name);
54181      composeOperationDefinitionParameterReferencedFromComponentElements(element);
54182      composeElementClose(element);
54183      xml.exit(FHIR_NS, name);
54184    }
54185  }
54186
54187  protected void composeOperationDefinitionParameterReferencedFromComponentElements(OperationDefinition.OperationDefinitionParameterReferencedFromComponent element) throws IOException {
54188    composeBackboneElementElements(element);
54189    if (element.hasSourceElement()) {
54190      composeString("source", element.getSourceElement());
54191    }
54192    if (element.hasSourceIdElement()) {
54193      composeString("sourceId", element.getSourceIdElement());
54194    }
54195  }
54196
54197  protected void composeOperationDefinitionOverloadComponent(String name, OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
54198    if (element != null) {
54199    composeElementAttributes(element);
54200      xml.enter(FHIR_NS, name);
54201      composeOperationDefinitionOverloadComponentElements(element);
54202      composeElementClose(element);
54203      xml.exit(FHIR_NS, name);
54204    }
54205  }
54206
54207  protected void composeOperationDefinitionOverloadComponentElements(OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
54208    composeBackboneElementElements(element);
54209    if (element.hasParameterName()) { 
54210      for (StringType e : element.getParameterName()) 
54211          composeString("parameterName", e);
54212    }
54213    if (element.hasCommentElement()) {
54214      composeString("comment", element.getCommentElement());
54215    }
54216  }
54217
54218  protected void composeOperationOutcome(String name, OperationOutcome element) throws IOException {
54219    if (element != null) {
54220    composeResourceAttributes(element);
54221      xml.enter(FHIR_NS, name);
54222      composeOperationOutcomeElements(element);
54223      composeElementClose(element);
54224      xml.exit(FHIR_NS, name);
54225    }
54226  }
54227
54228  protected void composeOperationOutcomeElements(OperationOutcome element) throws IOException {
54229    composeDomainResourceElements(element);
54230    if (element.hasIssue()) { 
54231      for (OperationOutcome.OperationOutcomeIssueComponent e : element.getIssue()) 
54232          composeOperationOutcomeIssueComponent("issue", e);
54233    }
54234  }
54235
54236  protected void composeOperationOutcomeIssueComponent(String name, OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
54237    if (element != null) {
54238    composeElementAttributes(element);
54239      xml.enter(FHIR_NS, name);
54240      composeOperationOutcomeIssueComponentElements(element);
54241      composeElementClose(element);
54242      xml.exit(FHIR_NS, name);
54243    }
54244  }
54245
54246  protected void composeOperationOutcomeIssueComponentElements(OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
54247    composeBackboneElementElements(element);
54248    if (element.hasSeverityElement())
54249      composeEnumeration("severity", element.getSeverityElement(), new OperationOutcome.IssueSeverityEnumFactory());
54250    if (element.hasCodeElement())
54251      composeEnumeration("code", element.getCodeElement(), new OperationOutcome.IssueTypeEnumFactory());
54252    if (element.hasDetails()) {
54253      composeCodeableConcept("details", element.getDetails());
54254    }
54255    if (element.hasDiagnosticsElement()) {
54256      composeString("diagnostics", element.getDiagnosticsElement());
54257    }
54258    if (element.hasLocation()) { 
54259      for (StringType e : element.getLocation()) 
54260          composeString("location", e);
54261    }
54262    if (element.hasExpression()) { 
54263      for (StringType e : element.getExpression()) 
54264          composeString("expression", e);
54265    }
54266  }
54267
54268  protected void composeOrganization(String name, Organization element) throws IOException {
54269    if (element != null) {
54270    composeResourceAttributes(element);
54271      xml.enter(FHIR_NS, name);
54272      composeOrganizationElements(element);
54273      composeElementClose(element);
54274      xml.exit(FHIR_NS, name);
54275    }
54276  }
54277
54278  protected void composeOrganizationElements(Organization element) throws IOException {
54279    composeDomainResourceElements(element);
54280    if (element.hasIdentifier()) { 
54281      for (Identifier e : element.getIdentifier()) 
54282          composeIdentifier("identifier", e);
54283    }
54284    if (element.hasActiveElement()) {
54285      composeBoolean("active", element.getActiveElement());
54286    }
54287    if (element.hasType()) { 
54288      for (CodeableConcept e : element.getType()) 
54289          composeCodeableConcept("type", e);
54290    }
54291    if (element.hasNameElement()) {
54292      composeString("name", element.getNameElement());
54293    }
54294    if (element.hasAlias()) { 
54295      for (StringType e : element.getAlias()) 
54296          composeString("alias", e);
54297    }
54298    if (element.hasDescriptionElement()) {
54299      composeMarkdown("description", element.getDescriptionElement());
54300    }
54301    if (element.hasContact()) { 
54302      for (ExtendedContactDetail e : element.getContact()) 
54303          composeExtendedContactDetail("contact", e);
54304    }
54305    if (element.hasPartOf()) {
54306      composeReference("partOf", element.getPartOf());
54307    }
54308    if (element.hasEndpoint()) { 
54309      for (Reference e : element.getEndpoint()) 
54310          composeReference("endpoint", e);
54311    }
54312    if (element.hasQualification()) { 
54313      for (Organization.OrganizationQualificationComponent e : element.getQualification()) 
54314          composeOrganizationQualificationComponent("qualification", e);
54315    }
54316  }
54317
54318  protected void composeOrganizationQualificationComponent(String name, Organization.OrganizationQualificationComponent element) throws IOException {
54319    if (element != null) {
54320    composeElementAttributes(element);
54321      xml.enter(FHIR_NS, name);
54322      composeOrganizationQualificationComponentElements(element);
54323      composeElementClose(element);
54324      xml.exit(FHIR_NS, name);
54325    }
54326  }
54327
54328  protected void composeOrganizationQualificationComponentElements(Organization.OrganizationQualificationComponent element) throws IOException {
54329    composeBackboneElementElements(element);
54330    if (element.hasIdentifier()) { 
54331      for (Identifier e : element.getIdentifier()) 
54332          composeIdentifier("identifier", e);
54333    }
54334    if (element.hasCode()) {
54335      composeCodeableConcept("code", element.getCode());
54336    }
54337    if (element.hasPeriod()) {
54338      composePeriod("period", element.getPeriod());
54339    }
54340    if (element.hasIssuer()) {
54341      composeReference("issuer", element.getIssuer());
54342    }
54343  }
54344
54345  protected void composeOrganizationAffiliation(String name, OrganizationAffiliation element) throws IOException {
54346    if (element != null) {
54347    composeResourceAttributes(element);
54348      xml.enter(FHIR_NS, name);
54349      composeOrganizationAffiliationElements(element);
54350      composeElementClose(element);
54351      xml.exit(FHIR_NS, name);
54352    }
54353  }
54354
54355  protected void composeOrganizationAffiliationElements(OrganizationAffiliation element) throws IOException {
54356    composeDomainResourceElements(element);
54357    if (element.hasIdentifier()) { 
54358      for (Identifier e : element.getIdentifier()) 
54359          composeIdentifier("identifier", e);
54360    }
54361    if (element.hasActiveElement()) {
54362      composeBoolean("active", element.getActiveElement());
54363    }
54364    if (element.hasPeriod()) {
54365      composePeriod("period", element.getPeriod());
54366    }
54367    if (element.hasOrganization()) {
54368      composeReference("organization", element.getOrganization());
54369    }
54370    if (element.hasParticipatingOrganization()) {
54371      composeReference("participatingOrganization", element.getParticipatingOrganization());
54372    }
54373    if (element.hasNetwork()) { 
54374      for (Reference e : element.getNetwork()) 
54375          composeReference("network", e);
54376    }
54377    if (element.hasCode()) { 
54378      for (CodeableConcept e : element.getCode()) 
54379          composeCodeableConcept("code", e);
54380    }
54381    if (element.hasSpecialty()) { 
54382      for (CodeableConcept e : element.getSpecialty()) 
54383          composeCodeableConcept("specialty", e);
54384    }
54385    if (element.hasLocation()) { 
54386      for (Reference e : element.getLocation()) 
54387          composeReference("location", e);
54388    }
54389    if (element.hasHealthcareService()) { 
54390      for (Reference e : element.getHealthcareService()) 
54391          composeReference("healthcareService", e);
54392    }
54393    if (element.hasContact()) { 
54394      for (ExtendedContactDetail e : element.getContact()) 
54395          composeExtendedContactDetail("contact", e);
54396    }
54397    if (element.hasEndpoint()) { 
54398      for (Reference e : element.getEndpoint()) 
54399          composeReference("endpoint", e);
54400    }
54401  }
54402
54403  protected void composePackagedProductDefinition(String name, PackagedProductDefinition element) throws IOException {
54404    if (element != null) {
54405    composeResourceAttributes(element);
54406      xml.enter(FHIR_NS, name);
54407      composePackagedProductDefinitionElements(element);
54408      composeElementClose(element);
54409      xml.exit(FHIR_NS, name);
54410    }
54411  }
54412
54413  protected void composePackagedProductDefinitionElements(PackagedProductDefinition element) throws IOException {
54414    composeDomainResourceElements(element);
54415    if (element.hasIdentifier()) { 
54416      for (Identifier e : element.getIdentifier()) 
54417          composeIdentifier("identifier", e);
54418    }
54419    if (element.hasNameElement()) {
54420      composeString("name", element.getNameElement());
54421    }
54422    if (element.hasType()) {
54423      composeCodeableConcept("type", element.getType());
54424    }
54425    if (element.hasPackageFor()) { 
54426      for (Reference e : element.getPackageFor()) 
54427          composeReference("packageFor", e);
54428    }
54429    if (element.hasStatus()) {
54430      composeCodeableConcept("status", element.getStatus());
54431    }
54432    if (element.hasStatusDateElement()) {
54433      composeDateTime("statusDate", element.getStatusDateElement());
54434    }
54435    if (element.hasContainedItemQuantity()) { 
54436      for (Quantity e : element.getContainedItemQuantity()) 
54437          composeQuantity("containedItemQuantity", e);
54438    }
54439    if (element.hasDescriptionElement()) {
54440      composeMarkdown("description", element.getDescriptionElement());
54441    }
54442    if (element.hasLegalStatusOfSupply()) { 
54443      for (PackagedProductDefinition.PackagedProductDefinitionLegalStatusOfSupplyComponent e : element.getLegalStatusOfSupply()) 
54444          composePackagedProductDefinitionLegalStatusOfSupplyComponent("legalStatusOfSupply", e);
54445    }
54446    if (element.hasMarketingStatus()) { 
54447      for (MarketingStatus e : element.getMarketingStatus()) 
54448          composeMarketingStatus("marketingStatus", e);
54449    }
54450    if (element.hasCopackagedIndicatorElement()) {
54451      composeBoolean("copackagedIndicator", element.getCopackagedIndicatorElement());
54452    }
54453    if (element.hasManufacturer()) { 
54454      for (Reference e : element.getManufacturer()) 
54455          composeReference("manufacturer", e);
54456    }
54457    if (element.hasAttachedDocument()) { 
54458      for (Reference e : element.getAttachedDocument()) 
54459          composeReference("attachedDocument", e);
54460    }
54461    if (element.hasPackaging()) {
54462      composePackagedProductDefinitionPackagingComponent("packaging", element.getPackaging());
54463    }
54464    if (element.hasCharacteristic()) { 
54465      for (PackagedProductDefinition.PackagedProductDefinitionPackagingPropertyComponent e : element.getCharacteristic()) 
54466          composePackagedProductDefinitionPackagingPropertyComponent("characteristic", e);
54467    }
54468  }
54469
54470  protected void composePackagedProductDefinitionLegalStatusOfSupplyComponent(String name, PackagedProductDefinition.PackagedProductDefinitionLegalStatusOfSupplyComponent element) throws IOException {
54471    if (element != null) {
54472    composeElementAttributes(element);
54473      xml.enter(FHIR_NS, name);
54474      composePackagedProductDefinitionLegalStatusOfSupplyComponentElements(element);
54475      composeElementClose(element);
54476      xml.exit(FHIR_NS, name);
54477    }
54478  }
54479
54480  protected void composePackagedProductDefinitionLegalStatusOfSupplyComponentElements(PackagedProductDefinition.PackagedProductDefinitionLegalStatusOfSupplyComponent element) throws IOException {
54481    composeBackboneElementElements(element);
54482    if (element.hasCode()) {
54483      composeCodeableConcept("code", element.getCode());
54484    }
54485    if (element.hasJurisdiction()) {
54486      composeCodeableConcept("jurisdiction", element.getJurisdiction());
54487    }
54488  }
54489
54490  protected void composePackagedProductDefinitionPackagingComponent(String name, PackagedProductDefinition.PackagedProductDefinitionPackagingComponent element) throws IOException {
54491    if (element != null) {
54492    composeElementAttributes(element);
54493      xml.enter(FHIR_NS, name);
54494      composePackagedProductDefinitionPackagingComponentElements(element);
54495      composeElementClose(element);
54496      xml.exit(FHIR_NS, name);
54497    }
54498  }
54499
54500  protected void composePackagedProductDefinitionPackagingComponentElements(PackagedProductDefinition.PackagedProductDefinitionPackagingComponent element) throws IOException {
54501    composeBackboneElementElements(element);
54502    if (element.hasIdentifier()) { 
54503      for (Identifier e : element.getIdentifier()) 
54504          composeIdentifier("identifier", e);
54505    }
54506    if (element.hasType()) {
54507      composeCodeableConcept("type", element.getType());
54508    }
54509    if (element.hasComponentPartElement()) {
54510      composeBoolean("componentPart", element.getComponentPartElement());
54511    }
54512    if (element.hasQuantityElement()) {
54513      composeInteger("quantity", element.getQuantityElement());
54514    }
54515    if (element.hasMaterial()) { 
54516      for (CodeableConcept e : element.getMaterial()) 
54517          composeCodeableConcept("material", e);
54518    }
54519    if (element.hasAlternateMaterial()) { 
54520      for (CodeableConcept e : element.getAlternateMaterial()) 
54521          composeCodeableConcept("alternateMaterial", e);
54522    }
54523    if (element.hasShelfLifeStorage()) { 
54524      for (ProductShelfLife e : element.getShelfLifeStorage()) 
54525          composeProductShelfLife("shelfLifeStorage", e);
54526    }
54527    if (element.hasManufacturer()) { 
54528      for (Reference e : element.getManufacturer()) 
54529          composeReference("manufacturer", e);
54530    }
54531    if (element.hasProperty()) { 
54532      for (PackagedProductDefinition.PackagedProductDefinitionPackagingPropertyComponent e : element.getProperty()) 
54533          composePackagedProductDefinitionPackagingPropertyComponent("property", e);
54534    }
54535    if (element.hasContainedItem()) { 
54536      for (PackagedProductDefinition.PackagedProductDefinitionPackagingContainedItemComponent e : element.getContainedItem()) 
54537          composePackagedProductDefinitionPackagingContainedItemComponent("containedItem", e);
54538    }
54539    if (element.hasPackaging()) { 
54540      for (PackagedProductDefinition.PackagedProductDefinitionPackagingComponent e : element.getPackaging()) 
54541          composePackagedProductDefinitionPackagingComponent("packaging", e);
54542    }
54543  }
54544
54545  protected void composePackagedProductDefinitionPackagingPropertyComponent(String name, PackagedProductDefinition.PackagedProductDefinitionPackagingPropertyComponent element) throws IOException {
54546    if (element != null) {
54547    composeElementAttributes(element);
54548      xml.enter(FHIR_NS, name);
54549      composePackagedProductDefinitionPackagingPropertyComponentElements(element);
54550      composeElementClose(element);
54551      xml.exit(FHIR_NS, name);
54552    }
54553  }
54554
54555  protected void composePackagedProductDefinitionPackagingPropertyComponentElements(PackagedProductDefinition.PackagedProductDefinitionPackagingPropertyComponent element) throws IOException {
54556    composeBackboneElementElements(element);
54557    if (element.hasType()) {
54558      composeCodeableConcept("type", element.getType());
54559    }
54560    if (element.hasValue()) {
54561      composeType("value", element.getValue());
54562    }  }
54563
54564  protected void composePackagedProductDefinitionPackagingContainedItemComponent(String name, PackagedProductDefinition.PackagedProductDefinitionPackagingContainedItemComponent element) throws IOException {
54565    if (element != null) {
54566    composeElementAttributes(element);
54567      xml.enter(FHIR_NS, name);
54568      composePackagedProductDefinitionPackagingContainedItemComponentElements(element);
54569      composeElementClose(element);
54570      xml.exit(FHIR_NS, name);
54571    }
54572  }
54573
54574  protected void composePackagedProductDefinitionPackagingContainedItemComponentElements(PackagedProductDefinition.PackagedProductDefinitionPackagingContainedItemComponent element) throws IOException {
54575    composeBackboneElementElements(element);
54576    if (element.hasItem()) {
54577      composeCodeableReference("item", element.getItem());
54578    }
54579    if (element.hasAmount()) {
54580      composeQuantity("amount", element.getAmount());
54581    }
54582  }
54583
54584  protected void composeParameters(String name, Parameters element) throws IOException {
54585    if (element != null) {
54586    composeResourceAttributes(element);
54587      xml.enter(FHIR_NS, name);
54588      composeParametersElements(element);
54589      composeElementClose(element);
54590      xml.exit(FHIR_NS, name);
54591    }
54592  }
54593
54594  protected void composeParametersElements(Parameters element) throws IOException {
54595    composeResourceElements(element);
54596    if (element.hasParameter()) { 
54597      for (Parameters.ParametersParameterComponent e : element.getParameter()) 
54598          composeParametersParameterComponent("parameter", e);
54599    }
54600  }
54601
54602  protected void composeParametersParameterComponent(String name, Parameters.ParametersParameterComponent element) throws IOException {
54603    if (element != null) {
54604    composeElementAttributes(element);
54605      xml.enter(FHIR_NS, name);
54606      composeParametersParameterComponentElements(element);
54607      composeElementClose(element);
54608      xml.exit(FHIR_NS, name);
54609    }
54610  }
54611
54612  protected void composeParametersParameterComponentElements(Parameters.ParametersParameterComponent element) throws IOException {
54613    composeBackboneElementElements(element);
54614    if (element.hasNameElement()) {
54615      composeString("name", element.getNameElement());
54616    }
54617    if (element.hasValue()) {
54618      composeType("value", element.getValue());
54619    }    if (element.hasResource()) {
54620      xml.enter(FHIR_NS, "resource");
54621      composeResource(element.getResource());
54622      xml.exit(FHIR_NS, "resource");
54623    }
54624    if (element.hasPart()) { 
54625      for (Parameters.ParametersParameterComponent e : element.getPart()) 
54626          composeParametersParameterComponent("part", e);
54627    }
54628  }
54629
54630  protected void composePatient(String name, Patient element) throws IOException {
54631    if (element != null) {
54632    composeResourceAttributes(element);
54633      xml.enter(FHIR_NS, name);
54634      composePatientElements(element);
54635      composeElementClose(element);
54636      xml.exit(FHIR_NS, name);
54637    }
54638  }
54639
54640  protected void composePatientElements(Patient element) throws IOException {
54641    composeDomainResourceElements(element);
54642    if (element.hasIdentifier()) { 
54643      for (Identifier e : element.getIdentifier()) 
54644          composeIdentifier("identifier", e);
54645    }
54646    if (element.hasActiveElement()) {
54647      composeBoolean("active", element.getActiveElement());
54648    }
54649    if (element.hasName()) { 
54650      for (HumanName e : element.getName()) 
54651          composeHumanName("name", e);
54652    }
54653    if (element.hasTelecom()) { 
54654      for (ContactPoint e : element.getTelecom()) 
54655          composeContactPoint("telecom", e);
54656    }
54657    if (element.hasGenderElement())
54658      composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
54659    if (element.hasBirthDateElement()) {
54660      composeDate("birthDate", element.getBirthDateElement());
54661    }
54662    if (element.hasDeceased()) {
54663      composeType("deceased", element.getDeceased());
54664    }    if (element.hasAddress()) { 
54665      for (Address e : element.getAddress()) 
54666          composeAddress("address", e);
54667    }
54668    if (element.hasMaritalStatus()) {
54669      composeCodeableConcept("maritalStatus", element.getMaritalStatus());
54670    }
54671    if (element.hasMultipleBirth()) {
54672      composeType("multipleBirth", element.getMultipleBirth());
54673    }    if (element.hasPhoto()) { 
54674      for (Attachment e : element.getPhoto()) 
54675          composeAttachment("photo", e);
54676    }
54677    if (element.hasContact()) { 
54678      for (Patient.ContactComponent e : element.getContact()) 
54679          composePatientContactComponent("contact", e);
54680    }
54681    if (element.hasCommunication()) { 
54682      for (Patient.PatientCommunicationComponent e : element.getCommunication()) 
54683          composePatientCommunicationComponent("communication", e);
54684    }
54685    if (element.hasGeneralPractitioner()) { 
54686      for (Reference e : element.getGeneralPractitioner()) 
54687          composeReference("generalPractitioner", e);
54688    }
54689    if (element.hasManagingOrganization()) {
54690      composeReference("managingOrganization", element.getManagingOrganization());
54691    }
54692    if (element.hasLink()) { 
54693      for (Patient.PatientLinkComponent e : element.getLink()) 
54694          composePatientLinkComponent("link", e);
54695    }
54696  }
54697
54698  protected void composePatientContactComponent(String name, Patient.ContactComponent element) throws IOException {
54699    if (element != null) {
54700    composeElementAttributes(element);
54701      xml.enter(FHIR_NS, name);
54702      composePatientContactComponentElements(element);
54703      composeElementClose(element);
54704      xml.exit(FHIR_NS, name);
54705    }
54706  }
54707
54708  protected void composePatientContactComponentElements(Patient.ContactComponent element) throws IOException {
54709    composeBackboneElementElements(element);
54710    if (element.hasRelationship()) { 
54711      for (CodeableConcept e : element.getRelationship()) 
54712          composeCodeableConcept("relationship", e);
54713    }
54714    if (element.hasName()) {
54715      composeHumanName("name", element.getName());
54716    }
54717    if (element.hasTelecom()) { 
54718      for (ContactPoint e : element.getTelecom()) 
54719          composeContactPoint("telecom", e);
54720    }
54721    if (element.hasAddress()) {
54722      composeAddress("address", element.getAddress());
54723    }
54724    if (element.hasGenderElement())
54725      composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
54726    if (element.hasOrganization()) {
54727      composeReference("organization", element.getOrganization());
54728    }
54729    if (element.hasPeriod()) {
54730      composePeriod("period", element.getPeriod());
54731    }
54732  }
54733
54734  protected void composePatientCommunicationComponent(String name, Patient.PatientCommunicationComponent element) throws IOException {
54735    if (element != null) {
54736    composeElementAttributes(element);
54737      xml.enter(FHIR_NS, name);
54738      composePatientCommunicationComponentElements(element);
54739      composeElementClose(element);
54740      xml.exit(FHIR_NS, name);
54741    }
54742  }
54743
54744  protected void composePatientCommunicationComponentElements(Patient.PatientCommunicationComponent element) throws IOException {
54745    composeBackboneElementElements(element);
54746    if (element.hasLanguage()) {
54747      composeCodeableConcept("language", element.getLanguage());
54748    }
54749    if (element.hasPreferredElement()) {
54750      composeBoolean("preferred", element.getPreferredElement());
54751    }
54752  }
54753
54754  protected void composePatientLinkComponent(String name, Patient.PatientLinkComponent element) throws IOException {
54755    if (element != null) {
54756    composeElementAttributes(element);
54757      xml.enter(FHIR_NS, name);
54758      composePatientLinkComponentElements(element);
54759      composeElementClose(element);
54760      xml.exit(FHIR_NS, name);
54761    }
54762  }
54763
54764  protected void composePatientLinkComponentElements(Patient.PatientLinkComponent element) throws IOException {
54765    composeBackboneElementElements(element);
54766    if (element.hasOther()) {
54767      composeReference("other", element.getOther());
54768    }
54769    if (element.hasTypeElement())
54770      composeEnumeration("type", element.getTypeElement(), new Patient.LinkTypeEnumFactory());
54771  }
54772
54773  protected void composePaymentNotice(String name, PaymentNotice element) throws IOException {
54774    if (element != null) {
54775    composeResourceAttributes(element);
54776      xml.enter(FHIR_NS, name);
54777      composePaymentNoticeElements(element);
54778      composeElementClose(element);
54779      xml.exit(FHIR_NS, name);
54780    }
54781  }
54782
54783  protected void composePaymentNoticeElements(PaymentNotice element) throws IOException {
54784    composeDomainResourceElements(element);
54785    if (element.hasIdentifier()) { 
54786      for (Identifier e : element.getIdentifier()) 
54787          composeIdentifier("identifier", e);
54788    }
54789    if (element.hasStatusElement())
54790      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
54791    if (element.hasRequest()) {
54792      composeReference("request", element.getRequest());
54793    }
54794    if (element.hasResponse()) {
54795      composeReference("response", element.getResponse());
54796    }
54797    if (element.hasCreatedElement()) {
54798      composeDateTime("created", element.getCreatedElement());
54799    }
54800    if (element.hasReporter()) {
54801      composeReference("reporter", element.getReporter());
54802    }
54803    if (element.hasPayment()) {
54804      composeReference("payment", element.getPayment());
54805    }
54806    if (element.hasPaymentDateElement()) {
54807      composeDate("paymentDate", element.getPaymentDateElement());
54808    }
54809    if (element.hasPayee()) {
54810      composeReference("payee", element.getPayee());
54811    }
54812    if (element.hasRecipient()) {
54813      composeReference("recipient", element.getRecipient());
54814    }
54815    if (element.hasAmount()) {
54816      composeMoney("amount", element.getAmount());
54817    }
54818    if (element.hasPaymentStatus()) {
54819      composeCodeableConcept("paymentStatus", element.getPaymentStatus());
54820    }
54821  }
54822
54823  protected void composePaymentReconciliation(String name, PaymentReconciliation element) throws IOException {
54824    if (element != null) {
54825    composeResourceAttributes(element);
54826      xml.enter(FHIR_NS, name);
54827      composePaymentReconciliationElements(element);
54828      composeElementClose(element);
54829      xml.exit(FHIR_NS, name);
54830    }
54831  }
54832
54833  protected void composePaymentReconciliationElements(PaymentReconciliation element) throws IOException {
54834    composeDomainResourceElements(element);
54835    if (element.hasIdentifier()) { 
54836      for (Identifier e : element.getIdentifier()) 
54837          composeIdentifier("identifier", e);
54838    }
54839    if (element.hasType()) {
54840      composeCodeableConcept("type", element.getType());
54841    }
54842    if (element.hasStatusElement())
54843      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
54844    if (element.hasKind()) {
54845      composeCodeableConcept("kind", element.getKind());
54846    }
54847    if (element.hasPeriod()) {
54848      composePeriod("period", element.getPeriod());
54849    }
54850    if (element.hasCreatedElement()) {
54851      composeDateTime("created", element.getCreatedElement());
54852    }
54853    if (element.hasEnterer()) {
54854      composeReference("enterer", element.getEnterer());
54855    }
54856    if (element.hasIssuerType()) {
54857      composeCodeableConcept("issuerType", element.getIssuerType());
54858    }
54859    if (element.hasPaymentIssuer()) {
54860      composeReference("paymentIssuer", element.getPaymentIssuer());
54861    }
54862    if (element.hasRequest()) {
54863      composeReference("request", element.getRequest());
54864    }
54865    if (element.hasRequestor()) {
54866      composeReference("requestor", element.getRequestor());
54867    }
54868    if (element.hasOutcomeElement())
54869      composeEnumeration("outcome", element.getOutcomeElement(), new PaymentReconciliation.PaymentOutcomeEnumFactory());
54870    if (element.hasDispositionElement()) {
54871      composeString("disposition", element.getDispositionElement());
54872    }
54873    if (element.hasDateElement()) {
54874      composeDate("date", element.getDateElement());
54875    }
54876    if (element.hasLocation()) {
54877      composeReference("location", element.getLocation());
54878    }
54879    if (element.hasMethod()) {
54880      composeCodeableConcept("method", element.getMethod());
54881    }
54882    if (element.hasCardBrandElement()) {
54883      composeString("cardBrand", element.getCardBrandElement());
54884    }
54885    if (element.hasAccountNumberElement()) {
54886      composeString("accountNumber", element.getAccountNumberElement());
54887    }
54888    if (element.hasExpirationDateElement()) {
54889      composeDate("expirationDate", element.getExpirationDateElement());
54890    }
54891    if (element.hasProcessorElement()) {
54892      composeString("processor", element.getProcessorElement());
54893    }
54894    if (element.hasReferenceNumberElement()) {
54895      composeString("referenceNumber", element.getReferenceNumberElement());
54896    }
54897    if (element.hasAuthorizationElement()) {
54898      composeString("authorization", element.getAuthorizationElement());
54899    }
54900    if (element.hasTenderedAmount()) {
54901      composeMoney("tenderedAmount", element.getTenderedAmount());
54902    }
54903    if (element.hasReturnedAmount()) {
54904      composeMoney("returnedAmount", element.getReturnedAmount());
54905    }
54906    if (element.hasAmount()) {
54907      composeMoney("amount", element.getAmount());
54908    }
54909    if (element.hasPaymentIdentifier()) {
54910      composeIdentifier("paymentIdentifier", element.getPaymentIdentifier());
54911    }
54912    if (element.hasAllocation()) { 
54913      for (PaymentReconciliation.PaymentReconciliationAllocationComponent e : element.getAllocation()) 
54914          composePaymentReconciliationAllocationComponent("allocation", e);
54915    }
54916    if (element.hasFormCode()) {
54917      composeCodeableConcept("formCode", element.getFormCode());
54918    }
54919    if (element.hasProcessNote()) { 
54920      for (PaymentReconciliation.NotesComponent e : element.getProcessNote()) 
54921          composePaymentReconciliationNotesComponent("processNote", e);
54922    }
54923  }
54924
54925  protected void composePaymentReconciliationAllocationComponent(String name, PaymentReconciliation.PaymentReconciliationAllocationComponent element) throws IOException {
54926    if (element != null) {
54927    composeElementAttributes(element);
54928      xml.enter(FHIR_NS, name);
54929      composePaymentReconciliationAllocationComponentElements(element);
54930      composeElementClose(element);
54931      xml.exit(FHIR_NS, name);
54932    }
54933  }
54934
54935  protected void composePaymentReconciliationAllocationComponentElements(PaymentReconciliation.PaymentReconciliationAllocationComponent element) throws IOException {
54936    composeBackboneElementElements(element);
54937    if (element.hasIdentifier()) {
54938      composeIdentifier("identifier", element.getIdentifier());
54939    }
54940    if (element.hasPredecessor()) {
54941      composeIdentifier("predecessor", element.getPredecessor());
54942    }
54943    if (element.hasTarget()) {
54944      composeReference("target", element.getTarget());
54945    }
54946    if (element.hasTargetItem()) {
54947      composeType("targetItem", element.getTargetItem());
54948    }    if (element.hasEncounter()) {
54949      composeReference("encounter", element.getEncounter());
54950    }
54951    if (element.hasAccount()) {
54952      composeReference("account", element.getAccount());
54953    }
54954    if (element.hasType()) {
54955      composeCodeableConcept("type", element.getType());
54956    }
54957    if (element.hasSubmitter()) {
54958      composeReference("submitter", element.getSubmitter());
54959    }
54960    if (element.hasResponse()) {
54961      composeReference("response", element.getResponse());
54962    }
54963    if (element.hasDateElement()) {
54964      composeDate("date", element.getDateElement());
54965    }
54966    if (element.hasResponsible()) {
54967      composeReference("responsible", element.getResponsible());
54968    }
54969    if (element.hasPayee()) {
54970      composeReference("payee", element.getPayee());
54971    }
54972    if (element.hasAmount()) {
54973      composeMoney("amount", element.getAmount());
54974    }
54975  }
54976
54977  protected void composePaymentReconciliationNotesComponent(String name, PaymentReconciliation.NotesComponent element) throws IOException {
54978    if (element != null) {
54979    composeElementAttributes(element);
54980      xml.enter(FHIR_NS, name);
54981      composePaymentReconciliationNotesComponentElements(element);
54982      composeElementClose(element);
54983      xml.exit(FHIR_NS, name);
54984    }
54985  }
54986
54987  protected void composePaymentReconciliationNotesComponentElements(PaymentReconciliation.NotesComponent element) throws IOException {
54988    composeBackboneElementElements(element);
54989    if (element.hasTypeElement())
54990      composeEnumeration("type", element.getTypeElement(), new PaymentReconciliation.NoteTypeEnumFactory());
54991    if (element.hasTextElement()) {
54992      composeString("text", element.getTextElement());
54993    }
54994  }
54995
54996  protected void composePermission(String name, Permission element) throws IOException {
54997    if (element != null) {
54998    composeResourceAttributes(element);
54999      xml.enter(FHIR_NS, name);
55000      composePermissionElements(element);
55001      composeElementClose(element);
55002      xml.exit(FHIR_NS, name);
55003    }
55004  }
55005
55006  protected void composePermissionElements(Permission element) throws IOException {
55007    composeDomainResourceElements(element);
55008    if (element.hasStatusElement())
55009      composeEnumeration("status", element.getStatusElement(), new Permission.PermissionStatusEnumFactory());
55010    if (element.hasAsserter()) {
55011      composeReference("asserter", element.getAsserter());
55012    }
55013    if (element.hasDate()) { 
55014      for (DateTimeType e : element.getDate()) 
55015          composeDateTime("date", e);
55016    }
55017    if (element.hasValidity()) {
55018      composePeriod("validity", element.getValidity());
55019    }
55020    if (element.hasJustification()) {
55021      composePermissionJustificationComponent("justification", element.getJustification());
55022    }
55023    if (element.hasCombiningElement())
55024      composeEnumeration("combining", element.getCombiningElement(), new Permission.PermissionRuleCombiningEnumFactory());
55025    if (element.hasRule()) { 
55026      for (Permission.RuleComponent e : element.getRule()) 
55027          composePermissionRuleComponent("rule", e);
55028    }
55029  }
55030
55031  protected void composePermissionJustificationComponent(String name, Permission.PermissionJustificationComponent element) throws IOException {
55032    if (element != null) {
55033    composeElementAttributes(element);
55034      xml.enter(FHIR_NS, name);
55035      composePermissionJustificationComponentElements(element);
55036      composeElementClose(element);
55037      xml.exit(FHIR_NS, name);
55038    }
55039  }
55040
55041  protected void composePermissionJustificationComponentElements(Permission.PermissionJustificationComponent element) throws IOException {
55042    composeBackboneElementElements(element);
55043    if (element.hasBasis()) { 
55044      for (CodeableConcept e : element.getBasis()) 
55045          composeCodeableConcept("basis", e);
55046    }
55047    if (element.hasEvidence()) { 
55048      for (Reference e : element.getEvidence()) 
55049          composeReference("evidence", e);
55050    }
55051  }
55052
55053  protected void composePermissionRuleComponent(String name, Permission.RuleComponent element) throws IOException {
55054    if (element != null) {
55055    composeElementAttributes(element);
55056      xml.enter(FHIR_NS, name);
55057      composePermissionRuleComponentElements(element);
55058      composeElementClose(element);
55059      xml.exit(FHIR_NS, name);
55060    }
55061  }
55062
55063  protected void composePermissionRuleComponentElements(Permission.RuleComponent element) throws IOException {
55064    composeBackboneElementElements(element);
55065    if (element.hasTypeElement())
55066      composeEnumeration("type", element.getTypeElement(), new Enumerations.ConsentProvisionTypeEnumFactory());
55067    if (element.hasData()) { 
55068      for (Permission.RuleDataComponent e : element.getData()) 
55069          composePermissionRuleDataComponent("data", e);
55070    }
55071    if (element.hasActivity()) { 
55072      for (Permission.RuleActivityComponent e : element.getActivity()) 
55073          composePermissionRuleActivityComponent("activity", e);
55074    }
55075    if (element.hasLimit()) { 
55076      for (CodeableConcept e : element.getLimit()) 
55077          composeCodeableConcept("limit", e);
55078    }
55079  }
55080
55081  protected void composePermissionRuleDataComponent(String name, Permission.RuleDataComponent element) throws IOException {
55082    if (element != null) {
55083    composeElementAttributes(element);
55084      xml.enter(FHIR_NS, name);
55085      composePermissionRuleDataComponentElements(element);
55086      composeElementClose(element);
55087      xml.exit(FHIR_NS, name);
55088    }
55089  }
55090
55091  protected void composePermissionRuleDataComponentElements(Permission.RuleDataComponent element) throws IOException {
55092    composeBackboneElementElements(element);
55093    if (element.hasResource()) { 
55094      for (Permission.RuleDataResourceComponent e : element.getResource()) 
55095          composePermissionRuleDataResourceComponent("resource", e);
55096    }
55097    if (element.hasSecurity()) { 
55098      for (Coding e : element.getSecurity()) 
55099          composeCoding("security", e);
55100    }
55101    if (element.hasPeriod()) { 
55102      for (Period e : element.getPeriod()) 
55103          composePeriod("period", e);
55104    }
55105    if (element.hasExpression()) {
55106      composeExpression("expression", element.getExpression());
55107    }
55108  }
55109
55110  protected void composePermissionRuleDataResourceComponent(String name, Permission.RuleDataResourceComponent element) throws IOException {
55111    if (element != null) {
55112    composeElementAttributes(element);
55113      xml.enter(FHIR_NS, name);
55114      composePermissionRuleDataResourceComponentElements(element);
55115      composeElementClose(element);
55116      xml.exit(FHIR_NS, name);
55117    }
55118  }
55119
55120  protected void composePermissionRuleDataResourceComponentElements(Permission.RuleDataResourceComponent element) throws IOException {
55121    composeBackboneElementElements(element);
55122    if (element.hasMeaningElement())
55123      composeEnumeration("meaning", element.getMeaningElement(), new Enumerations.ConsentDataMeaningEnumFactory());
55124    if (element.hasReference()) {
55125      composeReference("reference", element.getReference());
55126    }
55127  }
55128
55129  protected void composePermissionRuleActivityComponent(String name, Permission.RuleActivityComponent element) throws IOException {
55130    if (element != null) {
55131    composeElementAttributes(element);
55132      xml.enter(FHIR_NS, name);
55133      composePermissionRuleActivityComponentElements(element);
55134      composeElementClose(element);
55135      xml.exit(FHIR_NS, name);
55136    }
55137  }
55138
55139  protected void composePermissionRuleActivityComponentElements(Permission.RuleActivityComponent element) throws IOException {
55140    composeBackboneElementElements(element);
55141    if (element.hasActor()) { 
55142      for (Reference e : element.getActor()) 
55143          composeReference("actor", e);
55144    }
55145    if (element.hasAction()) { 
55146      for (CodeableConcept e : element.getAction()) 
55147          composeCodeableConcept("action", e);
55148    }
55149    if (element.hasPurpose()) { 
55150      for (CodeableConcept e : element.getPurpose()) 
55151          composeCodeableConcept("purpose", e);
55152    }
55153  }
55154
55155  protected void composePerson(String name, Person element) throws IOException {
55156    if (element != null) {
55157    composeResourceAttributes(element);
55158      xml.enter(FHIR_NS, name);
55159      composePersonElements(element);
55160      composeElementClose(element);
55161      xml.exit(FHIR_NS, name);
55162    }
55163  }
55164
55165  protected void composePersonElements(Person element) throws IOException {
55166    composeDomainResourceElements(element);
55167    if (element.hasIdentifier()) { 
55168      for (Identifier e : element.getIdentifier()) 
55169          composeIdentifier("identifier", e);
55170    }
55171    if (element.hasActiveElement()) {
55172      composeBoolean("active", element.getActiveElement());
55173    }
55174    if (element.hasName()) { 
55175      for (HumanName e : element.getName()) 
55176          composeHumanName("name", e);
55177    }
55178    if (element.hasTelecom()) { 
55179      for (ContactPoint e : element.getTelecom()) 
55180          composeContactPoint("telecom", e);
55181    }
55182    if (element.hasGenderElement())
55183      composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
55184    if (element.hasBirthDateElement()) {
55185      composeDate("birthDate", element.getBirthDateElement());
55186    }
55187    if (element.hasDeceased()) {
55188      composeType("deceased", element.getDeceased());
55189    }    if (element.hasAddress()) { 
55190      for (Address e : element.getAddress()) 
55191          composeAddress("address", e);
55192    }
55193    if (element.hasMaritalStatus()) {
55194      composeCodeableConcept("maritalStatus", element.getMaritalStatus());
55195    }
55196    if (element.hasPhoto()) { 
55197      for (Attachment e : element.getPhoto()) 
55198          composeAttachment("photo", e);
55199    }
55200    if (element.hasCommunication()) { 
55201      for (Person.PersonCommunicationComponent e : element.getCommunication()) 
55202          composePersonCommunicationComponent("communication", e);
55203    }
55204    if (element.hasManagingOrganization()) {
55205      composeReference("managingOrganization", element.getManagingOrganization());
55206    }
55207    if (element.hasLink()) { 
55208      for (Person.PersonLinkComponent e : element.getLink()) 
55209          composePersonLinkComponent("link", e);
55210    }
55211  }
55212
55213  protected void composePersonCommunicationComponent(String name, Person.PersonCommunicationComponent element) throws IOException {
55214    if (element != null) {
55215    composeElementAttributes(element);
55216      xml.enter(FHIR_NS, name);
55217      composePersonCommunicationComponentElements(element);
55218      composeElementClose(element);
55219      xml.exit(FHIR_NS, name);
55220    }
55221  }
55222
55223  protected void composePersonCommunicationComponentElements(Person.PersonCommunicationComponent element) throws IOException {
55224    composeBackboneElementElements(element);
55225    if (element.hasLanguage()) {
55226      composeCodeableConcept("language", element.getLanguage());
55227    }
55228    if (element.hasPreferredElement()) {
55229      composeBoolean("preferred", element.getPreferredElement());
55230    }
55231  }
55232
55233  protected void composePersonLinkComponent(String name, Person.PersonLinkComponent element) throws IOException {
55234    if (element != null) {
55235    composeElementAttributes(element);
55236      xml.enter(FHIR_NS, name);
55237      composePersonLinkComponentElements(element);
55238      composeElementClose(element);
55239      xml.exit(FHIR_NS, name);
55240    }
55241  }
55242
55243  protected void composePersonLinkComponentElements(Person.PersonLinkComponent element) throws IOException {
55244    composeBackboneElementElements(element);
55245    if (element.hasTarget()) {
55246      composeReference("target", element.getTarget());
55247    }
55248    if (element.hasAssuranceElement())
55249      composeEnumeration("assurance", element.getAssuranceElement(), new Person.IdentityAssuranceLevelEnumFactory());
55250  }
55251
55252  protected void composePlanDefinition(String name, PlanDefinition element) throws IOException {
55253    if (element != null) {
55254    composeResourceAttributes(element);
55255      xml.enter(FHIR_NS, name);
55256      composePlanDefinitionElements(element);
55257      composeElementClose(element);
55258      xml.exit(FHIR_NS, name);
55259    }
55260  }
55261
55262  protected void composePlanDefinitionElements(PlanDefinition element) throws IOException {
55263    composeMetadataResourceElements(element);
55264    if (element.hasUrlElement()) {
55265      composeUri("url", element.getUrlElement());
55266    }
55267    if (element.hasIdentifier()) { 
55268      for (Identifier e : element.getIdentifier()) 
55269          composeIdentifier("identifier", e);
55270    }
55271    if (element.hasVersionElement()) {
55272      composeString("version", element.getVersionElement());
55273    }
55274    if (element.hasVersionAlgorithm()) {
55275      composeType("versionAlgorithm", element.getVersionAlgorithm());
55276    }    if (element.hasNameElement()) {
55277      composeString("name", element.getNameElement());
55278    }
55279    if (element.hasTitleElement()) {
55280      composeString("title", element.getTitleElement());
55281    }
55282    if (element.hasSubtitleElement()) {
55283      composeString("subtitle", element.getSubtitleElement());
55284    }
55285    if (element.hasType()) {
55286      composeCodeableConcept("type", element.getType());
55287    }
55288    if (element.hasStatusElement())
55289      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
55290    if (element.hasExperimentalElement()) {
55291      composeBoolean("experimental", element.getExperimentalElement());
55292    }
55293    if (element.hasSubject()) {
55294      composeType("subject", element.getSubject());
55295    }    if (element.hasDateElement()) {
55296      composeDateTime("date", element.getDateElement());
55297    }
55298    if (element.hasPublisherElement()) {
55299      composeString("publisher", element.getPublisherElement());
55300    }
55301    if (element.hasContact()) { 
55302      for (ContactDetail e : element.getContact()) 
55303          composeContactDetail("contact", e);
55304    }
55305    if (element.hasDescriptionElement()) {
55306      composeMarkdown("description", element.getDescriptionElement());
55307    }
55308    if (element.hasUseContext()) { 
55309      for (UsageContext e : element.getUseContext()) 
55310          composeUsageContext("useContext", e);
55311    }
55312    if (element.hasJurisdiction()) { 
55313      for (CodeableConcept e : element.getJurisdiction()) 
55314          composeCodeableConcept("jurisdiction", e);
55315    }
55316    if (element.hasPurposeElement()) {
55317      composeMarkdown("purpose", element.getPurposeElement());
55318    }
55319    if (element.hasUsageElement()) {
55320      composeMarkdown("usage", element.getUsageElement());
55321    }
55322    if (element.hasCopyrightElement()) {
55323      composeMarkdown("copyright", element.getCopyrightElement());
55324    }
55325    if (element.hasCopyrightLabelElement()) {
55326      composeString("copyrightLabel", element.getCopyrightLabelElement());
55327    }
55328    if (element.hasApprovalDateElement()) {
55329      composeDate("approvalDate", element.getApprovalDateElement());
55330    }
55331    if (element.hasLastReviewDateElement()) {
55332      composeDate("lastReviewDate", element.getLastReviewDateElement());
55333    }
55334    if (element.hasEffectivePeriod()) {
55335      composePeriod("effectivePeriod", element.getEffectivePeriod());
55336    }
55337    if (element.hasTopic()) { 
55338      for (CodeableConcept e : element.getTopic()) 
55339          composeCodeableConcept("topic", e);
55340    }
55341    if (element.hasAuthor()) { 
55342      for (ContactDetail e : element.getAuthor()) 
55343          composeContactDetail("author", e);
55344    }
55345    if (element.hasEditor()) { 
55346      for (ContactDetail e : element.getEditor()) 
55347          composeContactDetail("editor", e);
55348    }
55349    if (element.hasReviewer()) { 
55350      for (ContactDetail e : element.getReviewer()) 
55351          composeContactDetail("reviewer", e);
55352    }
55353    if (element.hasEndorser()) { 
55354      for (ContactDetail e : element.getEndorser()) 
55355          composeContactDetail("endorser", e);
55356    }
55357    if (element.hasRelatedArtifact()) { 
55358      for (RelatedArtifact e : element.getRelatedArtifact()) 
55359          composeRelatedArtifact("relatedArtifact", e);
55360    }
55361    if (element.hasLibrary()) { 
55362      for (CanonicalType e : element.getLibrary()) 
55363          composeCanonical("library", e);
55364    }
55365    if (element.hasGoal()) { 
55366      for (PlanDefinition.PlanDefinitionGoalComponent e : element.getGoal()) 
55367          composePlanDefinitionGoalComponent("goal", e);
55368    }
55369    if (element.hasActor()) { 
55370      for (PlanDefinition.PlanDefinitionActorComponent e : element.getActor()) 
55371          composePlanDefinitionActorComponent("actor", e);
55372    }
55373    if (element.hasAction()) { 
55374      for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
55375          composePlanDefinitionActionComponent("action", e);
55376    }
55377    if (element.hasAsNeeded()) {
55378      composeType("asNeeded", element.getAsNeeded());
55379    }  }
55380
55381  protected void composePlanDefinitionGoalComponent(String name, PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
55382    if (element != null) {
55383    composeElementAttributes(element);
55384      xml.enter(FHIR_NS, name);
55385      composePlanDefinitionGoalComponentElements(element);
55386      composeElementClose(element);
55387      xml.exit(FHIR_NS, name);
55388    }
55389  }
55390
55391  protected void composePlanDefinitionGoalComponentElements(PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
55392    composeBackboneElementElements(element);
55393    if (element.hasCategory()) {
55394      composeCodeableConcept("category", element.getCategory());
55395    }
55396    if (element.hasDescription()) {
55397      composeCodeableConcept("description", element.getDescription());
55398    }
55399    if (element.hasPriority()) {
55400      composeCodeableConcept("priority", element.getPriority());
55401    }
55402    if (element.hasStart()) {
55403      composeCodeableConcept("start", element.getStart());
55404    }
55405    if (element.hasAddresses()) { 
55406      for (CodeableConcept e : element.getAddresses()) 
55407          composeCodeableConcept("addresses", e);
55408    }
55409    if (element.hasDocumentation()) { 
55410      for (RelatedArtifact e : element.getDocumentation()) 
55411          composeRelatedArtifact("documentation", e);
55412    }
55413    if (element.hasTarget()) { 
55414      for (PlanDefinition.PlanDefinitionGoalTargetComponent e : element.getTarget()) 
55415          composePlanDefinitionGoalTargetComponent("target", e);
55416    }
55417  }
55418
55419  protected void composePlanDefinitionGoalTargetComponent(String name, PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
55420    if (element != null) {
55421    composeElementAttributes(element);
55422      xml.enter(FHIR_NS, name);
55423      composePlanDefinitionGoalTargetComponentElements(element);
55424      composeElementClose(element);
55425      xml.exit(FHIR_NS, name);
55426    }
55427  }
55428
55429  protected void composePlanDefinitionGoalTargetComponentElements(PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
55430    composeBackboneElementElements(element);
55431    if (element.hasMeasure()) {
55432      composeCodeableConcept("measure", element.getMeasure());
55433    }
55434    if (element.hasDetail()) {
55435      composeType("detail", element.getDetail());
55436    }    if (element.hasDue()) {
55437      composeDuration("due", element.getDue());
55438    }
55439  }
55440
55441  protected void composePlanDefinitionActorComponent(String name, PlanDefinition.PlanDefinitionActorComponent element) throws IOException {
55442    if (element != null) {
55443    composeElementAttributes(element);
55444      xml.enter(FHIR_NS, name);
55445      composePlanDefinitionActorComponentElements(element);
55446      composeElementClose(element);
55447      xml.exit(FHIR_NS, name);
55448    }
55449  }
55450
55451  protected void composePlanDefinitionActorComponentElements(PlanDefinition.PlanDefinitionActorComponent element) throws IOException {
55452    composeBackboneElementElements(element);
55453    if (element.hasTitleElement()) {
55454      composeString("title", element.getTitleElement());
55455    }
55456    if (element.hasDescriptionElement()) {
55457      composeMarkdown("description", element.getDescriptionElement());
55458    }
55459    if (element.hasOption()) { 
55460      for (PlanDefinition.PlanDefinitionActorOptionComponent e : element.getOption()) 
55461          composePlanDefinitionActorOptionComponent("option", e);
55462    }
55463  }
55464
55465  protected void composePlanDefinitionActorOptionComponent(String name, PlanDefinition.PlanDefinitionActorOptionComponent element) throws IOException {
55466    if (element != null) {
55467    composeElementAttributes(element);
55468      xml.enter(FHIR_NS, name);
55469      composePlanDefinitionActorOptionComponentElements(element);
55470      composeElementClose(element);
55471      xml.exit(FHIR_NS, name);
55472    }
55473  }
55474
55475  protected void composePlanDefinitionActorOptionComponentElements(PlanDefinition.PlanDefinitionActorOptionComponent element) throws IOException {
55476    composeBackboneElementElements(element);
55477    if (element.hasTypeElement())
55478      composeEnumeration("type", element.getTypeElement(), new Enumerations.ActionParticipantTypeEnumFactory());
55479    if (element.hasTypeCanonicalElement()) {
55480      composeCanonical("typeCanonical", element.getTypeCanonicalElement());
55481    }
55482    if (element.hasTypeReference()) {
55483      composeReference("typeReference", element.getTypeReference());
55484    }
55485    if (element.hasRole()) {
55486      composeCodeableConcept("role", element.getRole());
55487    }
55488  }
55489
55490  protected void composePlanDefinitionActionComponent(String name, PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
55491    if (element != null) {
55492    composeElementAttributes(element);
55493      xml.enter(FHIR_NS, name);
55494      composePlanDefinitionActionComponentElements(element);
55495      composeElementClose(element);
55496      xml.exit(FHIR_NS, name);
55497    }
55498  }
55499
55500  protected void composePlanDefinitionActionComponentElements(PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
55501    composeBackboneElementElements(element);
55502    if (element.hasLinkIdElement()) {
55503      composeString("linkId", element.getLinkIdElement());
55504    }
55505    if (element.hasPrefixElement()) {
55506      composeString("prefix", element.getPrefixElement());
55507    }
55508    if (element.hasTitleElement()) {
55509      composeString("title", element.getTitleElement());
55510    }
55511    if (element.hasDescriptionElement()) {
55512      composeMarkdown("description", element.getDescriptionElement());
55513    }
55514    if (element.hasTextEquivalentElement()) {
55515      composeMarkdown("textEquivalent", element.getTextEquivalentElement());
55516    }
55517    if (element.hasPriorityElement())
55518      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
55519    if (element.hasCode()) {
55520      composeCodeableConcept("code", element.getCode());
55521    }
55522    if (element.hasReason()) { 
55523      for (CodeableConcept e : element.getReason()) 
55524          composeCodeableConcept("reason", e);
55525    }
55526    if (element.hasDocumentation()) { 
55527      for (RelatedArtifact e : element.getDocumentation()) 
55528          composeRelatedArtifact("documentation", e);
55529    }
55530    if (element.hasGoalId()) { 
55531      for (IdType e : element.getGoalId()) 
55532          composeId("goalId", e);
55533    }
55534    if (element.hasSubject()) {
55535      composeType("subject", element.getSubject());
55536    }    if (element.hasTrigger()) { 
55537      for (TriggerDefinition e : element.getTrigger()) 
55538          composeTriggerDefinition("trigger", e);
55539    }
55540    if (element.hasCondition()) { 
55541      for (PlanDefinition.PlanDefinitionActionConditionComponent e : element.getCondition()) 
55542          composePlanDefinitionActionConditionComponent("condition", e);
55543    }
55544    if (element.hasInput()) { 
55545      for (PlanDefinition.PlanDefinitionActionInputComponent e : element.getInput()) 
55546          composePlanDefinitionActionInputComponent("input", e);
55547    }
55548    if (element.hasOutput()) { 
55549      for (PlanDefinition.PlanDefinitionActionOutputComponent e : element.getOutput()) 
55550          composePlanDefinitionActionOutputComponent("output", e);
55551    }
55552    if (element.hasRelatedAction()) { 
55553      for (PlanDefinition.PlanDefinitionActionRelatedActionComponent e : element.getRelatedAction()) 
55554          composePlanDefinitionActionRelatedActionComponent("relatedAction", e);
55555    }
55556    if (element.hasTiming()) {
55557      composeType("timing", element.getTiming());
55558    }    if (element.hasLocation()) {
55559      composeCodeableReference("location", element.getLocation());
55560    }
55561    if (element.hasParticipant()) { 
55562      for (PlanDefinition.PlanDefinitionActionParticipantComponent e : element.getParticipant()) 
55563          composePlanDefinitionActionParticipantComponent("participant", e);
55564    }
55565    if (element.hasType()) {
55566      composeCodeableConcept("type", element.getType());
55567    }
55568    if (element.hasGroupingBehaviorElement())
55569      composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new Enumerations.ActionGroupingBehaviorEnumFactory());
55570    if (element.hasSelectionBehaviorElement())
55571      composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new Enumerations.ActionSelectionBehaviorEnumFactory());
55572    if (element.hasRequiredBehaviorElement())
55573      composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new Enumerations.ActionRequiredBehaviorEnumFactory());
55574    if (element.hasPrecheckBehaviorElement())
55575      composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new Enumerations.ActionPrecheckBehaviorEnumFactory());
55576    if (element.hasCardinalityBehaviorElement())
55577      composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new Enumerations.ActionCardinalityBehaviorEnumFactory());
55578    if (element.hasDefinition()) {
55579      composeType("definition", element.getDefinition());
55580    }    if (element.hasTransformElement()) {
55581      composeCanonical("transform", element.getTransformElement());
55582    }
55583    if (element.hasDynamicValue()) { 
55584      for (PlanDefinition.PlanDefinitionActionDynamicValueComponent e : element.getDynamicValue()) 
55585          composePlanDefinitionActionDynamicValueComponent("dynamicValue", e);
55586    }
55587    if (element.hasAction()) { 
55588      for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
55589          composePlanDefinitionActionComponent("action", e);
55590    }
55591  }
55592
55593  protected void composePlanDefinitionActionConditionComponent(String name, PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
55594    if (element != null) {
55595    composeElementAttributes(element);
55596      xml.enter(FHIR_NS, name);
55597      composePlanDefinitionActionConditionComponentElements(element);
55598      composeElementClose(element);
55599      xml.exit(FHIR_NS, name);
55600    }
55601  }
55602
55603  protected void composePlanDefinitionActionConditionComponentElements(PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
55604    composeBackboneElementElements(element);
55605    if (element.hasKindElement())
55606      composeEnumeration("kind", element.getKindElement(), new Enumerations.ActionConditionKindEnumFactory());
55607    if (element.hasExpression()) {
55608      composeExpression("expression", element.getExpression());
55609    }
55610  }
55611
55612  protected void composePlanDefinitionActionInputComponent(String name, PlanDefinition.PlanDefinitionActionInputComponent element) throws IOException {
55613    if (element != null) {
55614    composeElementAttributes(element);
55615      xml.enter(FHIR_NS, name);
55616      composePlanDefinitionActionInputComponentElements(element);
55617      composeElementClose(element);
55618      xml.exit(FHIR_NS, name);
55619    }
55620  }
55621
55622  protected void composePlanDefinitionActionInputComponentElements(PlanDefinition.PlanDefinitionActionInputComponent element) throws IOException {
55623    composeBackboneElementElements(element);
55624    if (element.hasTitleElement()) {
55625      composeString("title", element.getTitleElement());
55626    }
55627    if (element.hasRequirement()) {
55628      composeDataRequirement("requirement", element.getRequirement());
55629    }
55630    if (element.hasRelatedDataElement()) {
55631      composeId("relatedData", element.getRelatedDataElement());
55632    }
55633  }
55634
55635  protected void composePlanDefinitionActionOutputComponent(String name, PlanDefinition.PlanDefinitionActionOutputComponent element) throws IOException {
55636    if (element != null) {
55637    composeElementAttributes(element);
55638      xml.enter(FHIR_NS, name);
55639      composePlanDefinitionActionOutputComponentElements(element);
55640      composeElementClose(element);
55641      xml.exit(FHIR_NS, name);
55642    }
55643  }
55644
55645  protected void composePlanDefinitionActionOutputComponentElements(PlanDefinition.PlanDefinitionActionOutputComponent element) throws IOException {
55646    composeBackboneElementElements(element);
55647    if (element.hasTitleElement()) {
55648      composeString("title", element.getTitleElement());
55649    }
55650    if (element.hasRequirement()) {
55651      composeDataRequirement("requirement", element.getRequirement());
55652    }
55653    if (element.hasRelatedDataElement()) {
55654      composeString("relatedData", element.getRelatedDataElement());
55655    }
55656  }
55657
55658  protected void composePlanDefinitionActionRelatedActionComponent(String name, PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
55659    if (element != null) {
55660    composeElementAttributes(element);
55661      xml.enter(FHIR_NS, name);
55662      composePlanDefinitionActionRelatedActionComponentElements(element);
55663      composeElementClose(element);
55664      xml.exit(FHIR_NS, name);
55665    }
55666  }
55667
55668  protected void composePlanDefinitionActionRelatedActionComponentElements(PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
55669    composeBackboneElementElements(element);
55670    if (element.hasTargetIdElement()) {
55671      composeId("targetId", element.getTargetIdElement());
55672    }
55673    if (element.hasRelationshipElement())
55674      composeEnumeration("relationship", element.getRelationshipElement(), new Enumerations.ActionRelationshipTypeEnumFactory());
55675    if (element.hasEndRelationshipElement())
55676      composeEnumeration("endRelationship", element.getEndRelationshipElement(), new Enumerations.ActionRelationshipTypeEnumFactory());
55677    if (element.hasOffset()) {
55678      composeType("offset", element.getOffset());
55679    }  }
55680
55681  protected void composePlanDefinitionActionParticipantComponent(String name, PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
55682    if (element != null) {
55683    composeElementAttributes(element);
55684      xml.enter(FHIR_NS, name);
55685      composePlanDefinitionActionParticipantComponentElements(element);
55686      composeElementClose(element);
55687      xml.exit(FHIR_NS, name);
55688    }
55689  }
55690
55691  protected void composePlanDefinitionActionParticipantComponentElements(PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
55692    composeBackboneElementElements(element);
55693    if (element.hasActorIdElement()) {
55694      composeString("actorId", element.getActorIdElement());
55695    }
55696    if (element.hasTypeElement())
55697      composeEnumeration("type", element.getTypeElement(), new Enumerations.ActionParticipantTypeEnumFactory());
55698    if (element.hasTypeCanonicalElement()) {
55699      composeCanonical("typeCanonical", element.getTypeCanonicalElement());
55700    }
55701    if (element.hasTypeReference()) {
55702      composeReference("typeReference", element.getTypeReference());
55703    }
55704    if (element.hasRole()) {
55705      composeCodeableConcept("role", element.getRole());
55706    }
55707    if (element.hasFunction()) {
55708      composeCodeableConcept("function", element.getFunction());
55709    }
55710  }
55711
55712  protected void composePlanDefinitionActionDynamicValueComponent(String name, PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
55713    if (element != null) {
55714    composeElementAttributes(element);
55715      xml.enter(FHIR_NS, name);
55716      composePlanDefinitionActionDynamicValueComponentElements(element);
55717      composeElementClose(element);
55718      xml.exit(FHIR_NS, name);
55719    }
55720  }
55721
55722  protected void composePlanDefinitionActionDynamicValueComponentElements(PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
55723    composeBackboneElementElements(element);
55724    if (element.hasPathElement()) {
55725      composeString("path", element.getPathElement());
55726    }
55727    if (element.hasExpression()) {
55728      composeExpression("expression", element.getExpression());
55729    }
55730  }
55731
55732  protected void composePractitioner(String name, Practitioner element) throws IOException {
55733    if (element != null) {
55734    composeResourceAttributes(element);
55735      xml.enter(FHIR_NS, name);
55736      composePractitionerElements(element);
55737      composeElementClose(element);
55738      xml.exit(FHIR_NS, name);
55739    }
55740  }
55741
55742  protected void composePractitionerElements(Practitioner element) throws IOException {
55743    composeDomainResourceElements(element);
55744    if (element.hasIdentifier()) { 
55745      for (Identifier e : element.getIdentifier()) 
55746          composeIdentifier("identifier", e);
55747    }
55748    if (element.hasActiveElement()) {
55749      composeBoolean("active", element.getActiveElement());
55750    }
55751    if (element.hasName()) { 
55752      for (HumanName e : element.getName()) 
55753          composeHumanName("name", e);
55754    }
55755    if (element.hasTelecom()) { 
55756      for (ContactPoint e : element.getTelecom()) 
55757          composeContactPoint("telecom", e);
55758    }
55759    if (element.hasGenderElement())
55760      composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
55761    if (element.hasBirthDateElement()) {
55762      composeDate("birthDate", element.getBirthDateElement());
55763    }
55764    if (element.hasDeceased()) {
55765      composeType("deceased", element.getDeceased());
55766    }    if (element.hasAddress()) { 
55767      for (Address e : element.getAddress()) 
55768          composeAddress("address", e);
55769    }
55770    if (element.hasPhoto()) { 
55771      for (Attachment e : element.getPhoto()) 
55772          composeAttachment("photo", e);
55773    }
55774    if (element.hasQualification()) { 
55775      for (Practitioner.PractitionerQualificationComponent e : element.getQualification()) 
55776          composePractitionerQualificationComponent("qualification", e);
55777    }
55778    if (element.hasCommunication()) { 
55779      for (Practitioner.PractitionerCommunicationComponent e : element.getCommunication()) 
55780          composePractitionerCommunicationComponent("communication", e);
55781    }
55782  }
55783
55784  protected void composePractitionerQualificationComponent(String name, Practitioner.PractitionerQualificationComponent element) throws IOException {
55785    if (element != null) {
55786    composeElementAttributes(element);
55787      xml.enter(FHIR_NS, name);
55788      composePractitionerQualificationComponentElements(element);
55789      composeElementClose(element);
55790      xml.exit(FHIR_NS, name);
55791    }
55792  }
55793
55794  protected void composePractitionerQualificationComponentElements(Practitioner.PractitionerQualificationComponent element) throws IOException {
55795    composeBackboneElementElements(element);
55796    if (element.hasIdentifier()) { 
55797      for (Identifier e : element.getIdentifier()) 
55798          composeIdentifier("identifier", e);
55799    }
55800    if (element.hasCode()) {
55801      composeCodeableConcept("code", element.getCode());
55802    }
55803    if (element.hasPeriod()) {
55804      composePeriod("period", element.getPeriod());
55805    }
55806    if (element.hasIssuer()) {
55807      composeReference("issuer", element.getIssuer());
55808    }
55809  }
55810
55811  protected void composePractitionerCommunicationComponent(String name, Practitioner.PractitionerCommunicationComponent element) throws IOException {
55812    if (element != null) {
55813    composeElementAttributes(element);
55814      xml.enter(FHIR_NS, name);
55815      composePractitionerCommunicationComponentElements(element);
55816      composeElementClose(element);
55817      xml.exit(FHIR_NS, name);
55818    }
55819  }
55820
55821  protected void composePractitionerCommunicationComponentElements(Practitioner.PractitionerCommunicationComponent element) throws IOException {
55822    composeBackboneElementElements(element);
55823    if (element.hasLanguage()) {
55824      composeCodeableConcept("language", element.getLanguage());
55825    }
55826    if (element.hasPreferredElement()) {
55827      composeBoolean("preferred", element.getPreferredElement());
55828    }
55829  }
55830
55831  protected void composePractitionerRole(String name, PractitionerRole element) throws IOException {
55832    if (element != null) {
55833    composeResourceAttributes(element);
55834      xml.enter(FHIR_NS, name);
55835      composePractitionerRoleElements(element);
55836      composeElementClose(element);
55837      xml.exit(FHIR_NS, name);
55838    }
55839  }
55840
55841  protected void composePractitionerRoleElements(PractitionerRole element) throws IOException {
55842    composeDomainResourceElements(element);
55843    if (element.hasIdentifier()) { 
55844      for (Identifier e : element.getIdentifier()) 
55845          composeIdentifier("identifier", e);
55846    }
55847    if (element.hasActiveElement()) {
55848      composeBoolean("active", element.getActiveElement());
55849    }
55850    if (element.hasPeriod()) {
55851      composePeriod("period", element.getPeriod());
55852    }
55853    if (element.hasPractitioner()) {
55854      composeReference("practitioner", element.getPractitioner());
55855    }
55856    if (element.hasOrganization()) {
55857      composeReference("organization", element.getOrganization());
55858    }
55859    if (element.hasCode()) { 
55860      for (CodeableConcept e : element.getCode()) 
55861          composeCodeableConcept("code", e);
55862    }
55863    if (element.hasSpecialty()) { 
55864      for (CodeableConcept e : element.getSpecialty()) 
55865          composeCodeableConcept("specialty", e);
55866    }
55867    if (element.hasLocation()) { 
55868      for (Reference e : element.getLocation()) 
55869          composeReference("location", e);
55870    }
55871    if (element.hasHealthcareService()) { 
55872      for (Reference e : element.getHealthcareService()) 
55873          composeReference("healthcareService", e);
55874    }
55875    if (element.hasContact()) { 
55876      for (ExtendedContactDetail e : element.getContact()) 
55877          composeExtendedContactDetail("contact", e);
55878    }
55879    if (element.hasCharacteristic()) { 
55880      for (CodeableConcept e : element.getCharacteristic()) 
55881          composeCodeableConcept("characteristic", e);
55882    }
55883    if (element.hasCommunication()) { 
55884      for (CodeableConcept e : element.getCommunication()) 
55885          composeCodeableConcept("communication", e);
55886    }
55887    if (element.hasAvailability()) { 
55888      for (Availability e : element.getAvailability()) 
55889          composeAvailability("availability", e);
55890    }
55891    if (element.hasEndpoint()) { 
55892      for (Reference e : element.getEndpoint()) 
55893          composeReference("endpoint", e);
55894    }
55895  }
55896
55897  protected void composeProcedure(String name, Procedure element) throws IOException {
55898    if (element != null) {
55899    composeResourceAttributes(element);
55900      xml.enter(FHIR_NS, name);
55901      composeProcedureElements(element);
55902      composeElementClose(element);
55903      xml.exit(FHIR_NS, name);
55904    }
55905  }
55906
55907  protected void composeProcedureElements(Procedure element) throws IOException {
55908    composeDomainResourceElements(element);
55909    if (element.hasIdentifier()) { 
55910      for (Identifier e : element.getIdentifier()) 
55911          composeIdentifier("identifier", e);
55912    }
55913    if (element.hasInstantiatesCanonical()) { 
55914      for (CanonicalType e : element.getInstantiatesCanonical()) 
55915          composeCanonical("instantiatesCanonical", e);
55916    }
55917    if (element.hasInstantiatesUri()) { 
55918      for (UriType e : element.getInstantiatesUri()) 
55919          composeUri("instantiatesUri", e);
55920    }
55921    if (element.hasBasedOn()) { 
55922      for (Reference e : element.getBasedOn()) 
55923          composeReference("basedOn", e);
55924    }
55925    if (element.hasPartOf()) { 
55926      for (Reference e : element.getPartOf()) 
55927          composeReference("partOf", e);
55928    }
55929    if (element.hasStatusElement())
55930      composeEnumeration("status", element.getStatusElement(), new Enumerations.EventStatusEnumFactory());
55931    if (element.hasStatusReason()) {
55932      composeCodeableConcept("statusReason", element.getStatusReason());
55933    }
55934    if (element.hasCategory()) { 
55935      for (CodeableConcept e : element.getCategory()) 
55936          composeCodeableConcept("category", e);
55937    }
55938    if (element.hasCode()) {
55939      composeCodeableConcept("code", element.getCode());
55940    }
55941    if (element.hasSubject()) {
55942      composeReference("subject", element.getSubject());
55943    }
55944    if (element.hasFocus()) {
55945      composeReference("focus", element.getFocus());
55946    }
55947    if (element.hasEncounter()) {
55948      composeReference("encounter", element.getEncounter());
55949    }
55950    if (element.hasOccurrence()) {
55951      composeType("occurrence", element.getOccurrence());
55952    }    if (element.hasRecordedElement()) {
55953      composeDateTime("recorded", element.getRecordedElement());
55954    }
55955    if (element.hasRecorder()) {
55956      composeReference("recorder", element.getRecorder());
55957    }
55958    if (element.hasReported()) {
55959      composeType("reported", element.getReported());
55960    }    if (element.hasPerformer()) { 
55961      for (Procedure.ProcedurePerformerComponent e : element.getPerformer()) 
55962          composeProcedurePerformerComponent("performer", e);
55963    }
55964    if (element.hasLocation()) {
55965      composeReference("location", element.getLocation());
55966    }
55967    if (element.hasReason()) { 
55968      for (CodeableReference e : element.getReason()) 
55969          composeCodeableReference("reason", e);
55970    }
55971    if (element.hasBodySite()) { 
55972      for (CodeableConcept e : element.getBodySite()) 
55973          composeCodeableConcept("bodySite", e);
55974    }
55975    if (element.hasOutcome()) {
55976      composeCodeableConcept("outcome", element.getOutcome());
55977    }
55978    if (element.hasReport()) { 
55979      for (Reference e : element.getReport()) 
55980          composeReference("report", e);
55981    }
55982    if (element.hasComplication()) { 
55983      for (CodeableReference e : element.getComplication()) 
55984          composeCodeableReference("complication", e);
55985    }
55986    if (element.hasFollowUp()) { 
55987      for (CodeableConcept e : element.getFollowUp()) 
55988          composeCodeableConcept("followUp", e);
55989    }
55990    if (element.hasNote()) { 
55991      for (Annotation e : element.getNote()) 
55992          composeAnnotation("note", e);
55993    }
55994    if (element.hasFocalDevice()) { 
55995      for (Procedure.ProcedureFocalDeviceComponent e : element.getFocalDevice()) 
55996          composeProcedureFocalDeviceComponent("focalDevice", e);
55997    }
55998    if (element.hasUsed()) { 
55999      for (CodeableReference e : element.getUsed()) 
56000          composeCodeableReference("used", e);
56001    }
56002    if (element.hasSupportingInfo()) { 
56003      for (Reference e : element.getSupportingInfo()) 
56004          composeReference("supportingInfo", e);
56005    }
56006  }
56007
56008  protected void composeProcedurePerformerComponent(String name, Procedure.ProcedurePerformerComponent element) throws IOException {
56009    if (element != null) {
56010    composeElementAttributes(element);
56011      xml.enter(FHIR_NS, name);
56012      composeProcedurePerformerComponentElements(element);
56013      composeElementClose(element);
56014      xml.exit(FHIR_NS, name);
56015    }
56016  }
56017
56018  protected void composeProcedurePerformerComponentElements(Procedure.ProcedurePerformerComponent element) throws IOException {
56019    composeBackboneElementElements(element);
56020    if (element.hasFunction()) {
56021      composeCodeableConcept("function", element.getFunction());
56022    }
56023    if (element.hasActor()) {
56024      composeReference("actor", element.getActor());
56025    }
56026    if (element.hasOnBehalfOf()) {
56027      composeReference("onBehalfOf", element.getOnBehalfOf());
56028    }
56029    if (element.hasPeriod()) {
56030      composePeriod("period", element.getPeriod());
56031    }
56032  }
56033
56034  protected void composeProcedureFocalDeviceComponent(String name, Procedure.ProcedureFocalDeviceComponent element) throws IOException {
56035    if (element != null) {
56036    composeElementAttributes(element);
56037      xml.enter(FHIR_NS, name);
56038      composeProcedureFocalDeviceComponentElements(element);
56039      composeElementClose(element);
56040      xml.exit(FHIR_NS, name);
56041    }
56042  }
56043
56044  protected void composeProcedureFocalDeviceComponentElements(Procedure.ProcedureFocalDeviceComponent element) throws IOException {
56045    composeBackboneElementElements(element);
56046    if (element.hasAction()) {
56047      composeCodeableConcept("action", element.getAction());
56048    }
56049    if (element.hasManipulated()) {
56050      composeReference("manipulated", element.getManipulated());
56051    }
56052  }
56053
56054  protected void composeProvenance(String name, Provenance element) throws IOException {
56055    if (element != null) {
56056    composeResourceAttributes(element);
56057      xml.enter(FHIR_NS, name);
56058      composeProvenanceElements(element);
56059      composeElementClose(element);
56060      xml.exit(FHIR_NS, name);
56061    }
56062  }
56063
56064  protected void composeProvenanceElements(Provenance element) throws IOException {
56065    composeDomainResourceElements(element);
56066    if (element.hasTarget()) { 
56067      for (Reference e : element.getTarget()) 
56068          composeReference("target", e);
56069    }
56070    if (element.hasOccurred()) {
56071      composeType("occurred", element.getOccurred());
56072    }    if (element.hasRecordedElement()) {
56073      composeInstant("recorded", element.getRecordedElement());
56074    }
56075    if (element.hasPolicy()) { 
56076      for (UriType e : element.getPolicy()) 
56077          composeUri("policy", e);
56078    }
56079    if (element.hasLocation()) {
56080      composeReference("location", element.getLocation());
56081    }
56082    if (element.hasAuthorization()) { 
56083      for (CodeableReference e : element.getAuthorization()) 
56084          composeCodeableReference("authorization", e);
56085    }
56086    if (element.hasActivity()) {
56087      composeCodeableConcept("activity", element.getActivity());
56088    }
56089    if (element.hasBasedOn()) { 
56090      for (Reference e : element.getBasedOn()) 
56091          composeReference("basedOn", e);
56092    }
56093    if (element.hasPatient()) {
56094      composeReference("patient", element.getPatient());
56095    }
56096    if (element.hasEncounter()) {
56097      composeReference("encounter", element.getEncounter());
56098    }
56099    if (element.hasAgent()) { 
56100      for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
56101          composeProvenanceAgentComponent("agent", e);
56102    }
56103    if (element.hasEntity()) { 
56104      for (Provenance.ProvenanceEntityComponent e : element.getEntity()) 
56105          composeProvenanceEntityComponent("entity", e);
56106    }
56107    if (element.hasSignature()) { 
56108      for (Signature e : element.getSignature()) 
56109          composeSignature("signature", e);
56110    }
56111  }
56112
56113  protected void composeProvenanceAgentComponent(String name, Provenance.ProvenanceAgentComponent element) throws IOException {
56114    if (element != null) {
56115    composeElementAttributes(element);
56116      xml.enter(FHIR_NS, name);
56117      composeProvenanceAgentComponentElements(element);
56118      composeElementClose(element);
56119      xml.exit(FHIR_NS, name);
56120    }
56121  }
56122
56123  protected void composeProvenanceAgentComponentElements(Provenance.ProvenanceAgentComponent element) throws IOException {
56124    composeBackboneElementElements(element);
56125    if (element.hasType()) {
56126      composeCodeableConcept("type", element.getType());
56127    }
56128    if (element.hasRole()) { 
56129      for (CodeableConcept e : element.getRole()) 
56130          composeCodeableConcept("role", e);
56131    }
56132    if (element.hasWho()) {
56133      composeReference("who", element.getWho());
56134    }
56135    if (element.hasOnBehalfOf()) {
56136      composeReference("onBehalfOf", element.getOnBehalfOf());
56137    }
56138  }
56139
56140  protected void composeProvenanceEntityComponent(String name, Provenance.ProvenanceEntityComponent element) throws IOException {
56141    if (element != null) {
56142    composeElementAttributes(element);
56143      xml.enter(FHIR_NS, name);
56144      composeProvenanceEntityComponentElements(element);
56145      composeElementClose(element);
56146      xml.exit(FHIR_NS, name);
56147    }
56148  }
56149
56150  protected void composeProvenanceEntityComponentElements(Provenance.ProvenanceEntityComponent element) throws IOException {
56151    composeBackboneElementElements(element);
56152    if (element.hasRoleElement())
56153      composeEnumeration("role", element.getRoleElement(), new Provenance.ProvenanceEntityRoleEnumFactory());
56154    if (element.hasWhat()) {
56155      composeReference("what", element.getWhat());
56156    }
56157    if (element.hasAgent()) { 
56158      for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
56159          composeProvenanceAgentComponent("agent", e);
56160    }
56161  }
56162
56163  protected void composeQuestionnaire(String name, Questionnaire element) throws IOException {
56164    if (element != null) {
56165    composeResourceAttributes(element);
56166      xml.enter(FHIR_NS, name);
56167      composeQuestionnaireElements(element);
56168      composeElementClose(element);
56169      xml.exit(FHIR_NS, name);
56170    }
56171  }
56172
56173  protected void composeQuestionnaireElements(Questionnaire element) throws IOException {
56174    composeMetadataResourceElements(element);
56175    if (element.hasUrlElement()) {
56176      composeUri("url", element.getUrlElement());
56177    }
56178    if (element.hasIdentifier()) { 
56179      for (Identifier e : element.getIdentifier()) 
56180          composeIdentifier("identifier", e);
56181    }
56182    if (element.hasVersionElement()) {
56183      composeString("version", element.getVersionElement());
56184    }
56185    if (element.hasVersionAlgorithm()) {
56186      composeType("versionAlgorithm", element.getVersionAlgorithm());
56187    }    if (element.hasNameElement()) {
56188      composeString("name", element.getNameElement());
56189    }
56190    if (element.hasTitleElement()) {
56191      composeString("title", element.getTitleElement());
56192    }
56193    if (element.hasDerivedFrom()) { 
56194      for (CanonicalType e : element.getDerivedFrom()) 
56195          composeCanonical("derivedFrom", e);
56196    }
56197    if (element.hasStatusElement())
56198      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
56199    if (element.hasExperimentalElement()) {
56200      composeBoolean("experimental", element.getExperimentalElement());
56201    }
56202    if (element.hasSubjectType()) { 
56203      for (CodeType e : element.getSubjectType()) 
56204          composeCode("subjectType", e);
56205    }
56206    if (element.hasDateElement()) {
56207      composeDateTime("date", element.getDateElement());
56208    }
56209    if (element.hasPublisherElement()) {
56210      composeString("publisher", element.getPublisherElement());
56211    }
56212    if (element.hasContact()) { 
56213      for (ContactDetail e : element.getContact()) 
56214          composeContactDetail("contact", e);
56215    }
56216    if (element.hasDescriptionElement()) {
56217      composeMarkdown("description", element.getDescriptionElement());
56218    }
56219    if (element.hasUseContext()) { 
56220      for (UsageContext e : element.getUseContext()) 
56221          composeUsageContext("useContext", e);
56222    }
56223    if (element.hasJurisdiction()) { 
56224      for (CodeableConcept e : element.getJurisdiction()) 
56225          composeCodeableConcept("jurisdiction", e);
56226    }
56227    if (element.hasPurposeElement()) {
56228      composeMarkdown("purpose", element.getPurposeElement());
56229    }
56230    if (element.hasCopyrightElement()) {
56231      composeMarkdown("copyright", element.getCopyrightElement());
56232    }
56233    if (element.hasCopyrightLabelElement()) {
56234      composeString("copyrightLabel", element.getCopyrightLabelElement());
56235    }
56236    if (element.hasApprovalDateElement()) {
56237      composeDate("approvalDate", element.getApprovalDateElement());
56238    }
56239    if (element.hasLastReviewDateElement()) {
56240      composeDate("lastReviewDate", element.getLastReviewDateElement());
56241    }
56242    if (element.hasEffectivePeriod()) {
56243      composePeriod("effectivePeriod", element.getEffectivePeriod());
56244    }
56245    if (element.hasCode()) { 
56246      for (Coding e : element.getCode()) 
56247          composeCoding("code", e);
56248    }
56249    if (element.hasItem()) { 
56250      for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
56251          composeQuestionnaireItemComponent("item", e);
56252    }
56253  }
56254
56255  protected void composeQuestionnaireItemComponent(String name, Questionnaire.QuestionnaireItemComponent element) throws IOException {
56256    if (element != null) {
56257    composeElementAttributes(element);
56258      xml.enter(FHIR_NS, name);
56259      composeQuestionnaireItemComponentElements(element);
56260      composeElementClose(element);
56261      xml.exit(FHIR_NS, name);
56262    }
56263  }
56264
56265  protected void composeQuestionnaireItemComponentElements(Questionnaire.QuestionnaireItemComponent element) throws IOException {
56266    composeBackboneElementElements(element);
56267    if (element.hasLinkIdElement()) {
56268      composeString("linkId", element.getLinkIdElement());
56269    }
56270    if (element.hasDefinitionElement()) {
56271      composeUri("definition", element.getDefinitionElement());
56272    }
56273    if (element.hasCode()) { 
56274      for (Coding e : element.getCode()) 
56275          composeCoding("code", e);
56276    }
56277    if (element.hasPrefixElement()) {
56278      composeString("prefix", element.getPrefixElement());
56279    }
56280    if (element.hasTextElement()) {
56281      composeString("text", element.getTextElement());
56282    }
56283    if (element.hasTypeElement())
56284      composeEnumeration("type", element.getTypeElement(), new Questionnaire.QuestionnaireItemTypeEnumFactory());
56285    if (element.hasEnableWhen()) { 
56286      for (Questionnaire.QuestionnaireItemEnableWhenComponent e : element.getEnableWhen()) 
56287          composeQuestionnaireItemEnableWhenComponent("enableWhen", e);
56288    }
56289    if (element.hasEnableBehaviorElement())
56290      composeEnumeration("enableBehavior", element.getEnableBehaviorElement(), new Questionnaire.EnableWhenBehaviorEnumFactory());
56291    if (element.hasDisabledDisplayElement())
56292      composeEnumeration("disabledDisplay", element.getDisabledDisplayElement(), new Questionnaire.QuestionnaireItemDisabledDisplayEnumFactory());
56293    if (element.hasRequiredElement()) {
56294      composeBoolean("required", element.getRequiredElement());
56295    }
56296    if (element.hasRepeatsElement()) {
56297      composeBoolean("repeats", element.getRepeatsElement());
56298    }
56299    if (element.hasReadOnlyElement()) {
56300      composeBoolean("readOnly", element.getReadOnlyElement());
56301    }
56302    if (element.hasMaxLengthElement()) {
56303      composeInteger("maxLength", element.getMaxLengthElement());
56304    }
56305    if (element.hasAnswerConstraintElement())
56306      composeEnumeration("answerConstraint", element.getAnswerConstraintElement(), new Questionnaire.QuestionnaireAnswerConstraintEnumFactory());
56307    if (element.hasAnswerValueSetElement()) {
56308      composeCanonical("answerValueSet", element.getAnswerValueSetElement());
56309    }
56310    if (element.hasAnswerOption()) { 
56311      for (Questionnaire.QuestionnaireItemAnswerOptionComponent e : element.getAnswerOption()) 
56312          composeQuestionnaireItemAnswerOptionComponent("answerOption", e);
56313    }
56314    if (element.hasInitial()) { 
56315      for (Questionnaire.QuestionnaireItemInitialComponent e : element.getInitial()) 
56316          composeQuestionnaireItemInitialComponent("initial", e);
56317    }
56318    if (element.hasItem()) { 
56319      for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
56320          composeQuestionnaireItemComponent("item", e);
56321    }
56322  }
56323
56324  protected void composeQuestionnaireItemEnableWhenComponent(String name, Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
56325    if (element != null) {
56326    composeElementAttributes(element);
56327      xml.enter(FHIR_NS, name);
56328      composeQuestionnaireItemEnableWhenComponentElements(element);
56329      composeElementClose(element);
56330      xml.exit(FHIR_NS, name);
56331    }
56332  }
56333
56334  protected void composeQuestionnaireItemEnableWhenComponentElements(Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
56335    composeBackboneElementElements(element);
56336    if (element.hasQuestionElement()) {
56337      composeString("question", element.getQuestionElement());
56338    }
56339    if (element.hasOperatorElement())
56340      composeEnumeration("operator", element.getOperatorElement(), new Questionnaire.QuestionnaireItemOperatorEnumFactory());
56341    if (element.hasAnswer()) {
56342      composeType("answer", element.getAnswer());
56343    }  }
56344
56345  protected void composeQuestionnaireItemAnswerOptionComponent(String name, Questionnaire.QuestionnaireItemAnswerOptionComponent element) throws IOException {
56346    if (element != null) {
56347    composeElementAttributes(element);
56348      xml.enter(FHIR_NS, name);
56349      composeQuestionnaireItemAnswerOptionComponentElements(element);
56350      composeElementClose(element);
56351      xml.exit(FHIR_NS, name);
56352    }
56353  }
56354
56355  protected void composeQuestionnaireItemAnswerOptionComponentElements(Questionnaire.QuestionnaireItemAnswerOptionComponent element) throws IOException {
56356    composeBackboneElementElements(element);
56357    if (element.hasValue()) {
56358      composeType("value", element.getValue());
56359    }    if (element.hasInitialSelectedElement()) {
56360      composeBoolean("initialSelected", element.getInitialSelectedElement());
56361    }
56362  }
56363
56364  protected void composeQuestionnaireItemInitialComponent(String name, Questionnaire.QuestionnaireItemInitialComponent element) throws IOException {
56365    if (element != null) {
56366    composeElementAttributes(element);
56367      xml.enter(FHIR_NS, name);
56368      composeQuestionnaireItemInitialComponentElements(element);
56369      composeElementClose(element);
56370      xml.exit(FHIR_NS, name);
56371    }
56372  }
56373
56374  protected void composeQuestionnaireItemInitialComponentElements(Questionnaire.QuestionnaireItemInitialComponent element) throws IOException {
56375    composeBackboneElementElements(element);
56376    if (element.hasValue()) {
56377      composeType("value", element.getValue());
56378    }  }
56379
56380  protected void composeQuestionnaireResponse(String name, QuestionnaireResponse element) throws IOException {
56381    if (element != null) {
56382    composeResourceAttributes(element);
56383      xml.enter(FHIR_NS, name);
56384      composeQuestionnaireResponseElements(element);
56385      composeElementClose(element);
56386      xml.exit(FHIR_NS, name);
56387    }
56388  }
56389
56390  protected void composeQuestionnaireResponseElements(QuestionnaireResponse element) throws IOException {
56391    composeDomainResourceElements(element);
56392    if (element.hasIdentifier()) { 
56393      for (Identifier e : element.getIdentifier()) 
56394          composeIdentifier("identifier", e);
56395    }
56396    if (element.hasBasedOn()) { 
56397      for (Reference e : element.getBasedOn()) 
56398          composeReference("basedOn", e);
56399    }
56400    if (element.hasPartOf()) { 
56401      for (Reference e : element.getPartOf()) 
56402          composeReference("partOf", e);
56403    }
56404    if (element.hasQuestionnaireElement()) {
56405      composeCanonical("questionnaire", element.getQuestionnaireElement());
56406    }
56407    if (element.hasStatusElement())
56408      composeEnumeration("status", element.getStatusElement(), new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory());
56409    if (element.hasSubject()) {
56410      composeReference("subject", element.getSubject());
56411    }
56412    if (element.hasEncounter()) {
56413      composeReference("encounter", element.getEncounter());
56414    }
56415    if (element.hasAuthoredElement()) {
56416      composeDateTime("authored", element.getAuthoredElement());
56417    }
56418    if (element.hasAuthor()) {
56419      composeReference("author", element.getAuthor());
56420    }
56421    if (element.hasSource()) {
56422      composeReference("source", element.getSource());
56423    }
56424    if (element.hasItem()) { 
56425      for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
56426          composeQuestionnaireResponseItemComponent("item", e);
56427    }
56428  }
56429
56430  protected void composeQuestionnaireResponseItemComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
56431    if (element != null) {
56432    composeElementAttributes(element);
56433      xml.enter(FHIR_NS, name);
56434      composeQuestionnaireResponseItemComponentElements(element);
56435      composeElementClose(element);
56436      xml.exit(FHIR_NS, name);
56437    }
56438  }
56439
56440  protected void composeQuestionnaireResponseItemComponentElements(QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
56441    composeBackboneElementElements(element);
56442    if (element.hasLinkIdElement()) {
56443      composeString("linkId", element.getLinkIdElement());
56444    }
56445    if (element.hasDefinitionElement()) {
56446      composeUri("definition", element.getDefinitionElement());
56447    }
56448    if (element.hasTextElement()) {
56449      composeString("text", element.getTextElement());
56450    }
56451    if (element.hasAnswer()) { 
56452      for (QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent e : element.getAnswer()) 
56453          composeQuestionnaireResponseItemAnswerComponent("answer", e);
56454    }
56455    if (element.hasItem()) { 
56456      for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
56457          composeQuestionnaireResponseItemComponent("item", e);
56458    }
56459  }
56460
56461  protected void composeQuestionnaireResponseItemAnswerComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
56462    if (element != null) {
56463    composeElementAttributes(element);
56464      xml.enter(FHIR_NS, name);
56465      composeQuestionnaireResponseItemAnswerComponentElements(element);
56466      composeElementClose(element);
56467      xml.exit(FHIR_NS, name);
56468    }
56469  }
56470
56471  protected void composeQuestionnaireResponseItemAnswerComponentElements(QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
56472    composeBackboneElementElements(element);
56473    if (element.hasValue()) {
56474      composeType("value", element.getValue());
56475    }    if (element.hasItem()) { 
56476      for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
56477          composeQuestionnaireResponseItemComponent("item", e);
56478    }
56479  }
56480
56481  protected void composeRegulatedAuthorization(String name, RegulatedAuthorization element) throws IOException {
56482    if (element != null) {
56483    composeResourceAttributes(element);
56484      xml.enter(FHIR_NS, name);
56485      composeRegulatedAuthorizationElements(element);
56486      composeElementClose(element);
56487      xml.exit(FHIR_NS, name);
56488    }
56489  }
56490
56491  protected void composeRegulatedAuthorizationElements(RegulatedAuthorization element) throws IOException {
56492    composeDomainResourceElements(element);
56493    if (element.hasIdentifier()) { 
56494      for (Identifier e : element.getIdentifier()) 
56495          composeIdentifier("identifier", e);
56496    }
56497    if (element.hasSubject()) { 
56498      for (Reference e : element.getSubject()) 
56499          composeReference("subject", e);
56500    }
56501    if (element.hasType()) {
56502      composeCodeableConcept("type", element.getType());
56503    }
56504    if (element.hasDescriptionElement()) {
56505      composeMarkdown("description", element.getDescriptionElement());
56506    }
56507    if (element.hasRegion()) { 
56508      for (CodeableConcept e : element.getRegion()) 
56509          composeCodeableConcept("region", e);
56510    }
56511    if (element.hasStatus()) {
56512      composeCodeableConcept("status", element.getStatus());
56513    }
56514    if (element.hasStatusDateElement()) {
56515      composeDateTime("statusDate", element.getStatusDateElement());
56516    }
56517    if (element.hasValidityPeriod()) {
56518      composePeriod("validityPeriod", element.getValidityPeriod());
56519    }
56520    if (element.hasIndication()) { 
56521      for (CodeableReference e : element.getIndication()) 
56522          composeCodeableReference("indication", e);
56523    }
56524    if (element.hasIntendedUse()) {
56525      composeCodeableConcept("intendedUse", element.getIntendedUse());
56526    }
56527    if (element.hasBasis()) { 
56528      for (CodeableConcept e : element.getBasis()) 
56529          composeCodeableConcept("basis", e);
56530    }
56531    if (element.hasHolder()) {
56532      composeReference("holder", element.getHolder());
56533    }
56534    if (element.hasRegulator()) {
56535      composeReference("regulator", element.getRegulator());
56536    }
56537    if (element.hasAttachedDocument()) { 
56538      for (Reference e : element.getAttachedDocument()) 
56539          composeReference("attachedDocument", e);
56540    }
56541    if (element.hasCase()) {
56542      composeRegulatedAuthorizationCaseComponent("case", element.getCase());
56543    }
56544  }
56545
56546  protected void composeRegulatedAuthorizationCaseComponent(String name, RegulatedAuthorization.RegulatedAuthorizationCaseComponent element) throws IOException {
56547    if (element != null) {
56548    composeElementAttributes(element);
56549      xml.enter(FHIR_NS, name);
56550      composeRegulatedAuthorizationCaseComponentElements(element);
56551      composeElementClose(element);
56552      xml.exit(FHIR_NS, name);
56553    }
56554  }
56555
56556  protected void composeRegulatedAuthorizationCaseComponentElements(RegulatedAuthorization.RegulatedAuthorizationCaseComponent element) throws IOException {
56557    composeBackboneElementElements(element);
56558    if (element.hasIdentifier()) {
56559      composeIdentifier("identifier", element.getIdentifier());
56560    }
56561    if (element.hasType()) {
56562      composeCodeableConcept("type", element.getType());
56563    }
56564    if (element.hasStatus()) {
56565      composeCodeableConcept("status", element.getStatus());
56566    }
56567    if (element.hasDate()) {
56568      composeType("date", element.getDate());
56569    }    if (element.hasApplication()) { 
56570      for (RegulatedAuthorization.RegulatedAuthorizationCaseComponent e : element.getApplication()) 
56571          composeRegulatedAuthorizationCaseComponent("application", e);
56572    }
56573  }
56574
56575  protected void composeRelatedPerson(String name, RelatedPerson element) throws IOException {
56576    if (element != null) {
56577    composeResourceAttributes(element);
56578      xml.enter(FHIR_NS, name);
56579      composeRelatedPersonElements(element);
56580      composeElementClose(element);
56581      xml.exit(FHIR_NS, name);
56582    }
56583  }
56584
56585  protected void composeRelatedPersonElements(RelatedPerson element) throws IOException {
56586    composeDomainResourceElements(element);
56587    if (element.hasIdentifier()) { 
56588      for (Identifier e : element.getIdentifier()) 
56589          composeIdentifier("identifier", e);
56590    }
56591    if (element.hasActiveElement()) {
56592      composeBoolean("active", element.getActiveElement());
56593    }
56594    if (element.hasPatient()) {
56595      composeReference("patient", element.getPatient());
56596    }
56597    if (element.hasRelationship()) { 
56598      for (CodeableConcept e : element.getRelationship()) 
56599          composeCodeableConcept("relationship", e);
56600    }
56601    if (element.hasName()) { 
56602      for (HumanName e : element.getName()) 
56603          composeHumanName("name", e);
56604    }
56605    if (element.hasTelecom()) { 
56606      for (ContactPoint e : element.getTelecom()) 
56607          composeContactPoint("telecom", e);
56608    }
56609    if (element.hasGenderElement())
56610      composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
56611    if (element.hasBirthDateElement()) {
56612      composeDate("birthDate", element.getBirthDateElement());
56613    }
56614    if (element.hasAddress()) { 
56615      for (Address e : element.getAddress()) 
56616          composeAddress("address", e);
56617    }
56618    if (element.hasPhoto()) { 
56619      for (Attachment e : element.getPhoto()) 
56620          composeAttachment("photo", e);
56621    }
56622    if (element.hasPeriod()) {
56623      composePeriod("period", element.getPeriod());
56624    }
56625    if (element.hasCommunication()) { 
56626      for (RelatedPerson.RelatedPersonCommunicationComponent e : element.getCommunication()) 
56627          composeRelatedPersonCommunicationComponent("communication", e);
56628    }
56629  }
56630
56631  protected void composeRelatedPersonCommunicationComponent(String name, RelatedPerson.RelatedPersonCommunicationComponent element) throws IOException {
56632    if (element != null) {
56633    composeElementAttributes(element);
56634      xml.enter(FHIR_NS, name);
56635      composeRelatedPersonCommunicationComponentElements(element);
56636      composeElementClose(element);
56637      xml.exit(FHIR_NS, name);
56638    }
56639  }
56640
56641  protected void composeRelatedPersonCommunicationComponentElements(RelatedPerson.RelatedPersonCommunicationComponent element) throws IOException {
56642    composeBackboneElementElements(element);
56643    if (element.hasLanguage()) {
56644      composeCodeableConcept("language", element.getLanguage());
56645    }
56646    if (element.hasPreferredElement()) {
56647      composeBoolean("preferred", element.getPreferredElement());
56648    }
56649  }
56650
56651  protected void composeRequestOrchestration(String name, RequestOrchestration element) throws IOException {
56652    if (element != null) {
56653    composeResourceAttributes(element);
56654      xml.enter(FHIR_NS, name);
56655      composeRequestOrchestrationElements(element);
56656      composeElementClose(element);
56657      xml.exit(FHIR_NS, name);
56658    }
56659  }
56660
56661  protected void composeRequestOrchestrationElements(RequestOrchestration element) throws IOException {
56662    composeDomainResourceElements(element);
56663    if (element.hasIdentifier()) { 
56664      for (Identifier e : element.getIdentifier()) 
56665          composeIdentifier("identifier", e);
56666    }
56667    if (element.hasInstantiatesCanonical()) { 
56668      for (CanonicalType e : element.getInstantiatesCanonical()) 
56669          composeCanonical("instantiatesCanonical", e);
56670    }
56671    if (element.hasInstantiatesUri()) { 
56672      for (UriType e : element.getInstantiatesUri()) 
56673          composeUri("instantiatesUri", e);
56674    }
56675    if (element.hasBasedOn()) { 
56676      for (Reference e : element.getBasedOn()) 
56677          composeReference("basedOn", e);
56678    }
56679    if (element.hasReplaces()) { 
56680      for (Reference e : element.getReplaces()) 
56681          composeReference("replaces", e);
56682    }
56683    if (element.hasGroupIdentifier()) {
56684      composeIdentifier("groupIdentifier", element.getGroupIdentifier());
56685    }
56686    if (element.hasStatusElement())
56687      composeEnumeration("status", element.getStatusElement(), new Enumerations.RequestStatusEnumFactory());
56688    if (element.hasIntentElement())
56689      composeEnumeration("intent", element.getIntentElement(), new Enumerations.RequestIntentEnumFactory());
56690    if (element.hasPriorityElement())
56691      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
56692    if (element.hasCode()) {
56693      composeCodeableConcept("code", element.getCode());
56694    }
56695    if (element.hasSubject()) {
56696      composeReference("subject", element.getSubject());
56697    }
56698    if (element.hasEncounter()) {
56699      composeReference("encounter", element.getEncounter());
56700    }
56701    if (element.hasAuthoredOnElement()) {
56702      composeDateTime("authoredOn", element.getAuthoredOnElement());
56703    }
56704    if (element.hasAuthor()) {
56705      composeReference("author", element.getAuthor());
56706    }
56707    if (element.hasReason()) { 
56708      for (CodeableReference e : element.getReason()) 
56709          composeCodeableReference("reason", e);
56710    }
56711    if (element.hasGoal()) { 
56712      for (Reference e : element.getGoal()) 
56713          composeReference("goal", e);
56714    }
56715    if (element.hasNote()) { 
56716      for (Annotation e : element.getNote()) 
56717          composeAnnotation("note", e);
56718    }
56719    if (element.hasAction()) { 
56720      for (RequestOrchestration.RequestOrchestrationActionComponent e : element.getAction()) 
56721          composeRequestOrchestrationActionComponent("action", e);
56722    }
56723  }
56724
56725  protected void composeRequestOrchestrationActionComponent(String name, RequestOrchestration.RequestOrchestrationActionComponent element) throws IOException {
56726    if (element != null) {
56727    composeElementAttributes(element);
56728      xml.enter(FHIR_NS, name);
56729      composeRequestOrchestrationActionComponentElements(element);
56730      composeElementClose(element);
56731      xml.exit(FHIR_NS, name);
56732    }
56733  }
56734
56735  protected void composeRequestOrchestrationActionComponentElements(RequestOrchestration.RequestOrchestrationActionComponent element) throws IOException {
56736    composeBackboneElementElements(element);
56737    if (element.hasLinkIdElement()) {
56738      composeString("linkId", element.getLinkIdElement());
56739    }
56740    if (element.hasPrefixElement()) {
56741      composeString("prefix", element.getPrefixElement());
56742    }
56743    if (element.hasTitleElement()) {
56744      composeString("title", element.getTitleElement());
56745    }
56746    if (element.hasDescriptionElement()) {
56747      composeMarkdown("description", element.getDescriptionElement());
56748    }
56749    if (element.hasTextEquivalentElement()) {
56750      composeMarkdown("textEquivalent", element.getTextEquivalentElement());
56751    }
56752    if (element.hasPriorityElement())
56753      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
56754    if (element.hasCode()) { 
56755      for (CodeableConcept e : element.getCode()) 
56756          composeCodeableConcept("code", e);
56757    }
56758    if (element.hasDocumentation()) { 
56759      for (RelatedArtifact e : element.getDocumentation()) 
56760          composeRelatedArtifact("documentation", e);
56761    }
56762    if (element.hasGoal()) { 
56763      for (Reference e : element.getGoal()) 
56764          composeReference("goal", e);
56765    }
56766    if (element.hasCondition()) { 
56767      for (RequestOrchestration.RequestOrchestrationActionConditionComponent e : element.getCondition()) 
56768          composeRequestOrchestrationActionConditionComponent("condition", e);
56769    }
56770    if (element.hasInput()) { 
56771      for (RequestOrchestration.RequestOrchestrationActionInputComponent e : element.getInput()) 
56772          composeRequestOrchestrationActionInputComponent("input", e);
56773    }
56774    if (element.hasOutput()) { 
56775      for (RequestOrchestration.RequestOrchestrationActionOutputComponent e : element.getOutput()) 
56776          composeRequestOrchestrationActionOutputComponent("output", e);
56777    }
56778    if (element.hasRelatedAction()) { 
56779      for (RequestOrchestration.RequestOrchestrationActionRelatedActionComponent e : element.getRelatedAction()) 
56780          composeRequestOrchestrationActionRelatedActionComponent("relatedAction", e);
56781    }
56782    if (element.hasTiming()) {
56783      composeType("timing", element.getTiming());
56784    }    if (element.hasLocation()) {
56785      composeCodeableReference("location", element.getLocation());
56786    }
56787    if (element.hasParticipant()) { 
56788      for (RequestOrchestration.RequestOrchestrationActionParticipantComponent e : element.getParticipant()) 
56789          composeRequestOrchestrationActionParticipantComponent("participant", e);
56790    }
56791    if (element.hasType()) {
56792      composeCodeableConcept("type", element.getType());
56793    }
56794    if (element.hasGroupingBehaviorElement())
56795      composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new Enumerations.ActionGroupingBehaviorEnumFactory());
56796    if (element.hasSelectionBehaviorElement())
56797      composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new Enumerations.ActionSelectionBehaviorEnumFactory());
56798    if (element.hasRequiredBehaviorElement())
56799      composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new Enumerations.ActionRequiredBehaviorEnumFactory());
56800    if (element.hasPrecheckBehaviorElement())
56801      composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new Enumerations.ActionPrecheckBehaviorEnumFactory());
56802    if (element.hasCardinalityBehaviorElement())
56803      composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new Enumerations.ActionCardinalityBehaviorEnumFactory());
56804    if (element.hasResource()) {
56805      composeReference("resource", element.getResource());
56806    }
56807    if (element.hasDefinition()) {
56808      composeType("definition", element.getDefinition());
56809    }    if (element.hasTransformElement()) {
56810      composeCanonical("transform", element.getTransformElement());
56811    }
56812    if (element.hasDynamicValue()) { 
56813      for (RequestOrchestration.RequestOrchestrationActionDynamicValueComponent e : element.getDynamicValue()) 
56814          composeRequestOrchestrationActionDynamicValueComponent("dynamicValue", e);
56815    }
56816    if (element.hasAction()) { 
56817      for (RequestOrchestration.RequestOrchestrationActionComponent e : element.getAction()) 
56818          composeRequestOrchestrationActionComponent("action", e);
56819    }
56820  }
56821
56822  protected void composeRequestOrchestrationActionConditionComponent(String name, RequestOrchestration.RequestOrchestrationActionConditionComponent element) throws IOException {
56823    if (element != null) {
56824    composeElementAttributes(element);
56825      xml.enter(FHIR_NS, name);
56826      composeRequestOrchestrationActionConditionComponentElements(element);
56827      composeElementClose(element);
56828      xml.exit(FHIR_NS, name);
56829    }
56830  }
56831
56832  protected void composeRequestOrchestrationActionConditionComponentElements(RequestOrchestration.RequestOrchestrationActionConditionComponent element) throws IOException {
56833    composeBackboneElementElements(element);
56834    if (element.hasKindElement())
56835      composeEnumeration("kind", element.getKindElement(), new Enumerations.ActionConditionKindEnumFactory());
56836    if (element.hasExpression()) {
56837      composeExpression("expression", element.getExpression());
56838    }
56839  }
56840
56841  protected void composeRequestOrchestrationActionInputComponent(String name, RequestOrchestration.RequestOrchestrationActionInputComponent element) throws IOException {
56842    if (element != null) {
56843    composeElementAttributes(element);
56844      xml.enter(FHIR_NS, name);
56845      composeRequestOrchestrationActionInputComponentElements(element);
56846      composeElementClose(element);
56847      xml.exit(FHIR_NS, name);
56848    }
56849  }
56850
56851  protected void composeRequestOrchestrationActionInputComponentElements(RequestOrchestration.RequestOrchestrationActionInputComponent element) throws IOException {
56852    composeBackboneElementElements(element);
56853    if (element.hasTitleElement()) {
56854      composeString("title", element.getTitleElement());
56855    }
56856    if (element.hasRequirement()) {
56857      composeDataRequirement("requirement", element.getRequirement());
56858    }
56859    if (element.hasRelatedDataElement()) {
56860      composeId("relatedData", element.getRelatedDataElement());
56861    }
56862  }
56863
56864  protected void composeRequestOrchestrationActionOutputComponent(String name, RequestOrchestration.RequestOrchestrationActionOutputComponent element) throws IOException {
56865    if (element != null) {
56866    composeElementAttributes(element);
56867      xml.enter(FHIR_NS, name);
56868      composeRequestOrchestrationActionOutputComponentElements(element);
56869      composeElementClose(element);
56870      xml.exit(FHIR_NS, name);
56871    }
56872  }
56873
56874  protected void composeRequestOrchestrationActionOutputComponentElements(RequestOrchestration.RequestOrchestrationActionOutputComponent element) throws IOException {
56875    composeBackboneElementElements(element);
56876    if (element.hasTitleElement()) {
56877      composeString("title", element.getTitleElement());
56878    }
56879    if (element.hasRequirement()) {
56880      composeDataRequirement("requirement", element.getRequirement());
56881    }
56882    if (element.hasRelatedDataElement()) {
56883      composeString("relatedData", element.getRelatedDataElement());
56884    }
56885  }
56886
56887  protected void composeRequestOrchestrationActionRelatedActionComponent(String name, RequestOrchestration.RequestOrchestrationActionRelatedActionComponent element) throws IOException {
56888    if (element != null) {
56889    composeElementAttributes(element);
56890      xml.enter(FHIR_NS, name);
56891      composeRequestOrchestrationActionRelatedActionComponentElements(element);
56892      composeElementClose(element);
56893      xml.exit(FHIR_NS, name);
56894    }
56895  }
56896
56897  protected void composeRequestOrchestrationActionRelatedActionComponentElements(RequestOrchestration.RequestOrchestrationActionRelatedActionComponent element) throws IOException {
56898    composeBackboneElementElements(element);
56899    if (element.hasTargetIdElement()) {
56900      composeId("targetId", element.getTargetIdElement());
56901    }
56902    if (element.hasRelationshipElement())
56903      composeEnumeration("relationship", element.getRelationshipElement(), new Enumerations.ActionRelationshipTypeEnumFactory());
56904    if (element.hasEndRelationshipElement())
56905      composeEnumeration("endRelationship", element.getEndRelationshipElement(), new Enumerations.ActionRelationshipTypeEnumFactory());
56906    if (element.hasOffset()) {
56907      composeType("offset", element.getOffset());
56908    }  }
56909
56910  protected void composeRequestOrchestrationActionParticipantComponent(String name, RequestOrchestration.RequestOrchestrationActionParticipantComponent element) throws IOException {
56911    if (element != null) {
56912    composeElementAttributes(element);
56913      xml.enter(FHIR_NS, name);
56914      composeRequestOrchestrationActionParticipantComponentElements(element);
56915      composeElementClose(element);
56916      xml.exit(FHIR_NS, name);
56917    }
56918  }
56919
56920  protected void composeRequestOrchestrationActionParticipantComponentElements(RequestOrchestration.RequestOrchestrationActionParticipantComponent element) throws IOException {
56921    composeBackboneElementElements(element);
56922    if (element.hasTypeElement())
56923      composeEnumeration("type", element.getTypeElement(), new Enumerations.ActionParticipantTypeEnumFactory());
56924    if (element.hasTypeCanonicalElement()) {
56925      composeCanonical("typeCanonical", element.getTypeCanonicalElement());
56926    }
56927    if (element.hasTypeReference()) {
56928      composeReference("typeReference", element.getTypeReference());
56929    }
56930    if (element.hasRole()) {
56931      composeCodeableConcept("role", element.getRole());
56932    }
56933    if (element.hasFunction()) {
56934      composeCodeableConcept("function", element.getFunction());
56935    }
56936    if (element.hasActor()) {
56937      composeType("actor", element.getActor());
56938    }  }
56939
56940  protected void composeRequestOrchestrationActionDynamicValueComponent(String name, RequestOrchestration.RequestOrchestrationActionDynamicValueComponent element) throws IOException {
56941    if (element != null) {
56942    composeElementAttributes(element);
56943      xml.enter(FHIR_NS, name);
56944      composeRequestOrchestrationActionDynamicValueComponentElements(element);
56945      composeElementClose(element);
56946      xml.exit(FHIR_NS, name);
56947    }
56948  }
56949
56950  protected void composeRequestOrchestrationActionDynamicValueComponentElements(RequestOrchestration.RequestOrchestrationActionDynamicValueComponent element) throws IOException {
56951    composeBackboneElementElements(element);
56952    if (element.hasPathElement()) {
56953      composeString("path", element.getPathElement());
56954    }
56955    if (element.hasExpression()) {
56956      composeExpression("expression", element.getExpression());
56957    }
56958  }
56959
56960  protected void composeRequirements(String name, Requirements element) throws IOException {
56961    if (element != null) {
56962    composeResourceAttributes(element);
56963      xml.enter(FHIR_NS, name);
56964      composeRequirementsElements(element);
56965      composeElementClose(element);
56966      xml.exit(FHIR_NS, name);
56967    }
56968  }
56969
56970  protected void composeRequirementsElements(Requirements element) throws IOException {
56971    composeCanonicalResourceElements(element);
56972    if (element.hasUrlElement()) {
56973      composeUri("url", element.getUrlElement());
56974    }
56975    if (element.hasIdentifier()) { 
56976      for (Identifier e : element.getIdentifier()) 
56977          composeIdentifier("identifier", e);
56978    }
56979    if (element.hasVersionElement()) {
56980      composeString("version", element.getVersionElement());
56981    }
56982    if (element.hasVersionAlgorithm()) {
56983      composeType("versionAlgorithm", element.getVersionAlgorithm());
56984    }    if (element.hasNameElement()) {
56985      composeString("name", element.getNameElement());
56986    }
56987    if (element.hasTitleElement()) {
56988      composeString("title", element.getTitleElement());
56989    }
56990    if (element.hasStatusElement())
56991      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
56992    if (element.hasExperimentalElement()) {
56993      composeBoolean("experimental", element.getExperimentalElement());
56994    }
56995    if (element.hasDateElement()) {
56996      composeDateTime("date", element.getDateElement());
56997    }
56998    if (element.hasPublisherElement()) {
56999      composeString("publisher", element.getPublisherElement());
57000    }
57001    if (element.hasContact()) { 
57002      for (ContactDetail e : element.getContact()) 
57003          composeContactDetail("contact", e);
57004    }
57005    if (element.hasDescriptionElement()) {
57006      composeMarkdown("description", element.getDescriptionElement());
57007    }
57008    if (element.hasUseContext()) { 
57009      for (UsageContext e : element.getUseContext()) 
57010          composeUsageContext("useContext", e);
57011    }
57012    if (element.hasJurisdiction()) { 
57013      for (CodeableConcept e : element.getJurisdiction()) 
57014          composeCodeableConcept("jurisdiction", e);
57015    }
57016    if (element.hasPurposeElement()) {
57017      composeMarkdown("purpose", element.getPurposeElement());
57018    }
57019    if (element.hasCopyrightElement()) {
57020      composeMarkdown("copyright", element.getCopyrightElement());
57021    }
57022    if (element.hasCopyrightLabelElement()) {
57023      composeString("copyrightLabel", element.getCopyrightLabelElement());
57024    }
57025    if (element.hasDerivedFrom()) { 
57026      for (CanonicalType e : element.getDerivedFrom()) 
57027          composeCanonical("derivedFrom", e);
57028    }
57029    if (element.hasReference()) { 
57030      for (UrlType e : element.getReference()) 
57031          composeUrl("reference", e);
57032    }
57033    if (element.hasActor()) { 
57034      for (CanonicalType e : element.getActor()) 
57035          composeCanonical("actor", e);
57036    }
57037    if (element.hasStatement()) { 
57038      for (Requirements.RequirementsStatementComponent e : element.getStatement()) 
57039          composeRequirementsStatementComponent("statement", e);
57040    }
57041  }
57042
57043  protected void composeRequirementsStatementComponent(String name, Requirements.RequirementsStatementComponent element) throws IOException {
57044    if (element != null) {
57045    composeElementAttributes(element);
57046      xml.enter(FHIR_NS, name);
57047      composeRequirementsStatementComponentElements(element);
57048      composeElementClose(element);
57049      xml.exit(FHIR_NS, name);
57050    }
57051  }
57052
57053  protected void composeRequirementsStatementComponentElements(Requirements.RequirementsStatementComponent element) throws IOException {
57054    composeBackboneElementElements(element);
57055    if (element.hasKeyElement()) {
57056      composeId("key", element.getKeyElement());
57057    }
57058    if (element.hasLabelElement()) {
57059      composeString("label", element.getLabelElement());
57060    }
57061      if (element.hasConformance()) 
57062        for (Enumeration<Requirements.ConformanceExpectation> e : element.getConformance()) 
57063          composeEnumeration("conformance", e, new Requirements.ConformanceExpectationEnumFactory());
57064    if (element.hasConditionalityElement()) {
57065      composeBoolean("conditionality", element.getConditionalityElement());
57066    }
57067    if (element.hasRequirementElement()) {
57068      composeMarkdown("requirement", element.getRequirementElement());
57069    }
57070    if (element.hasDerivedFromElement()) {
57071      composeString("derivedFrom", element.getDerivedFromElement());
57072    }
57073    if (element.hasParentElement()) {
57074      composeString("parent", element.getParentElement());
57075    }
57076    if (element.hasSatisfiedBy()) { 
57077      for (UrlType e : element.getSatisfiedBy()) 
57078          composeUrl("satisfiedBy", e);
57079    }
57080    if (element.hasReference()) { 
57081      for (UrlType e : element.getReference()) 
57082          composeUrl("reference", e);
57083    }
57084    if (element.hasSource()) { 
57085      for (Reference e : element.getSource()) 
57086          composeReference("source", e);
57087    }
57088  }
57089
57090  protected void composeResearchStudy(String name, ResearchStudy element) throws IOException {
57091    if (element != null) {
57092    composeResourceAttributes(element);
57093      xml.enter(FHIR_NS, name);
57094      composeResearchStudyElements(element);
57095      composeElementClose(element);
57096      xml.exit(FHIR_NS, name);
57097    }
57098  }
57099
57100  protected void composeResearchStudyElements(ResearchStudy element) throws IOException {
57101    composeDomainResourceElements(element);
57102    if (element.hasUrlElement()) {
57103      composeUri("url", element.getUrlElement());
57104    }
57105    if (element.hasIdentifier()) { 
57106      for (Identifier e : element.getIdentifier()) 
57107          composeIdentifier("identifier", e);
57108    }
57109    if (element.hasVersionElement()) {
57110      composeString("version", element.getVersionElement());
57111    }
57112    if (element.hasNameElement()) {
57113      composeString("name", element.getNameElement());
57114    }
57115    if (element.hasTitleElement()) {
57116      composeString("title", element.getTitleElement());
57117    }
57118    if (element.hasLabel()) { 
57119      for (ResearchStudy.ResearchStudyLabelComponent e : element.getLabel()) 
57120          composeResearchStudyLabelComponent("label", e);
57121    }
57122    if (element.hasProtocol()) { 
57123      for (Reference e : element.getProtocol()) 
57124          composeReference("protocol", e);
57125    }
57126    if (element.hasPartOf()) { 
57127      for (Reference e : element.getPartOf()) 
57128          composeReference("partOf", e);
57129    }
57130    if (element.hasRelatedArtifact()) { 
57131      for (RelatedArtifact e : element.getRelatedArtifact()) 
57132          composeRelatedArtifact("relatedArtifact", e);
57133    }
57134    if (element.hasDateElement()) {
57135      composeDateTime("date", element.getDateElement());
57136    }
57137    if (element.hasStatusElement())
57138      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
57139    if (element.hasPrimaryPurposeType()) {
57140      composeCodeableConcept("primaryPurposeType", element.getPrimaryPurposeType());
57141    }
57142    if (element.hasPhase()) {
57143      composeCodeableConcept("phase", element.getPhase());
57144    }
57145    if (element.hasStudyDesign()) { 
57146      for (CodeableConcept e : element.getStudyDesign()) 
57147          composeCodeableConcept("studyDesign", e);
57148    }
57149    if (element.hasFocus()) { 
57150      for (CodeableReference e : element.getFocus()) 
57151          composeCodeableReference("focus", e);
57152    }
57153    if (element.hasCondition()) { 
57154      for (CodeableConcept e : element.getCondition()) 
57155          composeCodeableConcept("condition", e);
57156    }
57157    if (element.hasKeyword()) { 
57158      for (CodeableConcept e : element.getKeyword()) 
57159          composeCodeableConcept("keyword", e);
57160    }
57161    if (element.hasRegion()) { 
57162      for (CodeableConcept e : element.getRegion()) 
57163          composeCodeableConcept("region", e);
57164    }
57165    if (element.hasDescriptionSummaryElement()) {
57166      composeMarkdown("descriptionSummary", element.getDescriptionSummaryElement());
57167    }
57168    if (element.hasDescriptionElement()) {
57169      composeMarkdown("description", element.getDescriptionElement());
57170    }
57171    if (element.hasPeriod()) {
57172      composePeriod("period", element.getPeriod());
57173    }
57174    if (element.hasSite()) { 
57175      for (Reference e : element.getSite()) 
57176          composeReference("site", e);
57177    }
57178    if (element.hasNote()) { 
57179      for (Annotation e : element.getNote()) 
57180          composeAnnotation("note", e);
57181    }
57182    if (element.hasClassifier()) { 
57183      for (CodeableConcept e : element.getClassifier()) 
57184          composeCodeableConcept("classifier", e);
57185    }
57186    if (element.hasAssociatedParty()) { 
57187      for (ResearchStudy.ResearchStudyAssociatedPartyComponent e : element.getAssociatedParty()) 
57188          composeResearchStudyAssociatedPartyComponent("associatedParty", e);
57189    }
57190    if (element.hasProgressStatus()) { 
57191      for (ResearchStudy.ResearchStudyProgressStatusComponent e : element.getProgressStatus()) 
57192          composeResearchStudyProgressStatusComponent("progressStatus", e);
57193    }
57194    if (element.hasWhyStopped()) {
57195      composeCodeableConcept("whyStopped", element.getWhyStopped());
57196    }
57197    if (element.hasRecruitment()) {
57198      composeResearchStudyRecruitmentComponent("recruitment", element.getRecruitment());
57199    }
57200    if (element.hasComparisonGroup()) { 
57201      for (ResearchStudy.ResearchStudyComparisonGroupComponent e : element.getComparisonGroup()) 
57202          composeResearchStudyComparisonGroupComponent("comparisonGroup", e);
57203    }
57204    if (element.hasObjective()) { 
57205      for (ResearchStudy.ResearchStudyObjectiveComponent e : element.getObjective()) 
57206          composeResearchStudyObjectiveComponent("objective", e);
57207    }
57208    if (element.hasOutcomeMeasure()) { 
57209      for (ResearchStudy.ResearchStudyOutcomeMeasureComponent e : element.getOutcomeMeasure()) 
57210          composeResearchStudyOutcomeMeasureComponent("outcomeMeasure", e);
57211    }
57212    if (element.hasResult()) { 
57213      for (Reference e : element.getResult()) 
57214          composeReference("result", e);
57215    }
57216  }
57217
57218  protected void composeResearchStudyLabelComponent(String name, ResearchStudy.ResearchStudyLabelComponent element) throws IOException {
57219    if (element != null) {
57220    composeElementAttributes(element);
57221      xml.enter(FHIR_NS, name);
57222      composeResearchStudyLabelComponentElements(element);
57223      composeElementClose(element);
57224      xml.exit(FHIR_NS, name);
57225    }
57226  }
57227
57228  protected void composeResearchStudyLabelComponentElements(ResearchStudy.ResearchStudyLabelComponent element) throws IOException {
57229    composeBackboneElementElements(element);
57230    if (element.hasType()) {
57231      composeCodeableConcept("type", element.getType());
57232    }
57233    if (element.hasValueElement()) {
57234      composeString("value", element.getValueElement());
57235    }
57236  }
57237
57238  protected void composeResearchStudyAssociatedPartyComponent(String name, ResearchStudy.ResearchStudyAssociatedPartyComponent element) throws IOException {
57239    if (element != null) {
57240    composeElementAttributes(element);
57241      xml.enter(FHIR_NS, name);
57242      composeResearchStudyAssociatedPartyComponentElements(element);
57243      composeElementClose(element);
57244      xml.exit(FHIR_NS, name);
57245    }
57246  }
57247
57248  protected void composeResearchStudyAssociatedPartyComponentElements(ResearchStudy.ResearchStudyAssociatedPartyComponent element) throws IOException {
57249    composeBackboneElementElements(element);
57250    if (element.hasNameElement()) {
57251      composeString("name", element.getNameElement());
57252    }
57253    if (element.hasRole()) {
57254      composeCodeableConcept("role", element.getRole());
57255    }
57256    if (element.hasPeriod()) { 
57257      for (Period e : element.getPeriod()) 
57258          composePeriod("period", e);
57259    }
57260    if (element.hasClassifier()) { 
57261      for (CodeableConcept e : element.getClassifier()) 
57262          composeCodeableConcept("classifier", e);
57263    }
57264    if (element.hasParty()) {
57265      composeReference("party", element.getParty());
57266    }
57267  }
57268
57269  protected void composeResearchStudyProgressStatusComponent(String name, ResearchStudy.ResearchStudyProgressStatusComponent element) throws IOException {
57270    if (element != null) {
57271    composeElementAttributes(element);
57272      xml.enter(FHIR_NS, name);
57273      composeResearchStudyProgressStatusComponentElements(element);
57274      composeElementClose(element);
57275      xml.exit(FHIR_NS, name);
57276    }
57277  }
57278
57279  protected void composeResearchStudyProgressStatusComponentElements(ResearchStudy.ResearchStudyProgressStatusComponent element) throws IOException {
57280    composeBackboneElementElements(element);
57281    if (element.hasState()) {
57282      composeCodeableConcept("state", element.getState());
57283    }
57284    if (element.hasActualElement()) {
57285      composeBoolean("actual", element.getActualElement());
57286    }
57287    if (element.hasPeriod()) {
57288      composePeriod("period", element.getPeriod());
57289    }
57290  }
57291
57292  protected void composeResearchStudyRecruitmentComponent(String name, ResearchStudy.ResearchStudyRecruitmentComponent element) throws IOException {
57293    if (element != null) {
57294    composeElementAttributes(element);
57295      xml.enter(FHIR_NS, name);
57296      composeResearchStudyRecruitmentComponentElements(element);
57297      composeElementClose(element);
57298      xml.exit(FHIR_NS, name);
57299    }
57300  }
57301
57302  protected void composeResearchStudyRecruitmentComponentElements(ResearchStudy.ResearchStudyRecruitmentComponent element) throws IOException {
57303    composeBackboneElementElements(element);
57304    if (element.hasTargetNumberElement()) {
57305      composeUnsignedInt("targetNumber", element.getTargetNumberElement());
57306    }
57307    if (element.hasActualNumberElement()) {
57308      composeUnsignedInt("actualNumber", element.getActualNumberElement());
57309    }
57310    if (element.hasEligibility()) {
57311      composeReference("eligibility", element.getEligibility());
57312    }
57313    if (element.hasActualGroup()) {
57314      composeReference("actualGroup", element.getActualGroup());
57315    }
57316  }
57317
57318  protected void composeResearchStudyComparisonGroupComponent(String name, ResearchStudy.ResearchStudyComparisonGroupComponent element) throws IOException {
57319    if (element != null) {
57320    composeElementAttributes(element);
57321      xml.enter(FHIR_NS, name);
57322      composeResearchStudyComparisonGroupComponentElements(element);
57323      composeElementClose(element);
57324      xml.exit(FHIR_NS, name);
57325    }
57326  }
57327
57328  protected void composeResearchStudyComparisonGroupComponentElements(ResearchStudy.ResearchStudyComparisonGroupComponent element) throws IOException {
57329    composeBackboneElementElements(element);
57330    if (element.hasLinkIdElement()) {
57331      composeId("linkId", element.getLinkIdElement());
57332    }
57333    if (element.hasNameElement()) {
57334      composeString("name", element.getNameElement());
57335    }
57336    if (element.hasType()) {
57337      composeCodeableConcept("type", element.getType());
57338    }
57339    if (element.hasDescriptionElement()) {
57340      composeMarkdown("description", element.getDescriptionElement());
57341    }
57342    if (element.hasIntendedExposure()) { 
57343      for (Reference e : element.getIntendedExposure()) 
57344          composeReference("intendedExposure", e);
57345    }
57346    if (element.hasObservedGroup()) {
57347      composeReference("observedGroup", element.getObservedGroup());
57348    }
57349  }
57350
57351  protected void composeResearchStudyObjectiveComponent(String name, ResearchStudy.ResearchStudyObjectiveComponent element) throws IOException {
57352    if (element != null) {
57353    composeElementAttributes(element);
57354      xml.enter(FHIR_NS, name);
57355      composeResearchStudyObjectiveComponentElements(element);
57356      composeElementClose(element);
57357      xml.exit(FHIR_NS, name);
57358    }
57359  }
57360
57361  protected void composeResearchStudyObjectiveComponentElements(ResearchStudy.ResearchStudyObjectiveComponent element) throws IOException {
57362    composeBackboneElementElements(element);
57363    if (element.hasNameElement()) {
57364      composeString("name", element.getNameElement());
57365    }
57366    if (element.hasType()) {
57367      composeCodeableConcept("type", element.getType());
57368    }
57369    if (element.hasDescriptionElement()) {
57370      composeMarkdown("description", element.getDescriptionElement());
57371    }
57372  }
57373
57374  protected void composeResearchStudyOutcomeMeasureComponent(String name, ResearchStudy.ResearchStudyOutcomeMeasureComponent element) throws IOException {
57375    if (element != null) {
57376    composeElementAttributes(element);
57377      xml.enter(FHIR_NS, name);
57378      composeResearchStudyOutcomeMeasureComponentElements(element);
57379      composeElementClose(element);
57380      xml.exit(FHIR_NS, name);
57381    }
57382  }
57383
57384  protected void composeResearchStudyOutcomeMeasureComponentElements(ResearchStudy.ResearchStudyOutcomeMeasureComponent element) throws IOException {
57385    composeBackboneElementElements(element);
57386    if (element.hasNameElement()) {
57387      composeString("name", element.getNameElement());
57388    }
57389    if (element.hasType()) { 
57390      for (CodeableConcept e : element.getType()) 
57391          composeCodeableConcept("type", e);
57392    }
57393    if (element.hasDescriptionElement()) {
57394      composeMarkdown("description", element.getDescriptionElement());
57395    }
57396    if (element.hasReference()) {
57397      composeReference("reference", element.getReference());
57398    }
57399  }
57400
57401  protected void composeResearchSubject(String name, ResearchSubject element) throws IOException {
57402    if (element != null) {
57403    composeResourceAttributes(element);
57404      xml.enter(FHIR_NS, name);
57405      composeResearchSubjectElements(element);
57406      composeElementClose(element);
57407      xml.exit(FHIR_NS, name);
57408    }
57409  }
57410
57411  protected void composeResearchSubjectElements(ResearchSubject element) throws IOException {
57412    composeDomainResourceElements(element);
57413    if (element.hasIdentifier()) { 
57414      for (Identifier e : element.getIdentifier()) 
57415          composeIdentifier("identifier", e);
57416    }
57417    if (element.hasStatusElement())
57418      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
57419    if (element.hasProgress()) { 
57420      for (ResearchSubject.ResearchSubjectProgressComponent e : element.getProgress()) 
57421          composeResearchSubjectProgressComponent("progress", e);
57422    }
57423    if (element.hasPeriod()) {
57424      composePeriod("period", element.getPeriod());
57425    }
57426    if (element.hasStudy()) {
57427      composeReference("study", element.getStudy());
57428    }
57429    if (element.hasSubject()) {
57430      composeReference("subject", element.getSubject());
57431    }
57432    if (element.hasAssignedComparisonGroupElement()) {
57433      composeId("assignedComparisonGroup", element.getAssignedComparisonGroupElement());
57434    }
57435    if (element.hasActualComparisonGroupElement()) {
57436      composeId("actualComparisonGroup", element.getActualComparisonGroupElement());
57437    }
57438    if (element.hasConsent()) { 
57439      for (Reference e : element.getConsent()) 
57440          composeReference("consent", e);
57441    }
57442  }
57443
57444  protected void composeResearchSubjectProgressComponent(String name, ResearchSubject.ResearchSubjectProgressComponent element) throws IOException {
57445    if (element != null) {
57446    composeElementAttributes(element);
57447      xml.enter(FHIR_NS, name);
57448      composeResearchSubjectProgressComponentElements(element);
57449      composeElementClose(element);
57450      xml.exit(FHIR_NS, name);
57451    }
57452  }
57453
57454  protected void composeResearchSubjectProgressComponentElements(ResearchSubject.ResearchSubjectProgressComponent element) throws IOException {
57455    composeBackboneElementElements(element);
57456    if (element.hasType()) {
57457      composeCodeableConcept("type", element.getType());
57458    }
57459    if (element.hasSubjectState()) {
57460      composeCodeableConcept("subjectState", element.getSubjectState());
57461    }
57462    if (element.hasMilestone()) {
57463      composeCodeableConcept("milestone", element.getMilestone());
57464    }
57465    if (element.hasReason()) {
57466      composeCodeableConcept("reason", element.getReason());
57467    }
57468    if (element.hasStartDateElement()) {
57469      composeDateTime("startDate", element.getStartDateElement());
57470    }
57471    if (element.hasEndDateElement()) {
57472      composeDateTime("endDate", element.getEndDateElement());
57473    }
57474  }
57475
57476  protected void composeRiskAssessment(String name, RiskAssessment element) throws IOException {
57477    if (element != null) {
57478    composeResourceAttributes(element);
57479      xml.enter(FHIR_NS, name);
57480      composeRiskAssessmentElements(element);
57481      composeElementClose(element);
57482      xml.exit(FHIR_NS, name);
57483    }
57484  }
57485
57486  protected void composeRiskAssessmentElements(RiskAssessment element) throws IOException {
57487    composeDomainResourceElements(element);
57488    if (element.hasIdentifier()) { 
57489      for (Identifier e : element.getIdentifier()) 
57490          composeIdentifier("identifier", e);
57491    }
57492    if (element.hasBasedOn()) {
57493      composeReference("basedOn", element.getBasedOn());
57494    }
57495    if (element.hasParent()) {
57496      composeReference("parent", element.getParent());
57497    }
57498    if (element.hasStatusElement())
57499      composeEnumeration("status", element.getStatusElement(), new Enumerations.ObservationStatusEnumFactory());
57500    if (element.hasMethod()) {
57501      composeCodeableConcept("method", element.getMethod());
57502    }
57503    if (element.hasCode()) {
57504      composeCodeableConcept("code", element.getCode());
57505    }
57506    if (element.hasSubject()) {
57507      composeReference("subject", element.getSubject());
57508    }
57509    if (element.hasEncounter()) {
57510      composeReference("encounter", element.getEncounter());
57511    }
57512    if (element.hasOccurrence()) {
57513      composeType("occurrence", element.getOccurrence());
57514    }    if (element.hasCondition()) {
57515      composeReference("condition", element.getCondition());
57516    }
57517    if (element.hasPerformer()) {
57518      composeReference("performer", element.getPerformer());
57519    }
57520    if (element.hasReason()) { 
57521      for (CodeableReference e : element.getReason()) 
57522          composeCodeableReference("reason", e);
57523    }
57524    if (element.hasBasis()) { 
57525      for (Reference e : element.getBasis()) 
57526          composeReference("basis", e);
57527    }
57528    if (element.hasPrediction()) { 
57529      for (RiskAssessment.RiskAssessmentPredictionComponent e : element.getPrediction()) 
57530          composeRiskAssessmentPredictionComponent("prediction", e);
57531    }
57532    if (element.hasMitigationElement()) {
57533      composeString("mitigation", element.getMitigationElement());
57534    }
57535    if (element.hasNote()) { 
57536      for (Annotation e : element.getNote()) 
57537          composeAnnotation("note", e);
57538    }
57539  }
57540
57541  protected void composeRiskAssessmentPredictionComponent(String name, RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
57542    if (element != null) {
57543    composeElementAttributes(element);
57544      xml.enter(FHIR_NS, name);
57545      composeRiskAssessmentPredictionComponentElements(element);
57546      composeElementClose(element);
57547      xml.exit(FHIR_NS, name);
57548    }
57549  }
57550
57551  protected void composeRiskAssessmentPredictionComponentElements(RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
57552    composeBackboneElementElements(element);
57553    if (element.hasOutcome()) {
57554      composeCodeableConcept("outcome", element.getOutcome());
57555    }
57556    if (element.hasProbability()) {
57557      composeType("probability", element.getProbability());
57558    }    if (element.hasQualitativeRisk()) {
57559      composeCodeableConcept("qualitativeRisk", element.getQualitativeRisk());
57560    }
57561    if (element.hasRelativeRiskElement()) {
57562      composeDecimal("relativeRisk", element.getRelativeRiskElement());
57563    }
57564    if (element.hasWhen()) {
57565      composeType("when", element.getWhen());
57566    }    if (element.hasRationaleElement()) {
57567      composeString("rationale", element.getRationaleElement());
57568    }
57569  }
57570
57571  protected void composeSchedule(String name, Schedule element) throws IOException {
57572    if (element != null) {
57573    composeResourceAttributes(element);
57574      xml.enter(FHIR_NS, name);
57575      composeScheduleElements(element);
57576      composeElementClose(element);
57577      xml.exit(FHIR_NS, name);
57578    }
57579  }
57580
57581  protected void composeScheduleElements(Schedule element) throws IOException {
57582    composeDomainResourceElements(element);
57583    if (element.hasIdentifier()) { 
57584      for (Identifier e : element.getIdentifier()) 
57585          composeIdentifier("identifier", e);
57586    }
57587    if (element.hasActiveElement()) {
57588      composeBoolean("active", element.getActiveElement());
57589    }
57590    if (element.hasServiceCategory()) { 
57591      for (CodeableConcept e : element.getServiceCategory()) 
57592          composeCodeableConcept("serviceCategory", e);
57593    }
57594    if (element.hasServiceType()) { 
57595      for (CodeableReference e : element.getServiceType()) 
57596          composeCodeableReference("serviceType", e);
57597    }
57598    if (element.hasSpecialty()) { 
57599      for (CodeableConcept e : element.getSpecialty()) 
57600          composeCodeableConcept("specialty", e);
57601    }
57602    if (element.hasNameElement()) {
57603      composeString("name", element.getNameElement());
57604    }
57605    if (element.hasActor()) { 
57606      for (Reference e : element.getActor()) 
57607          composeReference("actor", e);
57608    }
57609    if (element.hasPlanningHorizon()) {
57610      composePeriod("planningHorizon", element.getPlanningHorizon());
57611    }
57612    if (element.hasCommentElement()) {
57613      composeMarkdown("comment", element.getCommentElement());
57614    }
57615  }
57616
57617  protected void composeSearchParameter(String name, SearchParameter element) throws IOException {
57618    if (element != null) {
57619    composeResourceAttributes(element);
57620      xml.enter(FHIR_NS, name);
57621      composeSearchParameterElements(element);
57622      composeElementClose(element);
57623      xml.exit(FHIR_NS, name);
57624    }
57625  }
57626
57627  protected void composeSearchParameterElements(SearchParameter element) throws IOException {
57628    composeCanonicalResourceElements(element);
57629    if (element.hasUrlElement()) {
57630      composeUri("url", element.getUrlElement());
57631    }
57632    if (element.hasIdentifier()) { 
57633      for (Identifier e : element.getIdentifier()) 
57634          composeIdentifier("identifier", e);
57635    }
57636    if (element.hasVersionElement()) {
57637      composeString("version", element.getVersionElement());
57638    }
57639    if (element.hasVersionAlgorithm()) {
57640      composeType("versionAlgorithm", element.getVersionAlgorithm());
57641    }    if (element.hasNameElement()) {
57642      composeString("name", element.getNameElement());
57643    }
57644    if (element.hasTitleElement()) {
57645      composeString("title", element.getTitleElement());
57646    }
57647    if (element.hasDerivedFromElement()) {
57648      composeCanonical("derivedFrom", element.getDerivedFromElement());
57649    }
57650    if (element.hasStatusElement())
57651      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
57652    if (element.hasExperimentalElement()) {
57653      composeBoolean("experimental", element.getExperimentalElement());
57654    }
57655    if (element.hasDateElement()) {
57656      composeDateTime("date", element.getDateElement());
57657    }
57658    if (element.hasPublisherElement()) {
57659      composeString("publisher", element.getPublisherElement());
57660    }
57661    if (element.hasContact()) { 
57662      for (ContactDetail e : element.getContact()) 
57663          composeContactDetail("contact", e);
57664    }
57665    if (element.hasDescriptionElement()) {
57666      composeMarkdown("description", element.getDescriptionElement());
57667    }
57668    if (element.hasUseContext()) { 
57669      for (UsageContext e : element.getUseContext()) 
57670          composeUsageContext("useContext", e);
57671    }
57672    if (element.hasJurisdiction()) { 
57673      for (CodeableConcept e : element.getJurisdiction()) 
57674          composeCodeableConcept("jurisdiction", e);
57675    }
57676    if (element.hasPurposeElement()) {
57677      composeMarkdown("purpose", element.getPurposeElement());
57678    }
57679    if (element.hasCopyrightElement()) {
57680      composeMarkdown("copyright", element.getCopyrightElement());
57681    }
57682    if (element.hasCopyrightLabelElement()) {
57683      composeString("copyrightLabel", element.getCopyrightLabelElement());
57684    }
57685    if (element.hasCodeElement()) {
57686      composeCode("code", element.getCodeElement());
57687    }
57688      if (element.hasBase()) 
57689        for (Enumeration<Enumerations.VersionIndependentResourceTypesAll> e : element.getBase()) 
57690          composeEnumeration("base", e, new Enumerations.VersionIndependentResourceTypesAllEnumFactory());
57691    if (element.hasTypeElement())
57692      composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
57693    if (element.hasExpressionElement()) {
57694      composeString("expression", element.getExpressionElement());
57695    }
57696    if (element.hasProcessingModeElement())
57697      composeEnumeration("processingMode", element.getProcessingModeElement(), new SearchParameter.SearchProcessingModeTypeEnumFactory());
57698    if (element.hasConstraintElement()) {
57699      composeString("constraint", element.getConstraintElement());
57700    }
57701      if (element.hasTarget()) 
57702        for (Enumeration<Enumerations.VersionIndependentResourceTypesAll> e : element.getTarget()) 
57703          composeEnumeration("target", e, new Enumerations.VersionIndependentResourceTypesAllEnumFactory());
57704    if (element.hasMultipleOrElement()) {
57705      composeBoolean("multipleOr", element.getMultipleOrElement());
57706    }
57707    if (element.hasMultipleAndElement()) {
57708      composeBoolean("multipleAnd", element.getMultipleAndElement());
57709    }
57710      if (element.hasComparator()) 
57711        for (Enumeration<Enumerations.SearchComparator> e : element.getComparator()) 
57712          composeEnumeration("comparator", e, new Enumerations.SearchComparatorEnumFactory());
57713      if (element.hasModifier()) 
57714        for (Enumeration<Enumerations.SearchModifierCode> e : element.getModifier()) 
57715          composeEnumeration("modifier", e, new Enumerations.SearchModifierCodeEnumFactory());
57716    if (element.hasChain()) { 
57717      for (StringType e : element.getChain()) 
57718          composeString("chain", e);
57719    }
57720    if (element.hasComponent()) { 
57721      for (SearchParameter.SearchParameterComponentComponent e : element.getComponent()) 
57722          composeSearchParameterComponentComponent("component", e);
57723    }
57724  }
57725
57726  protected void composeSearchParameterComponentComponent(String name, SearchParameter.SearchParameterComponentComponent element) throws IOException {
57727    if (element != null) {
57728    composeElementAttributes(element);
57729      xml.enter(FHIR_NS, name);
57730      composeSearchParameterComponentComponentElements(element);
57731      composeElementClose(element);
57732      xml.exit(FHIR_NS, name);
57733    }
57734  }
57735
57736  protected void composeSearchParameterComponentComponentElements(SearchParameter.SearchParameterComponentComponent element) throws IOException {
57737    composeBackboneElementElements(element);
57738    if (element.hasDefinitionElement()) {
57739      composeCanonical("definition", element.getDefinitionElement());
57740    }
57741    if (element.hasExpressionElement()) {
57742      composeString("expression", element.getExpressionElement());
57743    }
57744  }
57745
57746  protected void composeServiceRequest(String name, ServiceRequest element) throws IOException {
57747    if (element != null) {
57748    composeResourceAttributes(element);
57749      xml.enter(FHIR_NS, name);
57750      composeServiceRequestElements(element);
57751      composeElementClose(element);
57752      xml.exit(FHIR_NS, name);
57753    }
57754  }
57755
57756  protected void composeServiceRequestElements(ServiceRequest element) throws IOException {
57757    composeDomainResourceElements(element);
57758    if (element.hasIdentifier()) { 
57759      for (Identifier e : element.getIdentifier()) 
57760          composeIdentifier("identifier", e);
57761    }
57762    if (element.hasInstantiatesCanonical()) { 
57763      for (CanonicalType e : element.getInstantiatesCanonical()) 
57764          composeCanonical("instantiatesCanonical", e);
57765    }
57766    if (element.hasInstantiatesUri()) { 
57767      for (UriType e : element.getInstantiatesUri()) 
57768          composeUri("instantiatesUri", e);
57769    }
57770    if (element.hasBasedOn()) { 
57771      for (Reference e : element.getBasedOn()) 
57772          composeReference("basedOn", e);
57773    }
57774    if (element.hasReplaces()) { 
57775      for (Reference e : element.getReplaces()) 
57776          composeReference("replaces", e);
57777    }
57778    if (element.hasRequisition()) {
57779      composeIdentifier("requisition", element.getRequisition());
57780    }
57781    if (element.hasStatusElement())
57782      composeEnumeration("status", element.getStatusElement(), new Enumerations.RequestStatusEnumFactory());
57783    if (element.hasIntentElement())
57784      composeEnumeration("intent", element.getIntentElement(), new Enumerations.RequestIntentEnumFactory());
57785    if (element.hasCategory()) { 
57786      for (CodeableConcept e : element.getCategory()) 
57787          composeCodeableConcept("category", e);
57788    }
57789    if (element.hasPriorityElement())
57790      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
57791    if (element.hasDoNotPerformElement()) {
57792      composeBoolean("doNotPerform", element.getDoNotPerformElement());
57793    }
57794    if (element.hasCode()) {
57795      composeCodeableReference("code", element.getCode());
57796    }
57797    if (element.hasOrderDetail()) { 
57798      for (ServiceRequest.ServiceRequestOrderDetailComponent e : element.getOrderDetail()) 
57799          composeServiceRequestOrderDetailComponent("orderDetail", e);
57800    }
57801    if (element.hasQuantity()) {
57802      composeType("quantity", element.getQuantity());
57803    }    if (element.hasSubject()) {
57804      composeReference("subject", element.getSubject());
57805    }
57806    if (element.hasFocus()) { 
57807      for (Reference e : element.getFocus()) 
57808          composeReference("focus", e);
57809    }
57810    if (element.hasEncounter()) {
57811      composeReference("encounter", element.getEncounter());
57812    }
57813    if (element.hasOccurrence()) {
57814      composeType("occurrence", element.getOccurrence());
57815    }    if (element.hasAsNeeded()) {
57816      composeType("asNeeded", element.getAsNeeded());
57817    }    if (element.hasAuthoredOnElement()) {
57818      composeDateTime("authoredOn", element.getAuthoredOnElement());
57819    }
57820    if (element.hasRequester()) {
57821      composeReference("requester", element.getRequester());
57822    }
57823    if (element.hasPerformerType()) {
57824      composeCodeableConcept("performerType", element.getPerformerType());
57825    }
57826    if (element.hasPerformer()) { 
57827      for (Reference e : element.getPerformer()) 
57828          composeReference("performer", e);
57829    }
57830    if (element.hasLocation()) { 
57831      for (CodeableReference e : element.getLocation()) 
57832          composeCodeableReference("location", e);
57833    }
57834    if (element.hasReason()) { 
57835      for (CodeableReference e : element.getReason()) 
57836          composeCodeableReference("reason", e);
57837    }
57838    if (element.hasInsurance()) { 
57839      for (Reference e : element.getInsurance()) 
57840          composeReference("insurance", e);
57841    }
57842    if (element.hasSupportingInfo()) { 
57843      for (CodeableReference e : element.getSupportingInfo()) 
57844          composeCodeableReference("supportingInfo", e);
57845    }
57846    if (element.hasSpecimen()) { 
57847      for (Reference e : element.getSpecimen()) 
57848          composeReference("specimen", e);
57849    }
57850    if (element.hasBodySite()) { 
57851      for (CodeableConcept e : element.getBodySite()) 
57852          composeCodeableConcept("bodySite", e);
57853    }
57854    if (element.hasBodyStructure()) {
57855      composeReference("bodyStructure", element.getBodyStructure());
57856    }
57857    if (element.hasNote()) { 
57858      for (Annotation e : element.getNote()) 
57859          composeAnnotation("note", e);
57860    }
57861    if (element.hasPatientInstruction()) { 
57862      for (ServiceRequest.ServiceRequestPatientInstructionComponent e : element.getPatientInstruction()) 
57863          composeServiceRequestPatientInstructionComponent("patientInstruction", e);
57864    }
57865    if (element.hasRelevantHistory()) { 
57866      for (Reference e : element.getRelevantHistory()) 
57867          composeReference("relevantHistory", e);
57868    }
57869  }
57870
57871  protected void composeServiceRequestOrderDetailComponent(String name, ServiceRequest.ServiceRequestOrderDetailComponent element) throws IOException {
57872    if (element != null) {
57873    composeElementAttributes(element);
57874      xml.enter(FHIR_NS, name);
57875      composeServiceRequestOrderDetailComponentElements(element);
57876      composeElementClose(element);
57877      xml.exit(FHIR_NS, name);
57878    }
57879  }
57880
57881  protected void composeServiceRequestOrderDetailComponentElements(ServiceRequest.ServiceRequestOrderDetailComponent element) throws IOException {
57882    composeBackboneElementElements(element);
57883    if (element.hasParameterFocus()) {
57884      composeCodeableReference("parameterFocus", element.getParameterFocus());
57885    }
57886    if (element.hasParameter()) {
57887      for (ServiceRequest.ServiceRequestOrderDetailParameterComponent e : element.getParameter()) 
57888          composeServiceRequestOrderDetailParameterComponent("parameter", e);
57889    }
57890  }
57891
57892  protected void composeServiceRequestOrderDetailParameterComponent(String name, ServiceRequest.ServiceRequestOrderDetailParameterComponent element) throws IOException {
57893    if (element != null) {
57894    composeElementAttributes(element);
57895      xml.enter(FHIR_NS, name);
57896      composeServiceRequestOrderDetailParameterComponentElements(element);
57897      composeElementClose(element);
57898      xml.exit(FHIR_NS, name);
57899    }
57900  }
57901
57902  protected void composeServiceRequestOrderDetailParameterComponentElements(ServiceRequest.ServiceRequestOrderDetailParameterComponent element) throws IOException {
57903    composeBackboneElementElements(element);
57904    if (element.hasCode()) {
57905      composeCodeableConcept("code", element.getCode());
57906    }
57907    if (element.hasValue()) {
57908      composeType("value", element.getValue());
57909    }  }
57910
57911  protected void composeServiceRequestPatientInstructionComponent(String name, ServiceRequest.ServiceRequestPatientInstructionComponent element) throws IOException {
57912    if (element != null) {
57913    composeElementAttributes(element);
57914      xml.enter(FHIR_NS, name);
57915      composeServiceRequestPatientInstructionComponentElements(element);
57916      composeElementClose(element);
57917      xml.exit(FHIR_NS, name);
57918    }
57919  }
57920
57921  protected void composeServiceRequestPatientInstructionComponentElements(ServiceRequest.ServiceRequestPatientInstructionComponent element) throws IOException {
57922    composeBackboneElementElements(element);
57923    if (element.hasInstruction()) {
57924      composeType("instruction", element.getInstruction());
57925    }  }
57926
57927  protected void composeSlot(String name, Slot element) throws IOException {
57928    if (element != null) {
57929    composeResourceAttributes(element);
57930      xml.enter(FHIR_NS, name);
57931      composeSlotElements(element);
57932      composeElementClose(element);
57933      xml.exit(FHIR_NS, name);
57934    }
57935  }
57936
57937  protected void composeSlotElements(Slot element) throws IOException {
57938    composeDomainResourceElements(element);
57939    if (element.hasIdentifier()) { 
57940      for (Identifier e : element.getIdentifier()) 
57941          composeIdentifier("identifier", e);
57942    }
57943    if (element.hasServiceCategory()) { 
57944      for (CodeableConcept e : element.getServiceCategory()) 
57945          composeCodeableConcept("serviceCategory", e);
57946    }
57947    if (element.hasServiceType()) { 
57948      for (CodeableReference e : element.getServiceType()) 
57949          composeCodeableReference("serviceType", e);
57950    }
57951    if (element.hasSpecialty()) { 
57952      for (CodeableConcept e : element.getSpecialty()) 
57953          composeCodeableConcept("specialty", e);
57954    }
57955    if (element.hasAppointmentType()) { 
57956      for (CodeableConcept e : element.getAppointmentType()) 
57957          composeCodeableConcept("appointmentType", e);
57958    }
57959    if (element.hasSchedule()) {
57960      composeReference("schedule", element.getSchedule());
57961    }
57962    if (element.hasStatusElement())
57963      composeEnumeration("status", element.getStatusElement(), new Slot.SlotStatusEnumFactory());
57964    if (element.hasStartElement()) {
57965      composeInstant("start", element.getStartElement());
57966    }
57967    if (element.hasEndElement()) {
57968      composeInstant("end", element.getEndElement());
57969    }
57970    if (element.hasOverbookedElement()) {
57971      composeBoolean("overbooked", element.getOverbookedElement());
57972    }
57973    if (element.hasCommentElement()) {
57974      composeString("comment", element.getCommentElement());
57975    }
57976  }
57977
57978  protected void composeSpecimen(String name, Specimen element) throws IOException {
57979    if (element != null) {
57980    composeResourceAttributes(element);
57981      xml.enter(FHIR_NS, name);
57982      composeSpecimenElements(element);
57983      composeElementClose(element);
57984      xml.exit(FHIR_NS, name);
57985    }
57986  }
57987
57988  protected void composeSpecimenElements(Specimen element) throws IOException {
57989    composeDomainResourceElements(element);
57990    if (element.hasIdentifier()) { 
57991      for (Identifier e : element.getIdentifier()) 
57992          composeIdentifier("identifier", e);
57993    }
57994    if (element.hasAccessionIdentifier()) {
57995      composeIdentifier("accessionIdentifier", element.getAccessionIdentifier());
57996    }
57997    if (element.hasStatusElement())
57998      composeEnumeration("status", element.getStatusElement(), new Specimen.SpecimenStatusEnumFactory());
57999    if (element.hasType()) {
58000      composeCodeableConcept("type", element.getType());
58001    }
58002    if (element.hasSubject()) {
58003      composeReference("subject", element.getSubject());
58004    }
58005    if (element.hasReceivedTimeElement()) {
58006      composeDateTime("receivedTime", element.getReceivedTimeElement());
58007    }
58008    if (element.hasParent()) { 
58009      for (Reference e : element.getParent()) 
58010          composeReference("parent", e);
58011    }
58012    if (element.hasRequest()) { 
58013      for (Reference e : element.getRequest()) 
58014          composeReference("request", e);
58015    }
58016    if (element.hasCombinedElement())
58017      composeEnumeration("combined", element.getCombinedElement(), new Specimen.SpecimenCombinedEnumFactory());
58018    if (element.hasRole()) { 
58019      for (CodeableConcept e : element.getRole()) 
58020          composeCodeableConcept("role", e);
58021    }
58022    if (element.hasFeature()) { 
58023      for (Specimen.SpecimenFeatureComponent e : element.getFeature()) 
58024          composeSpecimenFeatureComponent("feature", e);
58025    }
58026    if (element.hasCollection()) {
58027      composeSpecimenCollectionComponent("collection", element.getCollection());
58028    }
58029    if (element.hasProcessing()) { 
58030      for (Specimen.SpecimenProcessingComponent e : element.getProcessing()) 
58031          composeSpecimenProcessingComponent("processing", e);
58032    }
58033    if (element.hasContainer()) { 
58034      for (Specimen.SpecimenContainerComponent e : element.getContainer()) 
58035          composeSpecimenContainerComponent("container", e);
58036    }
58037    if (element.hasCondition()) { 
58038      for (CodeableConcept e : element.getCondition()) 
58039          composeCodeableConcept("condition", e);
58040    }
58041    if (element.hasNote()) { 
58042      for (Annotation e : element.getNote()) 
58043          composeAnnotation("note", e);
58044    }
58045  }
58046
58047  protected void composeSpecimenFeatureComponent(String name, Specimen.SpecimenFeatureComponent element) throws IOException {
58048    if (element != null) {
58049    composeElementAttributes(element);
58050      xml.enter(FHIR_NS, name);
58051      composeSpecimenFeatureComponentElements(element);
58052      composeElementClose(element);
58053      xml.exit(FHIR_NS, name);
58054    }
58055  }
58056
58057  protected void composeSpecimenFeatureComponentElements(Specimen.SpecimenFeatureComponent element) throws IOException {
58058    composeBackboneElementElements(element);
58059    if (element.hasType()) {
58060      composeCodeableConcept("type", element.getType());
58061    }
58062    if (element.hasDescriptionElement()) {
58063      composeString("description", element.getDescriptionElement());
58064    }
58065  }
58066
58067  protected void composeSpecimenCollectionComponent(String name, Specimen.SpecimenCollectionComponent element) throws IOException {
58068    if (element != null) {
58069    composeElementAttributes(element);
58070      xml.enter(FHIR_NS, name);
58071      composeSpecimenCollectionComponentElements(element);
58072      composeElementClose(element);
58073      xml.exit(FHIR_NS, name);
58074    }
58075  }
58076
58077  protected void composeSpecimenCollectionComponentElements(Specimen.SpecimenCollectionComponent element) throws IOException {
58078    composeBackboneElementElements(element);
58079    if (element.hasCollector()) {
58080      composeReference("collector", element.getCollector());
58081    }
58082    if (element.hasCollected()) {
58083      composeType("collected", element.getCollected());
58084    }    if (element.hasDuration()) {
58085      composeDuration("duration", element.getDuration());
58086    }
58087    if (element.hasQuantity()) {
58088      composeQuantity("quantity", element.getQuantity());
58089    }
58090    if (element.hasMethod()) {
58091      composeCodeableConcept("method", element.getMethod());
58092    }
58093    if (element.hasDevice()) {
58094      composeCodeableReference("device", element.getDevice());
58095    }
58096    if (element.hasProcedure()) {
58097      composeReference("procedure", element.getProcedure());
58098    }
58099    if (element.hasBodySite()) {
58100      composeCodeableReference("bodySite", element.getBodySite());
58101    }
58102    if (element.hasFastingStatus()) {
58103      composeType("fastingStatus", element.getFastingStatus());
58104    }  }
58105
58106  protected void composeSpecimenProcessingComponent(String name, Specimen.SpecimenProcessingComponent element) throws IOException {
58107    if (element != null) {
58108    composeElementAttributes(element);
58109      xml.enter(FHIR_NS, name);
58110      composeSpecimenProcessingComponentElements(element);
58111      composeElementClose(element);
58112      xml.exit(FHIR_NS, name);
58113    }
58114  }
58115
58116  protected void composeSpecimenProcessingComponentElements(Specimen.SpecimenProcessingComponent element) throws IOException {
58117    composeBackboneElementElements(element);
58118    if (element.hasDescriptionElement()) {
58119      composeString("description", element.getDescriptionElement());
58120    }
58121    if (element.hasMethod()) {
58122      composeCodeableConcept("method", element.getMethod());
58123    }
58124    if (element.hasAdditive()) { 
58125      for (Reference e : element.getAdditive()) 
58126          composeReference("additive", e);
58127    }
58128    if (element.hasTime()) {
58129      composeType("time", element.getTime());
58130    }  }
58131
58132  protected void composeSpecimenContainerComponent(String name, Specimen.SpecimenContainerComponent element) throws IOException {
58133    if (element != null) {
58134    composeElementAttributes(element);
58135      xml.enter(FHIR_NS, name);
58136      composeSpecimenContainerComponentElements(element);
58137      composeElementClose(element);
58138      xml.exit(FHIR_NS, name);
58139    }
58140  }
58141
58142  protected void composeSpecimenContainerComponentElements(Specimen.SpecimenContainerComponent element) throws IOException {
58143    composeBackboneElementElements(element);
58144    if (element.hasDevice()) {
58145      composeReference("device", element.getDevice());
58146    }
58147    if (element.hasLocation()) {
58148      composeReference("location", element.getLocation());
58149    }
58150    if (element.hasSpecimenQuantity()) {
58151      composeQuantity("specimenQuantity", element.getSpecimenQuantity());
58152    }
58153  }
58154
58155  protected void composeSpecimenDefinition(String name, SpecimenDefinition element) throws IOException {
58156    if (element != null) {
58157    composeResourceAttributes(element);
58158      xml.enter(FHIR_NS, name);
58159      composeSpecimenDefinitionElements(element);
58160      composeElementClose(element);
58161      xml.exit(FHIR_NS, name);
58162    }
58163  }
58164
58165  protected void composeSpecimenDefinitionElements(SpecimenDefinition element) throws IOException {
58166    composeDomainResourceElements(element);
58167    if (element.hasUrlElement()) {
58168      composeUri("url", element.getUrlElement());
58169    }
58170    if (element.hasIdentifier()) {
58171      composeIdentifier("identifier", element.getIdentifier());
58172    }
58173    if (element.hasVersionElement()) {
58174      composeString("version", element.getVersionElement());
58175    }
58176    if (element.hasVersionAlgorithm()) {
58177      composeType("versionAlgorithm", element.getVersionAlgorithm());
58178    }    if (element.hasNameElement()) {
58179      composeString("name", element.getNameElement());
58180    }
58181    if (element.hasTitleElement()) {
58182      composeString("title", element.getTitleElement());
58183    }
58184    if (element.hasDerivedFromCanonical()) { 
58185      for (CanonicalType e : element.getDerivedFromCanonical()) 
58186          composeCanonical("derivedFromCanonical", e);
58187    }
58188    if (element.hasDerivedFromUri()) { 
58189      for (UriType e : element.getDerivedFromUri()) 
58190          composeUri("derivedFromUri", e);
58191    }
58192    if (element.hasStatusElement())
58193      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
58194    if (element.hasExperimentalElement()) {
58195      composeBoolean("experimental", element.getExperimentalElement());
58196    }
58197    if (element.hasSubject()) {
58198      composeType("subject", element.getSubject());
58199    }    if (element.hasDateElement()) {
58200      composeDateTime("date", element.getDateElement());
58201    }
58202    if (element.hasPublisherElement()) {
58203      composeString("publisher", element.getPublisherElement());
58204    }
58205    if (element.hasContact()) { 
58206      for (ContactDetail e : element.getContact()) 
58207          composeContactDetail("contact", e);
58208    }
58209    if (element.hasDescriptionElement()) {
58210      composeMarkdown("description", element.getDescriptionElement());
58211    }
58212    if (element.hasUseContext()) { 
58213      for (UsageContext e : element.getUseContext()) 
58214          composeUsageContext("useContext", e);
58215    }
58216    if (element.hasJurisdiction()) { 
58217      for (CodeableConcept e : element.getJurisdiction()) 
58218          composeCodeableConcept("jurisdiction", e);
58219    }
58220    if (element.hasPurposeElement()) {
58221      composeMarkdown("purpose", element.getPurposeElement());
58222    }
58223    if (element.hasCopyrightElement()) {
58224      composeMarkdown("copyright", element.getCopyrightElement());
58225    }
58226    if (element.hasCopyrightLabelElement()) {
58227      composeString("copyrightLabel", element.getCopyrightLabelElement());
58228    }
58229    if (element.hasApprovalDateElement()) {
58230      composeDate("approvalDate", element.getApprovalDateElement());
58231    }
58232    if (element.hasLastReviewDateElement()) {
58233      composeDate("lastReviewDate", element.getLastReviewDateElement());
58234    }
58235    if (element.hasEffectivePeriod()) {
58236      composePeriod("effectivePeriod", element.getEffectivePeriod());
58237    }
58238    if (element.hasTypeCollected()) {
58239      composeCodeableConcept("typeCollected", element.getTypeCollected());
58240    }
58241    if (element.hasPatientPreparation()) { 
58242      for (CodeableConcept e : element.getPatientPreparation()) 
58243          composeCodeableConcept("patientPreparation", e);
58244    }
58245    if (element.hasTimeAspectElement()) {
58246      composeString("timeAspect", element.getTimeAspectElement());
58247    }
58248    if (element.hasCollection()) { 
58249      for (CodeableConcept e : element.getCollection()) 
58250          composeCodeableConcept("collection", e);
58251    }
58252    if (element.hasTypeTested()) { 
58253      for (SpecimenDefinition.SpecimenDefinitionTypeTestedComponent e : element.getTypeTested()) 
58254          composeSpecimenDefinitionTypeTestedComponent("typeTested", e);
58255    }
58256  }
58257
58258  protected void composeSpecimenDefinitionTypeTestedComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedComponent element) throws IOException {
58259    if (element != null) {
58260    composeElementAttributes(element);
58261      xml.enter(FHIR_NS, name);
58262      composeSpecimenDefinitionTypeTestedComponentElements(element);
58263      composeElementClose(element);
58264      xml.exit(FHIR_NS, name);
58265    }
58266  }
58267
58268  protected void composeSpecimenDefinitionTypeTestedComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedComponent element) throws IOException {
58269    composeBackboneElementElements(element);
58270    if (element.hasIsDerivedElement()) {
58271      composeBoolean("isDerived", element.getIsDerivedElement());
58272    }
58273    if (element.hasType()) {
58274      composeCodeableConcept("type", element.getType());
58275    }
58276    if (element.hasPreferenceElement())
58277      composeEnumeration("preference", element.getPreferenceElement(), new SpecimenDefinition.SpecimenContainedPreferenceEnumFactory());
58278    if (element.hasContainer()) {
58279      composeSpecimenDefinitionTypeTestedContainerComponent("container", element.getContainer());
58280    }
58281    if (element.hasRequirementElement()) {
58282      composeMarkdown("requirement", element.getRequirementElement());
58283    }
58284    if (element.hasRetentionTime()) {
58285      composeDuration("retentionTime", element.getRetentionTime());
58286    }
58287    if (element.hasSingleUseElement()) {
58288      composeBoolean("singleUse", element.getSingleUseElement());
58289    }
58290    if (element.hasRejectionCriterion()) { 
58291      for (CodeableConcept e : element.getRejectionCriterion()) 
58292          composeCodeableConcept("rejectionCriterion", e);
58293    }
58294    if (element.hasHandling()) { 
58295      for (SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent e : element.getHandling()) 
58296          composeSpecimenDefinitionTypeTestedHandlingComponent("handling", e);
58297    }
58298    if (element.hasTestingDestination()) { 
58299      for (CodeableConcept e : element.getTestingDestination()) 
58300          composeCodeableConcept("testingDestination", e);
58301    }
58302  }
58303
58304  protected void composeSpecimenDefinitionTypeTestedContainerComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent element) throws IOException {
58305    if (element != null) {
58306    composeElementAttributes(element);
58307      xml.enter(FHIR_NS, name);
58308      composeSpecimenDefinitionTypeTestedContainerComponentElements(element);
58309      composeElementClose(element);
58310      xml.exit(FHIR_NS, name);
58311    }
58312  }
58313
58314  protected void composeSpecimenDefinitionTypeTestedContainerComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent element) throws IOException {
58315    composeBackboneElementElements(element);
58316    if (element.hasMaterial()) {
58317      composeCodeableConcept("material", element.getMaterial());
58318    }
58319    if (element.hasType()) {
58320      composeCodeableConcept("type", element.getType());
58321    }
58322    if (element.hasCap()) {
58323      composeCodeableConcept("cap", element.getCap());
58324    }
58325    if (element.hasDescriptionElement()) {
58326      composeMarkdown("description", element.getDescriptionElement());
58327    }
58328    if (element.hasCapacity()) {
58329      composeQuantity("capacity", element.getCapacity());
58330    }
58331    if (element.hasMinimumVolume()) {
58332      composeType("minimumVolume", element.getMinimumVolume());
58333    }    if (element.hasAdditive()) { 
58334      for (SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent e : element.getAdditive()) 
58335          composeSpecimenDefinitionTypeTestedContainerAdditiveComponent("additive", e);
58336    }
58337    if (element.hasPreparationElement()) {
58338      composeMarkdown("preparation", element.getPreparationElement());
58339    }
58340  }
58341
58342  protected void composeSpecimenDefinitionTypeTestedContainerAdditiveComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent element) throws IOException {
58343    if (element != null) {
58344    composeElementAttributes(element);
58345      xml.enter(FHIR_NS, name);
58346      composeSpecimenDefinitionTypeTestedContainerAdditiveComponentElements(element);
58347      composeElementClose(element);
58348      xml.exit(FHIR_NS, name);
58349    }
58350  }
58351
58352  protected void composeSpecimenDefinitionTypeTestedContainerAdditiveComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent element) throws IOException {
58353    composeBackboneElementElements(element);
58354    if (element.hasAdditive()) {
58355      composeType("additive", element.getAdditive());
58356    }  }
58357
58358  protected void composeSpecimenDefinitionTypeTestedHandlingComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent element) throws IOException {
58359    if (element != null) {
58360    composeElementAttributes(element);
58361      xml.enter(FHIR_NS, name);
58362      composeSpecimenDefinitionTypeTestedHandlingComponentElements(element);
58363      composeElementClose(element);
58364      xml.exit(FHIR_NS, name);
58365    }
58366  }
58367
58368  protected void composeSpecimenDefinitionTypeTestedHandlingComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent element) throws IOException {
58369    composeBackboneElementElements(element);
58370    if (element.hasTemperatureQualifier()) {
58371      composeCodeableConcept("temperatureQualifier", element.getTemperatureQualifier());
58372    }
58373    if (element.hasTemperatureRange()) {
58374      composeRange("temperatureRange", element.getTemperatureRange());
58375    }
58376    if (element.hasMaxDuration()) {
58377      composeDuration("maxDuration", element.getMaxDuration());
58378    }
58379    if (element.hasInstructionElement()) {
58380      composeMarkdown("instruction", element.getInstructionElement());
58381    }
58382  }
58383
58384  protected void composeStructureDefinition(String name, StructureDefinition element) throws IOException {
58385    if (element != null) {
58386    composeResourceAttributes(element);
58387      xml.enter(FHIR_NS, name);
58388      composeStructureDefinitionElements(element);
58389      composeElementClose(element);
58390      xml.exit(FHIR_NS, name);
58391    }
58392  }
58393
58394  protected void composeStructureDefinitionElements(StructureDefinition element) throws IOException {
58395    composeCanonicalResourceElements(element);
58396    if (element.hasUrlElement()) {
58397      composeUri("url", element.getUrlElement());
58398    }
58399    if (element.hasIdentifier()) { 
58400      for (Identifier e : element.getIdentifier()) 
58401          composeIdentifier("identifier", e);
58402    }
58403    if (element.hasVersionElement()) {
58404      composeString("version", element.getVersionElement());
58405    }
58406    if (element.hasVersionAlgorithm()) {
58407      composeType("versionAlgorithm", element.getVersionAlgorithm());
58408    }    if (element.hasNameElement()) {
58409      composeString("name", element.getNameElement());
58410    }
58411    if (element.hasTitleElement()) {
58412      composeString("title", element.getTitleElement());
58413    }
58414    if (element.hasStatusElement())
58415      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
58416    if (element.hasExperimentalElement()) {
58417      composeBoolean("experimental", element.getExperimentalElement());
58418    }
58419    if (element.hasDateElement()) {
58420      composeDateTime("date", element.getDateElement());
58421    }
58422    if (element.hasPublisherElement()) {
58423      composeString("publisher", element.getPublisherElement());
58424    }
58425    if (element.hasContact()) { 
58426      for (ContactDetail e : element.getContact()) 
58427          composeContactDetail("contact", e);
58428    }
58429    if (element.hasDescriptionElement()) {
58430      composeMarkdown("description", element.getDescriptionElement());
58431    }
58432    if (element.hasUseContext()) { 
58433      for (UsageContext e : element.getUseContext()) 
58434          composeUsageContext("useContext", e);
58435    }
58436    if (element.hasJurisdiction()) { 
58437      for (CodeableConcept e : element.getJurisdiction()) 
58438          composeCodeableConcept("jurisdiction", e);
58439    }
58440    if (element.hasPurposeElement()) {
58441      composeMarkdown("purpose", element.getPurposeElement());
58442    }
58443    if (element.hasCopyrightElement()) {
58444      composeMarkdown("copyright", element.getCopyrightElement());
58445    }
58446    if (element.hasCopyrightLabelElement()) {
58447      composeString("copyrightLabel", element.getCopyrightLabelElement());
58448    }
58449    if (element.hasKeyword()) { 
58450      for (Coding e : element.getKeyword()) 
58451          composeCoding("keyword", e);
58452    }
58453    if (element.hasFhirVersionElement())
58454      composeEnumeration("fhirVersion", element.getFhirVersionElement(), new Enumerations.FHIRVersionEnumFactory());
58455    if (element.hasMapping()) { 
58456      for (StructureDefinition.StructureDefinitionMappingComponent e : element.getMapping()) 
58457          composeStructureDefinitionMappingComponent("mapping", e);
58458    }
58459    if (element.hasKindElement())
58460      composeEnumeration("kind", element.getKindElement(), new StructureDefinition.StructureDefinitionKindEnumFactory());
58461    if (element.hasAbstractElement()) {
58462      composeBoolean("abstract", element.getAbstractElement());
58463    }
58464    if (element.hasContext()) { 
58465      for (StructureDefinition.StructureDefinitionContextComponent e : element.getContext()) 
58466          composeStructureDefinitionContextComponent("context", e);
58467    }
58468    if (element.hasContextInvariant()) { 
58469      for (StringType e : element.getContextInvariant()) 
58470          composeString("contextInvariant", e);
58471    }
58472    if (element.hasTypeElement()) {
58473      composeUri("type", element.getTypeElement());
58474    }
58475    if (element.hasBaseDefinitionElement()) {
58476      composeCanonical("baseDefinition", element.getBaseDefinitionElement());
58477    }
58478    if (element.hasDerivationElement())
58479      composeEnumeration("derivation", element.getDerivationElement(), new StructureDefinition.TypeDerivationRuleEnumFactory());
58480    if (element.hasSnapshot()) {
58481      composeStructureDefinitionSnapshotComponent("snapshot", element.getSnapshot());
58482    }
58483    if (element.hasDifferential()) {
58484      composeStructureDefinitionDifferentialComponent("differential", element.getDifferential());
58485    }
58486  }
58487
58488  protected void composeStructureDefinitionMappingComponent(String name, StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
58489    if (element != null) {
58490    composeElementAttributes(element);
58491      xml.enter(FHIR_NS, name);
58492      composeStructureDefinitionMappingComponentElements(element);
58493      composeElementClose(element);
58494      xml.exit(FHIR_NS, name);
58495    }
58496  }
58497
58498  protected void composeStructureDefinitionMappingComponentElements(StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
58499    composeBackboneElementElements(element);
58500    if (element.hasIdentityElement()) {
58501      composeId("identity", element.getIdentityElement());
58502    }
58503    if (element.hasUriElement()) {
58504      composeUri("uri", element.getUriElement());
58505    }
58506    if (element.hasNameElement()) {
58507      composeString("name", element.getNameElement());
58508    }
58509    if (element.hasCommentElement()) {
58510      composeString("comment", element.getCommentElement());
58511    }
58512  }
58513
58514  protected void composeStructureDefinitionContextComponent(String name, StructureDefinition.StructureDefinitionContextComponent element) throws IOException {
58515    if (element != null) {
58516    composeElementAttributes(element);
58517      xml.enter(FHIR_NS, name);
58518      composeStructureDefinitionContextComponentElements(element);
58519      composeElementClose(element);
58520      xml.exit(FHIR_NS, name);
58521    }
58522  }
58523
58524  protected void composeStructureDefinitionContextComponentElements(StructureDefinition.StructureDefinitionContextComponent element) throws IOException {
58525    composeBackboneElementElements(element);
58526    if (element.hasTypeElement())
58527      composeEnumeration("type", element.getTypeElement(), new StructureDefinition.ExtensionContextTypeEnumFactory());
58528    if (element.hasExpressionElement()) {
58529      composeString("expression", element.getExpressionElement());
58530    }
58531  }
58532
58533  protected void composeStructureDefinitionSnapshotComponent(String name, StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
58534    if (element != null) {
58535    composeElementAttributes(element);
58536      xml.enter(FHIR_NS, name);
58537      composeStructureDefinitionSnapshotComponentElements(element);
58538      composeElementClose(element);
58539      xml.exit(FHIR_NS, name);
58540    }
58541  }
58542
58543  protected void composeStructureDefinitionSnapshotComponentElements(StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
58544    composeBackboneElementElements(element);
58545    if (element.hasElement()) { 
58546      for (ElementDefinition e : element.getElement()) 
58547          composeElementDefinition("element", e);
58548    }
58549  }
58550
58551  protected void composeStructureDefinitionDifferentialComponent(String name, StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
58552    if (element != null) {
58553    composeElementAttributes(element);
58554      xml.enter(FHIR_NS, name);
58555      composeStructureDefinitionDifferentialComponentElements(element);
58556      composeElementClose(element);
58557      xml.exit(FHIR_NS, name);
58558    }
58559  }
58560
58561  protected void composeStructureDefinitionDifferentialComponentElements(StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
58562    composeBackboneElementElements(element);
58563    if (element.hasElement()) { 
58564      for (ElementDefinition e : element.getElement()) 
58565          composeElementDefinition("element", e);
58566    }
58567  }
58568
58569  protected void composeStructureMap(String name, StructureMap element) throws IOException {
58570    if (element != null) {
58571    composeResourceAttributes(element);
58572      xml.enter(FHIR_NS, name);
58573      composeStructureMapElements(element);
58574      composeElementClose(element);
58575      xml.exit(FHIR_NS, name);
58576    }
58577  }
58578
58579  protected void composeStructureMapElements(StructureMap element) throws IOException {
58580    composeCanonicalResourceElements(element);
58581    if (element.hasUrlElement()) {
58582      composeUri("url", element.getUrlElement());
58583    }
58584    if (element.hasIdentifier()) { 
58585      for (Identifier e : element.getIdentifier()) 
58586          composeIdentifier("identifier", e);
58587    }
58588    if (element.hasVersionElement()) {
58589      composeString("version", element.getVersionElement());
58590    }
58591    if (element.hasVersionAlgorithm()) {
58592      composeType("versionAlgorithm", element.getVersionAlgorithm());
58593    }    if (element.hasNameElement()) {
58594      composeString("name", element.getNameElement());
58595    }
58596    if (element.hasTitleElement()) {
58597      composeString("title", element.getTitleElement());
58598    }
58599    if (element.hasStatusElement())
58600      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
58601    if (element.hasExperimentalElement()) {
58602      composeBoolean("experimental", element.getExperimentalElement());
58603    }
58604    if (element.hasDateElement()) {
58605      composeDateTime("date", element.getDateElement());
58606    }
58607    if (element.hasPublisherElement()) {
58608      composeString("publisher", element.getPublisherElement());
58609    }
58610    if (element.hasContact()) { 
58611      for (ContactDetail e : element.getContact()) 
58612          composeContactDetail("contact", e);
58613    }
58614    if (element.hasDescriptionElement()) {
58615      composeMarkdown("description", element.getDescriptionElement());
58616    }
58617    if (element.hasUseContext()) { 
58618      for (UsageContext e : element.getUseContext()) 
58619          composeUsageContext("useContext", e);
58620    }
58621    if (element.hasJurisdiction()) { 
58622      for (CodeableConcept e : element.getJurisdiction()) 
58623          composeCodeableConcept("jurisdiction", e);
58624    }
58625    if (element.hasPurposeElement()) {
58626      composeMarkdown("purpose", element.getPurposeElement());
58627    }
58628    if (element.hasCopyrightElement()) {
58629      composeMarkdown("copyright", element.getCopyrightElement());
58630    }
58631    if (element.hasCopyrightLabelElement()) {
58632      composeString("copyrightLabel", element.getCopyrightLabelElement());
58633    }
58634    if (element.hasStructure()) { 
58635      for (StructureMap.StructureMapStructureComponent e : element.getStructure()) 
58636          composeStructureMapStructureComponent("structure", e);
58637    }
58638    if (element.hasImport()) { 
58639      for (CanonicalType e : element.getImport()) 
58640          composeCanonical("import", e);
58641    }
58642    if (element.hasConst()) { 
58643      for (StructureMap.StructureMapConstComponent e : element.getConst()) 
58644          composeStructureMapConstComponent("const", e);
58645    }
58646    if (element.hasGroup()) { 
58647      for (StructureMap.StructureMapGroupComponent e : element.getGroup()) 
58648          composeStructureMapGroupComponent("group", e);
58649    }
58650  }
58651
58652  protected void composeStructureMapStructureComponent(String name, StructureMap.StructureMapStructureComponent element) throws IOException {
58653    if (element != null) {
58654    composeElementAttributes(element);
58655      xml.enter(FHIR_NS, name);
58656      composeStructureMapStructureComponentElements(element);
58657      composeElementClose(element);
58658      xml.exit(FHIR_NS, name);
58659    }
58660  }
58661
58662  protected void composeStructureMapStructureComponentElements(StructureMap.StructureMapStructureComponent element) throws IOException {
58663    composeBackboneElementElements(element);
58664    if (element.hasUrlElement()) {
58665      composeCanonical("url", element.getUrlElement());
58666    }
58667    if (element.hasModeElement())
58668      composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapModelModeEnumFactory());
58669    if (element.hasAliasElement()) {
58670      composeString("alias", element.getAliasElement());
58671    }
58672    if (element.hasDocumentationElement()) {
58673      composeString("documentation", element.getDocumentationElement());
58674    }
58675  }
58676
58677  protected void composeStructureMapConstComponent(String name, StructureMap.StructureMapConstComponent element) throws IOException {
58678    if (element != null) {
58679    composeElementAttributes(element);
58680      xml.enter(FHIR_NS, name);
58681      composeStructureMapConstComponentElements(element);
58682      composeElementClose(element);
58683      xml.exit(FHIR_NS, name);
58684    }
58685  }
58686
58687  protected void composeStructureMapConstComponentElements(StructureMap.StructureMapConstComponent element) throws IOException {
58688    composeBackboneElementElements(element);
58689    if (element.hasNameElement()) {
58690      composeId("name", element.getNameElement());
58691    }
58692    if (element.hasValueElement()) {
58693      composeString("value", element.getValueElement());
58694    }
58695  }
58696
58697  protected void composeStructureMapGroupComponent(String name, StructureMap.StructureMapGroupComponent element) throws IOException {
58698    if (element != null) {
58699    composeElementAttributes(element);
58700      xml.enter(FHIR_NS, name);
58701      composeStructureMapGroupComponentElements(element);
58702      composeElementClose(element);
58703      xml.exit(FHIR_NS, name);
58704    }
58705  }
58706
58707  protected void composeStructureMapGroupComponentElements(StructureMap.StructureMapGroupComponent element) throws IOException {
58708    composeBackboneElementElements(element);
58709    if (element.hasNameElement()) {
58710      composeId("name", element.getNameElement());
58711    }
58712    if (element.hasExtendsElement()) {
58713      composeId("extends", element.getExtendsElement());
58714    }
58715    if (element.hasTypeModeElement())
58716      composeEnumeration("typeMode", element.getTypeModeElement(), new StructureMap.StructureMapGroupTypeModeEnumFactory());
58717    if (element.hasDocumentationElement()) {
58718      composeString("documentation", element.getDocumentationElement());
58719    }
58720    if (element.hasInput()) { 
58721      for (StructureMap.StructureMapGroupInputComponent e : element.getInput()) 
58722          composeStructureMapGroupInputComponent("input", e);
58723    }
58724    if (element.hasRule()) { 
58725      for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
58726          composeStructureMapGroupRuleComponent("rule", e);
58727    }
58728  }
58729
58730  protected void composeStructureMapGroupInputComponent(String name, StructureMap.StructureMapGroupInputComponent element) throws IOException {
58731    if (element != null) {
58732    composeElementAttributes(element);
58733      xml.enter(FHIR_NS, name);
58734      composeStructureMapGroupInputComponentElements(element);
58735      composeElementClose(element);
58736      xml.exit(FHIR_NS, name);
58737    }
58738  }
58739
58740  protected void composeStructureMapGroupInputComponentElements(StructureMap.StructureMapGroupInputComponent element) throws IOException {
58741    composeBackboneElementElements(element);
58742    if (element.hasNameElement()) {
58743      composeId("name", element.getNameElement());
58744    }
58745    if (element.hasTypeElement()) {
58746      composeString("type", element.getTypeElement());
58747    }
58748    if (element.hasModeElement())
58749      composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapInputModeEnumFactory());
58750    if (element.hasDocumentationElement()) {
58751      composeString("documentation", element.getDocumentationElement());
58752    }
58753  }
58754
58755  protected void composeStructureMapGroupRuleComponent(String name, StructureMap.StructureMapGroupRuleComponent element) throws IOException {
58756    if (element != null) {
58757    composeElementAttributes(element);
58758      xml.enter(FHIR_NS, name);
58759      composeStructureMapGroupRuleComponentElements(element);
58760      composeElementClose(element);
58761      xml.exit(FHIR_NS, name);
58762    }
58763  }
58764
58765  protected void composeStructureMapGroupRuleComponentElements(StructureMap.StructureMapGroupRuleComponent element) throws IOException {
58766    composeBackboneElementElements(element);
58767    if (element.hasNameElement()) {
58768      composeId("name", element.getNameElement());
58769    }
58770    if (element.hasSource()) { 
58771      for (StructureMap.StructureMapGroupRuleSourceComponent e : element.getSource()) 
58772          composeStructureMapGroupRuleSourceComponent("source", e);
58773    }
58774    if (element.hasTarget()) { 
58775      for (StructureMap.StructureMapGroupRuleTargetComponent e : element.getTarget()) 
58776          composeStructureMapGroupRuleTargetComponent("target", e);
58777    }
58778    if (element.hasRule()) { 
58779      for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
58780          composeStructureMapGroupRuleComponent("rule", e);
58781    }
58782    if (element.hasDependent()) { 
58783      for (StructureMap.StructureMapGroupRuleDependentComponent e : element.getDependent()) 
58784          composeStructureMapGroupRuleDependentComponent("dependent", e);
58785    }
58786    if (element.hasDocumentationElement()) {
58787      composeString("documentation", element.getDocumentationElement());
58788    }
58789  }
58790
58791  protected void composeStructureMapGroupRuleSourceComponent(String name, StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
58792    if (element != null) {
58793    composeElementAttributes(element);
58794      xml.enter(FHIR_NS, name);
58795      composeStructureMapGroupRuleSourceComponentElements(element);
58796      composeElementClose(element);
58797      xml.exit(FHIR_NS, name);
58798    }
58799  }
58800
58801  protected void composeStructureMapGroupRuleSourceComponentElements(StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
58802    composeBackboneElementElements(element);
58803    if (element.hasContextElement()) {
58804      composeId("context", element.getContextElement());
58805    }
58806    if (element.hasMinElement()) {
58807      composeInteger("min", element.getMinElement());
58808    }
58809    if (element.hasMaxElement()) {
58810      composeString("max", element.getMaxElement());
58811    }
58812    if (element.hasTypeElement()) {
58813      composeString("type", element.getTypeElement());
58814    }
58815    if (element.hasDefaultValueElement()) {
58816      composeString("defaultValue", element.getDefaultValueElement());
58817    }
58818    if (element.hasElementElement()) {
58819      composeString("element", element.getElementElement());
58820    }
58821    if (element.hasListModeElement())
58822      composeEnumeration("listMode", element.getListModeElement(), new StructureMap.StructureMapSourceListModeEnumFactory());
58823    if (element.hasVariableElement()) {
58824      composeId("variable", element.getVariableElement());
58825    }
58826    if (element.hasConditionElement()) {
58827      composeString("condition", element.getConditionElement());
58828    }
58829    if (element.hasCheckElement()) {
58830      composeString("check", element.getCheckElement());
58831    }
58832    if (element.hasLogMessageElement()) {
58833      composeString("logMessage", element.getLogMessageElement());
58834    }
58835  }
58836
58837  protected void composeStructureMapGroupRuleTargetComponent(String name, StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
58838    if (element != null) {
58839    composeElementAttributes(element);
58840      xml.enter(FHIR_NS, name);
58841      composeStructureMapGroupRuleTargetComponentElements(element);
58842      composeElementClose(element);
58843      xml.exit(FHIR_NS, name);
58844    }
58845  }
58846
58847  protected void composeStructureMapGroupRuleTargetComponentElements(StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
58848    composeBackboneElementElements(element);
58849    if (element.hasContextElement()) {
58850      composeString("context", element.getContextElement());
58851    }
58852    if (element.hasElementElement()) {
58853      composeString("element", element.getElementElement());
58854    }
58855    if (element.hasVariableElement()) {
58856      composeId("variable", element.getVariableElement());
58857    }
58858      if (element.hasListMode()) 
58859        for (Enumeration<StructureMap.StructureMapTargetListMode> e : element.getListMode()) 
58860          composeEnumeration("listMode", e, new StructureMap.StructureMapTargetListModeEnumFactory());
58861    if (element.hasListRuleIdElement()) {
58862      composeId("listRuleId", element.getListRuleIdElement());
58863    }
58864    if (element.hasTransformElement())
58865      composeEnumeration("transform", element.getTransformElement(), new StructureMap.StructureMapTransformEnumFactory());
58866    if (element.hasParameter()) { 
58867      for (StructureMap.StructureMapGroupRuleTargetParameterComponent e : element.getParameter()) 
58868          composeStructureMapGroupRuleTargetParameterComponent("parameter", e);
58869    }
58870  }
58871
58872  protected void composeStructureMapGroupRuleTargetParameterComponent(String name, StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
58873    if (element != null) {
58874    composeElementAttributes(element);
58875      xml.enter(FHIR_NS, name);
58876      composeStructureMapGroupRuleTargetParameterComponentElements(element);
58877      composeElementClose(element);
58878      xml.exit(FHIR_NS, name);
58879    }
58880  }
58881
58882  protected void composeStructureMapGroupRuleTargetParameterComponentElements(StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
58883    composeBackboneElementElements(element);
58884    if (element.hasValue()) {
58885      composeType("value", element.getValue());
58886    }  }
58887
58888  protected void composeStructureMapGroupRuleDependentComponent(String name, StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
58889    if (element != null) {
58890    composeElementAttributes(element);
58891      xml.enter(FHIR_NS, name);
58892      composeStructureMapGroupRuleDependentComponentElements(element);
58893      composeElementClose(element);
58894      xml.exit(FHIR_NS, name);
58895    }
58896  }
58897
58898  protected void composeStructureMapGroupRuleDependentComponentElements(StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
58899    composeBackboneElementElements(element);
58900    if (element.hasNameElement()) {
58901      composeId("name", element.getNameElement());
58902    }
58903    if (element.hasParameter()) { 
58904      for (StructureMap.StructureMapGroupRuleTargetParameterComponent e : element.getParameter()) 
58905          composeStructureMapGroupRuleTargetParameterComponent("parameter", e);
58906    }
58907  }
58908
58909  protected void composeSubscription(String name, Subscription element) throws IOException {
58910    if (element != null) {
58911    composeResourceAttributes(element);
58912      xml.enter(FHIR_NS, name);
58913      composeSubscriptionElements(element);
58914      composeElementClose(element);
58915      xml.exit(FHIR_NS, name);
58916    }
58917  }
58918
58919  protected void composeSubscriptionElements(Subscription element) throws IOException {
58920    composeDomainResourceElements(element);
58921    if (element.hasIdentifier()) { 
58922      for (Identifier e : element.getIdentifier()) 
58923          composeIdentifier("identifier", e);
58924    }
58925    if (element.hasNameElement()) {
58926      composeString("name", element.getNameElement());
58927    }
58928    if (element.hasStatusElement())
58929      composeEnumeration("status", element.getStatusElement(), new Enumerations.SubscriptionStatusCodesEnumFactory());
58930    if (element.hasTopicElement()) {
58931      composeCanonical("topic", element.getTopicElement());
58932    }
58933    if (element.hasContact()) { 
58934      for (ContactPoint e : element.getContact()) 
58935          composeContactPoint("contact", e);
58936    }
58937    if (element.hasEndElement()) {
58938      composeInstant("end", element.getEndElement());
58939    }
58940    if (element.hasManagingEntity()) {
58941      composeReference("managingEntity", element.getManagingEntity());
58942    }
58943    if (element.hasReasonElement()) {
58944      composeString("reason", element.getReasonElement());
58945    }
58946    if (element.hasFilterBy()) { 
58947      for (Subscription.SubscriptionFilterByComponent e : element.getFilterBy()) 
58948          composeSubscriptionFilterByComponent("filterBy", e);
58949    }
58950    if (element.hasChannelType()) {
58951      composeCoding("channelType", element.getChannelType());
58952    }
58953    if (element.hasEndpointElement()) {
58954      composeUrl("endpoint", element.getEndpointElement());
58955    }
58956    if (element.hasParameter()) { 
58957      for (Subscription.SubscriptionParameterComponent e : element.getParameter()) 
58958          composeSubscriptionParameterComponent("parameter", e);
58959    }
58960    if (element.hasHeartbeatPeriodElement()) {
58961      composeUnsignedInt("heartbeatPeriod", element.getHeartbeatPeriodElement());
58962    }
58963    if (element.hasTimeoutElement()) {
58964      composeUnsignedInt("timeout", element.getTimeoutElement());
58965    }
58966    if (element.hasContentTypeElement()) {
58967      composeCode("contentType", element.getContentTypeElement());
58968    }
58969    if (element.hasContentElement())
58970      composeEnumeration("content", element.getContentElement(), new Subscription.SubscriptionPayloadContentEnumFactory());
58971    if (element.hasMaxCountElement()) {
58972      composePositiveInt("maxCount", element.getMaxCountElement());
58973    }
58974  }
58975
58976  protected void composeSubscriptionFilterByComponent(String name, Subscription.SubscriptionFilterByComponent element) throws IOException {
58977    if (element != null) {
58978    composeElementAttributes(element);
58979      xml.enter(FHIR_NS, name);
58980      composeSubscriptionFilterByComponentElements(element);
58981      composeElementClose(element);
58982      xml.exit(FHIR_NS, name);
58983    }
58984  }
58985
58986  protected void composeSubscriptionFilterByComponentElements(Subscription.SubscriptionFilterByComponent element) throws IOException {
58987    composeBackboneElementElements(element);
58988    if (element.hasResourceTypeElement()) {
58989      composeUri("resourceType", element.getResourceTypeElement());
58990    }
58991    if (element.hasFilterParameterElement()) {
58992      composeString("filterParameter", element.getFilterParameterElement());
58993    }
58994    if (element.hasComparatorElement())
58995      composeEnumeration("comparator", element.getComparatorElement(), new Enumerations.SearchComparatorEnumFactory());
58996    if (element.hasModifierElement())
58997      composeEnumeration("modifier", element.getModifierElement(), new Enumerations.SearchModifierCodeEnumFactory());
58998    if (element.hasValueElement()) {
58999      composeString("value", element.getValueElement());
59000    }
59001  }
59002
59003  protected void composeSubscriptionParameterComponent(String name, Subscription.SubscriptionParameterComponent element) throws IOException {
59004    if (element != null) {
59005    composeElementAttributes(element);
59006      xml.enter(FHIR_NS, name);
59007      composeSubscriptionParameterComponentElements(element);
59008      composeElementClose(element);
59009      xml.exit(FHIR_NS, name);
59010    }
59011  }
59012
59013  protected void composeSubscriptionParameterComponentElements(Subscription.SubscriptionParameterComponent element) throws IOException {
59014    composeBackboneElementElements(element);
59015    if (element.hasNameElement()) {
59016      composeString("name", element.getNameElement());
59017    }
59018    if (element.hasValueElement()) {
59019      composeString("value", element.getValueElement());
59020    }
59021  }
59022
59023  protected void composeSubscriptionStatus(String name, SubscriptionStatus element) throws IOException {
59024    if (element != null) {
59025    composeResourceAttributes(element);
59026      xml.enter(FHIR_NS, name);
59027      composeSubscriptionStatusElements(element);
59028      composeElementClose(element);
59029      xml.exit(FHIR_NS, name);
59030    }
59031  }
59032
59033  protected void composeSubscriptionStatusElements(SubscriptionStatus element) throws IOException {
59034    composeDomainResourceElements(element);
59035    if (element.hasStatusElement())
59036      composeEnumeration("status", element.getStatusElement(), new Enumerations.SubscriptionStatusCodesEnumFactory());
59037    if (element.hasTypeElement())
59038      composeEnumeration("type", element.getTypeElement(), new SubscriptionStatus.SubscriptionNotificationTypeEnumFactory());
59039    if (element.hasEventsSinceSubscriptionStartElement()) {
59040      composeInteger64("eventsSinceSubscriptionStart", element.getEventsSinceSubscriptionStartElement());
59041    }
59042    if (element.hasNotificationEvent()) { 
59043      for (SubscriptionStatus.SubscriptionStatusNotificationEventComponent e : element.getNotificationEvent()) 
59044          composeSubscriptionStatusNotificationEventComponent("notificationEvent", e);
59045    }
59046    if (element.hasSubscription()) {
59047      composeReference("subscription", element.getSubscription());
59048    }
59049    if (element.hasTopicElement()) {
59050      composeCanonical("topic", element.getTopicElement());
59051    }
59052    if (element.hasError()) { 
59053      for (CodeableConcept e : element.getError()) 
59054          composeCodeableConcept("error", e);
59055    }
59056  }
59057
59058  protected void composeSubscriptionStatusNotificationEventComponent(String name, SubscriptionStatus.SubscriptionStatusNotificationEventComponent element) throws IOException {
59059    if (element != null) {
59060    composeElementAttributes(element);
59061      xml.enter(FHIR_NS, name);
59062      composeSubscriptionStatusNotificationEventComponentElements(element);
59063      composeElementClose(element);
59064      xml.exit(FHIR_NS, name);
59065    }
59066  }
59067
59068  protected void composeSubscriptionStatusNotificationEventComponentElements(SubscriptionStatus.SubscriptionStatusNotificationEventComponent element) throws IOException {
59069    composeBackboneElementElements(element);
59070    if (element.hasEventNumberElement()) {
59071      composeInteger64("eventNumber", element.getEventNumberElement());
59072    }
59073    if (element.hasTimestampElement()) {
59074      composeInstant("timestamp", element.getTimestampElement());
59075    }
59076    if (element.hasFocus()) {
59077      composeReference("focus", element.getFocus());
59078    }
59079    if (element.hasAdditionalContext()) { 
59080      for (Reference e : element.getAdditionalContext()) 
59081          composeReference("additionalContext", e);
59082    }
59083  }
59084
59085  protected void composeSubscriptionTopic(String name, SubscriptionTopic element) throws IOException {
59086    if (element != null) {
59087    composeResourceAttributes(element);
59088      xml.enter(FHIR_NS, name);
59089      composeSubscriptionTopicElements(element);
59090      composeElementClose(element);
59091      xml.exit(FHIR_NS, name);
59092    }
59093  }
59094
59095  protected void composeSubscriptionTopicElements(SubscriptionTopic element) throws IOException {
59096    composeCanonicalResourceElements(element);
59097    if (element.hasUrlElement()) {
59098      composeUri("url", element.getUrlElement());
59099    }
59100    if (element.hasIdentifier()) { 
59101      for (Identifier e : element.getIdentifier()) 
59102          composeIdentifier("identifier", e);
59103    }
59104    if (element.hasVersionElement()) {
59105      composeString("version", element.getVersionElement());
59106    }
59107    if (element.hasVersionAlgorithm()) {
59108      composeType("versionAlgorithm", element.getVersionAlgorithm());
59109    }    if (element.hasNameElement()) {
59110      composeString("name", element.getNameElement());
59111    }
59112    if (element.hasTitleElement()) {
59113      composeString("title", element.getTitleElement());
59114    }
59115    if (element.hasDerivedFrom()) { 
59116      for (CanonicalType e : element.getDerivedFrom()) 
59117          composeCanonical("derivedFrom", e);
59118    }
59119    if (element.hasStatusElement())
59120      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
59121    if (element.hasExperimentalElement()) {
59122      composeBoolean("experimental", element.getExperimentalElement());
59123    }
59124    if (element.hasDateElement()) {
59125      composeDateTime("date", element.getDateElement());
59126    }
59127    if (element.hasPublisherElement()) {
59128      composeString("publisher", element.getPublisherElement());
59129    }
59130    if (element.hasContact()) { 
59131      for (ContactDetail e : element.getContact()) 
59132          composeContactDetail("contact", e);
59133    }
59134    if (element.hasDescriptionElement()) {
59135      composeMarkdown("description", element.getDescriptionElement());
59136    }
59137    if (element.hasUseContext()) { 
59138      for (UsageContext e : element.getUseContext()) 
59139          composeUsageContext("useContext", e);
59140    }
59141    if (element.hasJurisdiction()) { 
59142      for (CodeableConcept e : element.getJurisdiction()) 
59143          composeCodeableConcept("jurisdiction", e);
59144    }
59145    if (element.hasPurposeElement()) {
59146      composeMarkdown("purpose", element.getPurposeElement());
59147    }
59148    if (element.hasCopyrightElement()) {
59149      composeMarkdown("copyright", element.getCopyrightElement());
59150    }
59151    if (element.hasCopyrightLabelElement()) {
59152      composeString("copyrightLabel", element.getCopyrightLabelElement());
59153    }
59154    if (element.hasApprovalDateElement()) {
59155      composeDate("approvalDate", element.getApprovalDateElement());
59156    }
59157    if (element.hasLastReviewDateElement()) {
59158      composeDate("lastReviewDate", element.getLastReviewDateElement());
59159    }
59160    if (element.hasEffectivePeriod()) {
59161      composePeriod("effectivePeriod", element.getEffectivePeriod());
59162    }
59163    if (element.hasResourceTrigger()) { 
59164      for (SubscriptionTopic.SubscriptionTopicResourceTriggerComponent e : element.getResourceTrigger()) 
59165          composeSubscriptionTopicResourceTriggerComponent("resourceTrigger", e);
59166    }
59167    if (element.hasEventTrigger()) { 
59168      for (SubscriptionTopic.SubscriptionTopicEventTriggerComponent e : element.getEventTrigger()) 
59169          composeSubscriptionTopicEventTriggerComponent("eventTrigger", e);
59170    }
59171    if (element.hasCanFilterBy()) { 
59172      for (SubscriptionTopic.SubscriptionTopicCanFilterByComponent e : element.getCanFilterBy()) 
59173          composeSubscriptionTopicCanFilterByComponent("canFilterBy", e);
59174    }
59175    if (element.hasNotificationShape()) { 
59176      for (SubscriptionTopic.SubscriptionTopicNotificationShapeComponent e : element.getNotificationShape()) 
59177          composeSubscriptionTopicNotificationShapeComponent("notificationShape", e);
59178    }
59179  }
59180
59181  protected void composeSubscriptionTopicResourceTriggerComponent(String name, SubscriptionTopic.SubscriptionTopicResourceTriggerComponent element) throws IOException {
59182    if (element != null) {
59183    composeElementAttributes(element);
59184      xml.enter(FHIR_NS, name);
59185      composeSubscriptionTopicResourceTriggerComponentElements(element);
59186      composeElementClose(element);
59187      xml.exit(FHIR_NS, name);
59188    }
59189  }
59190
59191  protected void composeSubscriptionTopicResourceTriggerComponentElements(SubscriptionTopic.SubscriptionTopicResourceTriggerComponent element) throws IOException {
59192    composeBackboneElementElements(element);
59193    if (element.hasDescriptionElement()) {
59194      composeMarkdown("description", element.getDescriptionElement());
59195    }
59196    if (element.hasResourceElement()) {
59197      composeUri("resource", element.getResourceElement());
59198    }
59199      if (element.hasSupportedInteraction()) 
59200        for (Enumeration<SubscriptionTopic.InteractionTrigger> e : element.getSupportedInteraction()) 
59201          composeEnumeration("supportedInteraction", e, new SubscriptionTopic.InteractionTriggerEnumFactory());
59202    if (element.hasQueryCriteria()) {
59203      composeSubscriptionTopicResourceTriggerQueryCriteriaComponent("queryCriteria", element.getQueryCriteria());
59204    }
59205    if (element.hasFhirPathCriteriaElement()) {
59206      composeString("fhirPathCriteria", element.getFhirPathCriteriaElement());
59207    }
59208  }
59209
59210  protected void composeSubscriptionTopicResourceTriggerQueryCriteriaComponent(String name, SubscriptionTopic.SubscriptionTopicResourceTriggerQueryCriteriaComponent element) throws IOException {
59211    if (element != null) {
59212    composeElementAttributes(element);
59213      xml.enter(FHIR_NS, name);
59214      composeSubscriptionTopicResourceTriggerQueryCriteriaComponentElements(element);
59215      composeElementClose(element);
59216      xml.exit(FHIR_NS, name);
59217    }
59218  }
59219
59220  protected void composeSubscriptionTopicResourceTriggerQueryCriteriaComponentElements(SubscriptionTopic.SubscriptionTopicResourceTriggerQueryCriteriaComponent element) throws IOException {
59221    composeBackboneElementElements(element);
59222    if (element.hasPreviousElement()) {
59223      composeString("previous", element.getPreviousElement());
59224    }
59225    if (element.hasResultForCreateElement())
59226      composeEnumeration("resultForCreate", element.getResultForCreateElement(), new SubscriptionTopic.CriteriaNotExistsBehaviorEnumFactory());
59227    if (element.hasCurrentElement()) {
59228      composeString("current", element.getCurrentElement());
59229    }
59230    if (element.hasResultForDeleteElement())
59231      composeEnumeration("resultForDelete", element.getResultForDeleteElement(), new SubscriptionTopic.CriteriaNotExistsBehaviorEnumFactory());
59232    if (element.hasRequireBothElement()) {
59233      composeBoolean("requireBoth", element.getRequireBothElement());
59234    }
59235  }
59236
59237  protected void composeSubscriptionTopicEventTriggerComponent(String name, SubscriptionTopic.SubscriptionTopicEventTriggerComponent element) throws IOException {
59238    if (element != null) {
59239    composeElementAttributes(element);
59240      xml.enter(FHIR_NS, name);
59241      composeSubscriptionTopicEventTriggerComponentElements(element);
59242      composeElementClose(element);
59243      xml.exit(FHIR_NS, name);
59244    }
59245  }
59246
59247  protected void composeSubscriptionTopicEventTriggerComponentElements(SubscriptionTopic.SubscriptionTopicEventTriggerComponent element) throws IOException {
59248    composeBackboneElementElements(element);
59249    if (element.hasDescriptionElement()) {
59250      composeMarkdown("description", element.getDescriptionElement());
59251    }
59252    if (element.hasEvent()) {
59253      composeCodeableConcept("event", element.getEvent());
59254    }
59255    if (element.hasResourceElement()) {
59256      composeUri("resource", element.getResourceElement());
59257    }
59258  }
59259
59260  protected void composeSubscriptionTopicCanFilterByComponent(String name, SubscriptionTopic.SubscriptionTopicCanFilterByComponent element) throws IOException {
59261    if (element != null) {
59262    composeElementAttributes(element);
59263      xml.enter(FHIR_NS, name);
59264      composeSubscriptionTopicCanFilterByComponentElements(element);
59265      composeElementClose(element);
59266      xml.exit(FHIR_NS, name);
59267    }
59268  }
59269
59270  protected void composeSubscriptionTopicCanFilterByComponentElements(SubscriptionTopic.SubscriptionTopicCanFilterByComponent element) throws IOException {
59271    composeBackboneElementElements(element);
59272    if (element.hasDescriptionElement()) {
59273      composeMarkdown("description", element.getDescriptionElement());
59274    }
59275    if (element.hasResourceElement()) {
59276      composeUri("resource", element.getResourceElement());
59277    }
59278    if (element.hasFilterParameterElement()) {
59279      composeString("filterParameter", element.getFilterParameterElement());
59280    }
59281    if (element.hasFilterDefinitionElement()) {
59282      composeUri("filterDefinition", element.getFilterDefinitionElement());
59283    }
59284      if (element.hasComparator()) 
59285        for (Enumeration<Enumerations.SearchComparator> e : element.getComparator()) 
59286          composeEnumeration("comparator", e, new Enumerations.SearchComparatorEnumFactory());
59287      if (element.hasModifier()) 
59288        for (Enumeration<Enumerations.SearchModifierCode> e : element.getModifier()) 
59289          composeEnumeration("modifier", e, new Enumerations.SearchModifierCodeEnumFactory());
59290  }
59291
59292  protected void composeSubscriptionTopicNotificationShapeComponent(String name, SubscriptionTopic.SubscriptionTopicNotificationShapeComponent element) throws IOException {
59293    if (element != null) {
59294    composeElementAttributes(element);
59295      xml.enter(FHIR_NS, name);
59296      composeSubscriptionTopicNotificationShapeComponentElements(element);
59297      composeElementClose(element);
59298      xml.exit(FHIR_NS, name);
59299    }
59300  }
59301
59302  protected void composeSubscriptionTopicNotificationShapeComponentElements(SubscriptionTopic.SubscriptionTopicNotificationShapeComponent element) throws IOException {
59303    composeBackboneElementElements(element);
59304    if (element.hasResourceElement()) {
59305      composeUri("resource", element.getResourceElement());
59306    }
59307    if (element.hasInclude()) { 
59308      for (StringType e : element.getInclude()) 
59309          composeString("include", e);
59310    }
59311    if (element.hasRevInclude()) { 
59312      for (StringType e : element.getRevInclude()) 
59313          composeString("revInclude", e);
59314    }
59315  }
59316
59317  protected void composeSubstance(String name, Substance element) throws IOException {
59318    if (element != null) {
59319    composeResourceAttributes(element);
59320      xml.enter(FHIR_NS, name);
59321      composeSubstanceElements(element);
59322      composeElementClose(element);
59323      xml.exit(FHIR_NS, name);
59324    }
59325  }
59326
59327  protected void composeSubstanceElements(Substance element) throws IOException {
59328    composeDomainResourceElements(element);
59329    if (element.hasIdentifier()) { 
59330      for (Identifier e : element.getIdentifier()) 
59331          composeIdentifier("identifier", e);
59332    }
59333    if (element.hasInstanceElement()) {
59334      composeBoolean("instance", element.getInstanceElement());
59335    }
59336    if (element.hasStatusElement())
59337      composeEnumeration("status", element.getStatusElement(), new Substance.FHIRSubstanceStatusEnumFactory());
59338    if (element.hasCategory()) { 
59339      for (CodeableConcept e : element.getCategory()) 
59340          composeCodeableConcept("category", e);
59341    }
59342    if (element.hasCode()) {
59343      composeCodeableReference("code", element.getCode());
59344    }
59345    if (element.hasDescriptionElement()) {
59346      composeMarkdown("description", element.getDescriptionElement());
59347    }
59348    if (element.hasExpiryElement()) {
59349      composeDateTime("expiry", element.getExpiryElement());
59350    }
59351    if (element.hasQuantity()) {
59352      composeQuantity("quantity", element.getQuantity());
59353    }
59354    if (element.hasIngredient()) { 
59355      for (Substance.SubstanceIngredientComponent e : element.getIngredient()) 
59356          composeSubstanceIngredientComponent("ingredient", e);
59357    }
59358  }
59359
59360  protected void composeSubstanceIngredientComponent(String name, Substance.SubstanceIngredientComponent element) throws IOException {
59361    if (element != null) {
59362    composeElementAttributes(element);
59363      xml.enter(FHIR_NS, name);
59364      composeSubstanceIngredientComponentElements(element);
59365      composeElementClose(element);
59366      xml.exit(FHIR_NS, name);
59367    }
59368  }
59369
59370  protected void composeSubstanceIngredientComponentElements(Substance.SubstanceIngredientComponent element) throws IOException {
59371    composeBackboneElementElements(element);
59372    if (element.hasQuantity()) {
59373      composeRatio("quantity", element.getQuantity());
59374    }
59375    if (element.hasSubstance()) {
59376      composeType("substance", element.getSubstance());
59377    }  }
59378
59379  protected void composeSubstanceDefinition(String name, SubstanceDefinition element) throws IOException {
59380    if (element != null) {
59381    composeResourceAttributes(element);
59382      xml.enter(FHIR_NS, name);
59383      composeSubstanceDefinitionElements(element);
59384      composeElementClose(element);
59385      xml.exit(FHIR_NS, name);
59386    }
59387  }
59388
59389  protected void composeSubstanceDefinitionElements(SubstanceDefinition element) throws IOException {
59390    composeDomainResourceElements(element);
59391    if (element.hasIdentifier()) { 
59392      for (Identifier e : element.getIdentifier()) 
59393          composeIdentifier("identifier", e);
59394    }
59395    if (element.hasVersionElement()) {
59396      composeString("version", element.getVersionElement());
59397    }
59398    if (element.hasStatus()) {
59399      composeCodeableConcept("status", element.getStatus());
59400    }
59401    if (element.hasClassification()) { 
59402      for (CodeableConcept e : element.getClassification()) 
59403          composeCodeableConcept("classification", e);
59404    }
59405    if (element.hasDomain()) {
59406      composeCodeableConcept("domain", element.getDomain());
59407    }
59408    if (element.hasGrade()) { 
59409      for (CodeableConcept e : element.getGrade()) 
59410          composeCodeableConcept("grade", e);
59411    }
59412    if (element.hasDescriptionElement()) {
59413      composeMarkdown("description", element.getDescriptionElement());
59414    }
59415    if (element.hasInformationSource()) { 
59416      for (Reference e : element.getInformationSource()) 
59417          composeReference("informationSource", e);
59418    }
59419    if (element.hasNote()) { 
59420      for (Annotation e : element.getNote()) 
59421          composeAnnotation("note", e);
59422    }
59423    if (element.hasManufacturer()) { 
59424      for (Reference e : element.getManufacturer()) 
59425          composeReference("manufacturer", e);
59426    }
59427    if (element.hasSupplier()) { 
59428      for (Reference e : element.getSupplier()) 
59429          composeReference("supplier", e);
59430    }
59431    if (element.hasMoiety()) { 
59432      for (SubstanceDefinition.SubstanceDefinitionMoietyComponent e : element.getMoiety()) 
59433          composeSubstanceDefinitionMoietyComponent("moiety", e);
59434    }
59435    if (element.hasCharacterization()) { 
59436      for (SubstanceDefinition.SubstanceDefinitionCharacterizationComponent e : element.getCharacterization()) 
59437          composeSubstanceDefinitionCharacterizationComponent("characterization", e);
59438    }
59439    if (element.hasProperty()) { 
59440      for (SubstanceDefinition.SubstanceDefinitionPropertyComponent e : element.getProperty()) 
59441          composeSubstanceDefinitionPropertyComponent("property", e);
59442    }
59443    if (element.hasReferenceInformation()) {
59444      composeReference("referenceInformation", element.getReferenceInformation());
59445    }
59446    if (element.hasMolecularWeight()) { 
59447      for (SubstanceDefinition.SubstanceDefinitionMolecularWeightComponent e : element.getMolecularWeight()) 
59448          composeSubstanceDefinitionMolecularWeightComponent("molecularWeight", e);
59449    }
59450    if (element.hasStructure()) {
59451      composeSubstanceDefinitionStructureComponent("structure", element.getStructure());
59452    }
59453    if (element.hasCode()) { 
59454      for (SubstanceDefinition.SubstanceDefinitionCodeComponent e : element.getCode()) 
59455          composeSubstanceDefinitionCodeComponent("code", e);
59456    }
59457    if (element.hasName()) { 
59458      for (SubstanceDefinition.SubstanceDefinitionNameComponent e : element.getName()) 
59459          composeSubstanceDefinitionNameComponent("name", e);
59460    }
59461    if (element.hasRelationship()) { 
59462      for (SubstanceDefinition.SubstanceDefinitionRelationshipComponent e : element.getRelationship()) 
59463          composeSubstanceDefinitionRelationshipComponent("relationship", e);
59464    }
59465    if (element.hasNucleicAcid()) {
59466      composeReference("nucleicAcid", element.getNucleicAcid());
59467    }
59468    if (element.hasPolymer()) {
59469      composeReference("polymer", element.getPolymer());
59470    }
59471    if (element.hasProtein()) {
59472      composeReference("protein", element.getProtein());
59473    }
59474    if (element.hasSourceMaterial()) {
59475      composeSubstanceDefinitionSourceMaterialComponent("sourceMaterial", element.getSourceMaterial());
59476    }
59477  }
59478
59479  protected void composeSubstanceDefinitionMoietyComponent(String name, SubstanceDefinition.SubstanceDefinitionMoietyComponent element) throws IOException {
59480    if (element != null) {
59481    composeElementAttributes(element);
59482      xml.enter(FHIR_NS, name);
59483      composeSubstanceDefinitionMoietyComponentElements(element);
59484      composeElementClose(element);
59485      xml.exit(FHIR_NS, name);
59486    }
59487  }
59488
59489  protected void composeSubstanceDefinitionMoietyComponentElements(SubstanceDefinition.SubstanceDefinitionMoietyComponent element) throws IOException {
59490    composeBackboneElementElements(element);
59491    if (element.hasRole()) {
59492      composeCodeableConcept("role", element.getRole());
59493    }
59494    if (element.hasIdentifier()) {
59495      composeIdentifier("identifier", element.getIdentifier());
59496    }
59497    if (element.hasNameElement()) {
59498      composeString("name", element.getNameElement());
59499    }
59500    if (element.hasStereochemistry()) {
59501      composeCodeableConcept("stereochemistry", element.getStereochemistry());
59502    }
59503    if (element.hasOpticalActivity()) {
59504      composeCodeableConcept("opticalActivity", element.getOpticalActivity());
59505    }
59506    if (element.hasMolecularFormulaElement()) {
59507      composeString("molecularFormula", element.getMolecularFormulaElement());
59508    }
59509    if (element.hasAmount()) {
59510      composeType("amount", element.getAmount());
59511    }    if (element.hasMeasurementType()) {
59512      composeCodeableConcept("measurementType", element.getMeasurementType());
59513    }
59514  }
59515
59516  protected void composeSubstanceDefinitionCharacterizationComponent(String name, SubstanceDefinition.SubstanceDefinitionCharacterizationComponent element) throws IOException {
59517    if (element != null) {
59518    composeElementAttributes(element);
59519      xml.enter(FHIR_NS, name);
59520      composeSubstanceDefinitionCharacterizationComponentElements(element);
59521      composeElementClose(element);
59522      xml.exit(FHIR_NS, name);
59523    }
59524  }
59525
59526  protected void composeSubstanceDefinitionCharacterizationComponentElements(SubstanceDefinition.SubstanceDefinitionCharacterizationComponent element) throws IOException {
59527    composeBackboneElementElements(element);
59528    if (element.hasTechnique()) {
59529      composeCodeableConcept("technique", element.getTechnique());
59530    }
59531    if (element.hasForm()) {
59532      composeCodeableConcept("form", element.getForm());
59533    }
59534    if (element.hasDescriptionElement()) {
59535      composeMarkdown("description", element.getDescriptionElement());
59536    }
59537    if (element.hasFile()) { 
59538      for (Attachment e : element.getFile()) 
59539          composeAttachment("file", e);
59540    }
59541  }
59542
59543  protected void composeSubstanceDefinitionPropertyComponent(String name, SubstanceDefinition.SubstanceDefinitionPropertyComponent element) throws IOException {
59544    if (element != null) {
59545    composeElementAttributes(element);
59546      xml.enter(FHIR_NS, name);
59547      composeSubstanceDefinitionPropertyComponentElements(element);
59548      composeElementClose(element);
59549      xml.exit(FHIR_NS, name);
59550    }
59551  }
59552
59553  protected void composeSubstanceDefinitionPropertyComponentElements(SubstanceDefinition.SubstanceDefinitionPropertyComponent element) throws IOException {
59554    composeBackboneElementElements(element);
59555    if (element.hasType()) {
59556      composeCodeableConcept("type", element.getType());
59557    }
59558    if (element.hasValue()) {
59559      composeType("value", element.getValue());
59560    }  }
59561
59562  protected void composeSubstanceDefinitionMolecularWeightComponent(String name, SubstanceDefinition.SubstanceDefinitionMolecularWeightComponent element) throws IOException {
59563    if (element != null) {
59564    composeElementAttributes(element);
59565      xml.enter(FHIR_NS, name);
59566      composeSubstanceDefinitionMolecularWeightComponentElements(element);
59567      composeElementClose(element);
59568      xml.exit(FHIR_NS, name);
59569    }
59570  }
59571
59572  protected void composeSubstanceDefinitionMolecularWeightComponentElements(SubstanceDefinition.SubstanceDefinitionMolecularWeightComponent element) throws IOException {
59573    composeBackboneElementElements(element);
59574    if (element.hasMethod()) {
59575      composeCodeableConcept("method", element.getMethod());
59576    }
59577    if (element.hasType()) {
59578      composeCodeableConcept("type", element.getType());
59579    }
59580    if (element.hasAmount()) {
59581      composeQuantity("amount", element.getAmount());
59582    }
59583  }
59584
59585  protected void composeSubstanceDefinitionStructureComponent(String name, SubstanceDefinition.SubstanceDefinitionStructureComponent element) throws IOException {
59586    if (element != null) {
59587    composeElementAttributes(element);
59588      xml.enter(FHIR_NS, name);
59589      composeSubstanceDefinitionStructureComponentElements(element);
59590      composeElementClose(element);
59591      xml.exit(FHIR_NS, name);
59592    }
59593  }
59594
59595  protected void composeSubstanceDefinitionStructureComponentElements(SubstanceDefinition.SubstanceDefinitionStructureComponent element) throws IOException {
59596    composeBackboneElementElements(element);
59597    if (element.hasStereochemistry()) {
59598      composeCodeableConcept("stereochemistry", element.getStereochemistry());
59599    }
59600    if (element.hasOpticalActivity()) {
59601      composeCodeableConcept("opticalActivity", element.getOpticalActivity());
59602    }
59603    if (element.hasMolecularFormulaElement()) {
59604      composeString("molecularFormula", element.getMolecularFormulaElement());
59605    }
59606    if (element.hasMolecularFormulaByMoietyElement()) {
59607      composeString("molecularFormulaByMoiety", element.getMolecularFormulaByMoietyElement());
59608    }
59609    if (element.hasMolecularWeight()) {
59610      composeSubstanceDefinitionMolecularWeightComponent("molecularWeight", element.getMolecularWeight());
59611    }
59612    if (element.hasTechnique()) { 
59613      for (CodeableConcept e : element.getTechnique()) 
59614          composeCodeableConcept("technique", e);
59615    }
59616    if (element.hasSourceDocument()) { 
59617      for (Reference e : element.getSourceDocument()) 
59618          composeReference("sourceDocument", e);
59619    }
59620    if (element.hasRepresentation()) { 
59621      for (SubstanceDefinition.SubstanceDefinitionStructureRepresentationComponent e : element.getRepresentation()) 
59622          composeSubstanceDefinitionStructureRepresentationComponent("representation", e);
59623    }
59624  }
59625
59626  protected void composeSubstanceDefinitionStructureRepresentationComponent(String name, SubstanceDefinition.SubstanceDefinitionStructureRepresentationComponent element) throws IOException {
59627    if (element != null) {
59628    composeElementAttributes(element);
59629      xml.enter(FHIR_NS, name);
59630      composeSubstanceDefinitionStructureRepresentationComponentElements(element);
59631      composeElementClose(element);
59632      xml.exit(FHIR_NS, name);
59633    }
59634  }
59635
59636  protected void composeSubstanceDefinitionStructureRepresentationComponentElements(SubstanceDefinition.SubstanceDefinitionStructureRepresentationComponent element) throws IOException {
59637    composeBackboneElementElements(element);
59638    if (element.hasType()) {
59639      composeCodeableConcept("type", element.getType());
59640    }
59641    if (element.hasRepresentationElement()) {
59642      composeString("representation", element.getRepresentationElement());
59643    }
59644    if (element.hasFormat()) {
59645      composeCodeableConcept("format", element.getFormat());
59646    }
59647    if (element.hasDocument()) {
59648      composeReference("document", element.getDocument());
59649    }
59650  }
59651
59652  protected void composeSubstanceDefinitionCodeComponent(String name, SubstanceDefinition.SubstanceDefinitionCodeComponent element) throws IOException {
59653    if (element != null) {
59654    composeElementAttributes(element);
59655      xml.enter(FHIR_NS, name);
59656      composeSubstanceDefinitionCodeComponentElements(element);
59657      composeElementClose(element);
59658      xml.exit(FHIR_NS, name);
59659    }
59660  }
59661
59662  protected void composeSubstanceDefinitionCodeComponentElements(SubstanceDefinition.SubstanceDefinitionCodeComponent element) throws IOException {
59663    composeBackboneElementElements(element);
59664    if (element.hasCode()) {
59665      composeCodeableConcept("code", element.getCode());
59666    }
59667    if (element.hasStatus()) {
59668      composeCodeableConcept("status", element.getStatus());
59669    }
59670    if (element.hasStatusDateElement()) {
59671      composeDateTime("statusDate", element.getStatusDateElement());
59672    }
59673    if (element.hasNote()) { 
59674      for (Annotation e : element.getNote()) 
59675          composeAnnotation("note", e);
59676    }
59677    if (element.hasSource()) { 
59678      for (Reference e : element.getSource()) 
59679          composeReference("source", e);
59680    }
59681  }
59682
59683  protected void composeSubstanceDefinitionNameComponent(String name, SubstanceDefinition.SubstanceDefinitionNameComponent element) throws IOException {
59684    if (element != null) {
59685    composeElementAttributes(element);
59686      xml.enter(FHIR_NS, name);
59687      composeSubstanceDefinitionNameComponentElements(element);
59688      composeElementClose(element);
59689      xml.exit(FHIR_NS, name);
59690    }
59691  }
59692
59693  protected void composeSubstanceDefinitionNameComponentElements(SubstanceDefinition.SubstanceDefinitionNameComponent element) throws IOException {
59694    composeBackboneElementElements(element);
59695    if (element.hasNameElement()) {
59696      composeString("name", element.getNameElement());
59697    }
59698    if (element.hasType()) {
59699      composeCodeableConcept("type", element.getType());
59700    }
59701    if (element.hasStatus()) {
59702      composeCodeableConcept("status", element.getStatus());
59703    }
59704    if (element.hasPreferredElement()) {
59705      composeBoolean("preferred", element.getPreferredElement());
59706    }
59707    if (element.hasLanguage()) { 
59708      for (CodeableConcept e : element.getLanguage()) 
59709          composeCodeableConcept("language", e);
59710    }
59711    if (element.hasDomain()) { 
59712      for (CodeableConcept e : element.getDomain()) 
59713          composeCodeableConcept("domain", e);
59714    }
59715    if (element.hasJurisdiction()) { 
59716      for (CodeableConcept e : element.getJurisdiction()) 
59717          composeCodeableConcept("jurisdiction", e);
59718    }
59719    if (element.hasSynonym()) { 
59720      for (SubstanceDefinition.SubstanceDefinitionNameComponent e : element.getSynonym()) 
59721          composeSubstanceDefinitionNameComponent("synonym", e);
59722    }
59723    if (element.hasTranslation()) { 
59724      for (SubstanceDefinition.SubstanceDefinitionNameComponent e : element.getTranslation()) 
59725          composeSubstanceDefinitionNameComponent("translation", e);
59726    }
59727    if (element.hasOfficial()) { 
59728      for (SubstanceDefinition.SubstanceDefinitionNameOfficialComponent e : element.getOfficial()) 
59729          composeSubstanceDefinitionNameOfficialComponent("official", e);
59730    }
59731    if (element.hasSource()) { 
59732      for (Reference e : element.getSource()) 
59733          composeReference("source", e);
59734    }
59735  }
59736
59737  protected void composeSubstanceDefinitionNameOfficialComponent(String name, SubstanceDefinition.SubstanceDefinitionNameOfficialComponent element) throws IOException {
59738    if (element != null) {
59739    composeElementAttributes(element);
59740      xml.enter(FHIR_NS, name);
59741      composeSubstanceDefinitionNameOfficialComponentElements(element);
59742      composeElementClose(element);
59743      xml.exit(FHIR_NS, name);
59744    }
59745  }
59746
59747  protected void composeSubstanceDefinitionNameOfficialComponentElements(SubstanceDefinition.SubstanceDefinitionNameOfficialComponent element) throws IOException {
59748    composeBackboneElementElements(element);
59749    if (element.hasAuthority()) {
59750      composeCodeableConcept("authority", element.getAuthority());
59751    }
59752    if (element.hasStatus()) {
59753      composeCodeableConcept("status", element.getStatus());
59754    }
59755    if (element.hasDateElement()) {
59756      composeDateTime("date", element.getDateElement());
59757    }
59758  }
59759
59760  protected void composeSubstanceDefinitionRelationshipComponent(String name, SubstanceDefinition.SubstanceDefinitionRelationshipComponent element) throws IOException {
59761    if (element != null) {
59762    composeElementAttributes(element);
59763      xml.enter(FHIR_NS, name);
59764      composeSubstanceDefinitionRelationshipComponentElements(element);
59765      composeElementClose(element);
59766      xml.exit(FHIR_NS, name);
59767    }
59768  }
59769
59770  protected void composeSubstanceDefinitionRelationshipComponentElements(SubstanceDefinition.SubstanceDefinitionRelationshipComponent element) throws IOException {
59771    composeBackboneElementElements(element);
59772    if (element.hasSubstanceDefinition()) {
59773      composeType("substanceDefinition", element.getSubstanceDefinition());
59774    }    if (element.hasType()) {
59775      composeCodeableConcept("type", element.getType());
59776    }
59777    if (element.hasIsDefiningElement()) {
59778      composeBoolean("isDefining", element.getIsDefiningElement());
59779    }
59780    if (element.hasAmount()) {
59781      composeType("amount", element.getAmount());
59782    }    if (element.hasRatioHighLimitAmount()) {
59783      composeRatio("ratioHighLimitAmount", element.getRatioHighLimitAmount());
59784    }
59785    if (element.hasComparator()) {
59786      composeCodeableConcept("comparator", element.getComparator());
59787    }
59788    if (element.hasSource()) { 
59789      for (Reference e : element.getSource()) 
59790          composeReference("source", e);
59791    }
59792  }
59793
59794  protected void composeSubstanceDefinitionSourceMaterialComponent(String name, SubstanceDefinition.SubstanceDefinitionSourceMaterialComponent element) throws IOException {
59795    if (element != null) {
59796    composeElementAttributes(element);
59797      xml.enter(FHIR_NS, name);
59798      composeSubstanceDefinitionSourceMaterialComponentElements(element);
59799      composeElementClose(element);
59800      xml.exit(FHIR_NS, name);
59801    }
59802  }
59803
59804  protected void composeSubstanceDefinitionSourceMaterialComponentElements(SubstanceDefinition.SubstanceDefinitionSourceMaterialComponent element) throws IOException {
59805    composeBackboneElementElements(element);
59806    if (element.hasType()) {
59807      composeCodeableConcept("type", element.getType());
59808    }
59809    if (element.hasGenus()) {
59810      composeCodeableConcept("genus", element.getGenus());
59811    }
59812    if (element.hasSpecies()) {
59813      composeCodeableConcept("species", element.getSpecies());
59814    }
59815    if (element.hasPart()) {
59816      composeCodeableConcept("part", element.getPart());
59817    }
59818    if (element.hasCountryOfOrigin()) { 
59819      for (CodeableConcept e : element.getCountryOfOrigin()) 
59820          composeCodeableConcept("countryOfOrigin", e);
59821    }
59822  }
59823
59824  protected void composeSubstanceNucleicAcid(String name, SubstanceNucleicAcid element) throws IOException {
59825    if (element != null) {
59826    composeResourceAttributes(element);
59827      xml.enter(FHIR_NS, name);
59828      composeSubstanceNucleicAcidElements(element);
59829      composeElementClose(element);
59830      xml.exit(FHIR_NS, name);
59831    }
59832  }
59833
59834  protected void composeSubstanceNucleicAcidElements(SubstanceNucleicAcid element) throws IOException {
59835    composeDomainResourceElements(element);
59836    if (element.hasSequenceType()) {
59837      composeCodeableConcept("sequenceType", element.getSequenceType());
59838    }
59839    if (element.hasNumberOfSubunitsElement()) {
59840      composeInteger("numberOfSubunits", element.getNumberOfSubunitsElement());
59841    }
59842    if (element.hasAreaOfHybridisationElement()) {
59843      composeString("areaOfHybridisation", element.getAreaOfHybridisationElement());
59844    }
59845    if (element.hasOligoNucleotideType()) {
59846      composeCodeableConcept("oligoNucleotideType", element.getOligoNucleotideType());
59847    }
59848    if (element.hasSubunit()) { 
59849      for (SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent e : element.getSubunit()) 
59850          composeSubstanceNucleicAcidSubunitComponent("subunit", e);
59851    }
59852  }
59853
59854  protected void composeSubstanceNucleicAcidSubunitComponent(String name, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent element) throws IOException {
59855    if (element != null) {
59856    composeElementAttributes(element);
59857      xml.enter(FHIR_NS, name);
59858      composeSubstanceNucleicAcidSubunitComponentElements(element);
59859      composeElementClose(element);
59860      xml.exit(FHIR_NS, name);
59861    }
59862  }
59863
59864  protected void composeSubstanceNucleicAcidSubunitComponentElements(SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent element) throws IOException {
59865    composeBackboneElementElements(element);
59866    if (element.hasSubunitElement()) {
59867      composeInteger("subunit", element.getSubunitElement());
59868    }
59869    if (element.hasSequenceElement()) {
59870      composeString("sequence", element.getSequenceElement());
59871    }
59872    if (element.hasLengthElement()) {
59873      composeInteger("length", element.getLengthElement());
59874    }
59875    if (element.hasSequenceAttachment()) {
59876      composeAttachment("sequenceAttachment", element.getSequenceAttachment());
59877    }
59878    if (element.hasFivePrime()) {
59879      composeCodeableConcept("fivePrime", element.getFivePrime());
59880    }
59881    if (element.hasThreePrime()) {
59882      composeCodeableConcept("threePrime", element.getThreePrime());
59883    }
59884    if (element.hasLinkage()) { 
59885      for (SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent e : element.getLinkage()) 
59886          composeSubstanceNucleicAcidSubunitLinkageComponent("linkage", e);
59887    }
59888    if (element.hasSugar()) { 
59889      for (SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent e : element.getSugar()) 
59890          composeSubstanceNucleicAcidSubunitSugarComponent("sugar", e);
59891    }
59892  }
59893
59894  protected void composeSubstanceNucleicAcidSubunitLinkageComponent(String name, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent element) throws IOException {
59895    if (element != null) {
59896    composeElementAttributes(element);
59897      xml.enter(FHIR_NS, name);
59898      composeSubstanceNucleicAcidSubunitLinkageComponentElements(element);
59899      composeElementClose(element);
59900      xml.exit(FHIR_NS, name);
59901    }
59902  }
59903
59904  protected void composeSubstanceNucleicAcidSubunitLinkageComponentElements(SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent element) throws IOException {
59905    composeBackboneElementElements(element);
59906    if (element.hasConnectivityElement()) {
59907      composeString("connectivity", element.getConnectivityElement());
59908    }
59909    if (element.hasIdentifier()) {
59910      composeIdentifier("identifier", element.getIdentifier());
59911    }
59912    if (element.hasNameElement()) {
59913      composeString("name", element.getNameElement());
59914    }
59915    if (element.hasResidueSiteElement()) {
59916      composeString("residueSite", element.getResidueSiteElement());
59917    }
59918  }
59919
59920  protected void composeSubstanceNucleicAcidSubunitSugarComponent(String name, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent element) throws IOException {
59921    if (element != null) {
59922    composeElementAttributes(element);
59923      xml.enter(FHIR_NS, name);
59924      composeSubstanceNucleicAcidSubunitSugarComponentElements(element);
59925      composeElementClose(element);
59926      xml.exit(FHIR_NS, name);
59927    }
59928  }
59929
59930  protected void composeSubstanceNucleicAcidSubunitSugarComponentElements(SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent element) throws IOException {
59931    composeBackboneElementElements(element);
59932    if (element.hasIdentifier()) {
59933      composeIdentifier("identifier", element.getIdentifier());
59934    }
59935    if (element.hasNameElement()) {
59936      composeString("name", element.getNameElement());
59937    }
59938    if (element.hasResidueSiteElement()) {
59939      composeString("residueSite", element.getResidueSiteElement());
59940    }
59941  }
59942
59943  protected void composeSubstancePolymer(String name, SubstancePolymer element) throws IOException {
59944    if (element != null) {
59945    composeResourceAttributes(element);
59946      xml.enter(FHIR_NS, name);
59947      composeSubstancePolymerElements(element);
59948      composeElementClose(element);
59949      xml.exit(FHIR_NS, name);
59950    }
59951  }
59952
59953  protected void composeSubstancePolymerElements(SubstancePolymer element) throws IOException {
59954    composeDomainResourceElements(element);
59955    if (element.hasIdentifier()) {
59956      composeIdentifier("identifier", element.getIdentifier());
59957    }
59958    if (element.hasClass_()) {
59959      composeCodeableConcept("class", element.getClass_());
59960    }
59961    if (element.hasGeometry()) {
59962      composeCodeableConcept("geometry", element.getGeometry());
59963    }
59964    if (element.hasCopolymerConnectivity()) { 
59965      for (CodeableConcept e : element.getCopolymerConnectivity()) 
59966          composeCodeableConcept("copolymerConnectivity", e);
59967    }
59968    if (element.hasModificationElement()) {
59969      composeString("modification", element.getModificationElement());
59970    }
59971    if (element.hasMonomerSet()) { 
59972      for (SubstancePolymer.SubstancePolymerMonomerSetComponent e : element.getMonomerSet()) 
59973          composeSubstancePolymerMonomerSetComponent("monomerSet", e);
59974    }
59975    if (element.hasRepeat()) { 
59976      for (SubstancePolymer.SubstancePolymerRepeatComponent e : element.getRepeat()) 
59977          composeSubstancePolymerRepeatComponent("repeat", e);
59978    }
59979  }
59980
59981  protected void composeSubstancePolymerMonomerSetComponent(String name, SubstancePolymer.SubstancePolymerMonomerSetComponent element) throws IOException {
59982    if (element != null) {
59983    composeElementAttributes(element);
59984      xml.enter(FHIR_NS, name);
59985      composeSubstancePolymerMonomerSetComponentElements(element);
59986      composeElementClose(element);
59987      xml.exit(FHIR_NS, name);
59988    }
59989  }
59990
59991  protected void composeSubstancePolymerMonomerSetComponentElements(SubstancePolymer.SubstancePolymerMonomerSetComponent element) throws IOException {
59992    composeBackboneElementElements(element);
59993    if (element.hasRatioType()) {
59994      composeCodeableConcept("ratioType", element.getRatioType());
59995    }
59996    if (element.hasStartingMaterial()) { 
59997      for (SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent e : element.getStartingMaterial()) 
59998          composeSubstancePolymerMonomerSetStartingMaterialComponent("startingMaterial", e);
59999    }
60000  }
60001
60002  protected void composeSubstancePolymerMonomerSetStartingMaterialComponent(String name, SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent element) throws IOException {
60003    if (element != null) {
60004    composeElementAttributes(element);
60005      xml.enter(FHIR_NS, name);
60006      composeSubstancePolymerMonomerSetStartingMaterialComponentElements(element);
60007      composeElementClose(element);
60008      xml.exit(FHIR_NS, name);
60009    }
60010  }
60011
60012  protected void composeSubstancePolymerMonomerSetStartingMaterialComponentElements(SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent element) throws IOException {
60013    composeBackboneElementElements(element);
60014    if (element.hasCode()) {
60015      composeCodeableConcept("code", element.getCode());
60016    }
60017    if (element.hasCategory()) {
60018      composeCodeableConcept("category", element.getCategory());
60019    }
60020    if (element.hasIsDefiningElement()) {
60021      composeBoolean("isDefining", element.getIsDefiningElement());
60022    }
60023    if (element.hasAmount()) {
60024      composeQuantity("amount", element.getAmount());
60025    }
60026  }
60027
60028  protected void composeSubstancePolymerRepeatComponent(String name, SubstancePolymer.SubstancePolymerRepeatComponent element) throws IOException {
60029    if (element != null) {
60030    composeElementAttributes(element);
60031      xml.enter(FHIR_NS, name);
60032      composeSubstancePolymerRepeatComponentElements(element);
60033      composeElementClose(element);
60034      xml.exit(FHIR_NS, name);
60035    }
60036  }
60037
60038  protected void composeSubstancePolymerRepeatComponentElements(SubstancePolymer.SubstancePolymerRepeatComponent element) throws IOException {
60039    composeBackboneElementElements(element);
60040    if (element.hasAverageMolecularFormulaElement()) {
60041      composeString("averageMolecularFormula", element.getAverageMolecularFormulaElement());
60042    }
60043    if (element.hasRepeatUnitAmountType()) {
60044      composeCodeableConcept("repeatUnitAmountType", element.getRepeatUnitAmountType());
60045    }
60046    if (element.hasRepeatUnit()) { 
60047      for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent e : element.getRepeatUnit()) 
60048          composeSubstancePolymerRepeatRepeatUnitComponent("repeatUnit", e);
60049    }
60050  }
60051
60052  protected void composeSubstancePolymerRepeatRepeatUnitComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent element) throws IOException {
60053    if (element != null) {
60054    composeElementAttributes(element);
60055      xml.enter(FHIR_NS, name);
60056      composeSubstancePolymerRepeatRepeatUnitComponentElements(element);
60057      composeElementClose(element);
60058      xml.exit(FHIR_NS, name);
60059    }
60060  }
60061
60062  protected void composeSubstancePolymerRepeatRepeatUnitComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent element) throws IOException {
60063    composeBackboneElementElements(element);
60064    if (element.hasUnitElement()) {
60065      composeString("unit", element.getUnitElement());
60066    }
60067    if (element.hasOrientation()) {
60068      composeCodeableConcept("orientation", element.getOrientation());
60069    }
60070    if (element.hasAmountElement()) {
60071      composeInteger("amount", element.getAmountElement());
60072    }
60073    if (element.hasDegreeOfPolymerisation()) { 
60074      for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent e : element.getDegreeOfPolymerisation()) 
60075          composeSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent("degreeOfPolymerisation", e);
60076    }
60077    if (element.hasStructuralRepresentation()) { 
60078      for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent e : element.getStructuralRepresentation()) 
60079          composeSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent("structuralRepresentation", e);
60080    }
60081  }
60082
60083  protected void composeSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent element) throws IOException {
60084    if (element != null) {
60085    composeElementAttributes(element);
60086      xml.enter(FHIR_NS, name);
60087      composeSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentElements(element);
60088      composeElementClose(element);
60089      xml.exit(FHIR_NS, name);
60090    }
60091  }
60092
60093  protected void composeSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent element) throws IOException {
60094    composeBackboneElementElements(element);
60095    if (element.hasType()) {
60096      composeCodeableConcept("type", element.getType());
60097    }
60098    if (element.hasAverageElement()) {
60099      composeInteger("average", element.getAverageElement());
60100    }
60101    if (element.hasLowElement()) {
60102      composeInteger("low", element.getLowElement());
60103    }
60104    if (element.hasHighElement()) {
60105      composeInteger("high", element.getHighElement());
60106    }
60107  }
60108
60109  protected void composeSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent element) throws IOException {
60110    if (element != null) {
60111    composeElementAttributes(element);
60112      xml.enter(FHIR_NS, name);
60113      composeSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentElements(element);
60114      composeElementClose(element);
60115      xml.exit(FHIR_NS, name);
60116    }
60117  }
60118
60119  protected void composeSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent element) throws IOException {
60120    composeBackboneElementElements(element);
60121    if (element.hasType()) {
60122      composeCodeableConcept("type", element.getType());
60123    }
60124    if (element.hasRepresentationElement()) {
60125      composeString("representation", element.getRepresentationElement());
60126    }
60127    if (element.hasFormat()) {
60128      composeCodeableConcept("format", element.getFormat());
60129    }
60130    if (element.hasAttachment()) {
60131      composeAttachment("attachment", element.getAttachment());
60132    }
60133  }
60134
60135  protected void composeSubstanceProtein(String name, SubstanceProtein element) throws IOException {
60136    if (element != null) {
60137    composeResourceAttributes(element);
60138      xml.enter(FHIR_NS, name);
60139      composeSubstanceProteinElements(element);
60140      composeElementClose(element);
60141      xml.exit(FHIR_NS, name);
60142    }
60143  }
60144
60145  protected void composeSubstanceProteinElements(SubstanceProtein element) throws IOException {
60146    composeDomainResourceElements(element);
60147    if (element.hasSequenceType()) {
60148      composeCodeableConcept("sequenceType", element.getSequenceType());
60149    }
60150    if (element.hasNumberOfSubunitsElement()) {
60151      composeInteger("numberOfSubunits", element.getNumberOfSubunitsElement());
60152    }
60153    if (element.hasDisulfideLinkage()) { 
60154      for (StringType e : element.getDisulfideLinkage()) 
60155          composeString("disulfideLinkage", e);
60156    }
60157    if (element.hasSubunit()) { 
60158      for (SubstanceProtein.SubstanceProteinSubunitComponent e : element.getSubunit()) 
60159          composeSubstanceProteinSubunitComponent("subunit", e);
60160    }
60161  }
60162
60163  protected void composeSubstanceProteinSubunitComponent(String name, SubstanceProtein.SubstanceProteinSubunitComponent element) throws IOException {
60164    if (element != null) {
60165    composeElementAttributes(element);
60166      xml.enter(FHIR_NS, name);
60167      composeSubstanceProteinSubunitComponentElements(element);
60168      composeElementClose(element);
60169      xml.exit(FHIR_NS, name);
60170    }
60171  }
60172
60173  protected void composeSubstanceProteinSubunitComponentElements(SubstanceProtein.SubstanceProteinSubunitComponent element) throws IOException {
60174    composeBackboneElementElements(element);
60175    if (element.hasSubunitElement()) {
60176      composeInteger("subunit", element.getSubunitElement());
60177    }
60178    if (element.hasSequenceElement()) {
60179      composeString("sequence", element.getSequenceElement());
60180    }
60181    if (element.hasLengthElement()) {
60182      composeInteger("length", element.getLengthElement());
60183    }
60184    if (element.hasSequenceAttachment()) {
60185      composeAttachment("sequenceAttachment", element.getSequenceAttachment());
60186    }
60187    if (element.hasNTerminalModificationId()) {
60188      composeIdentifier("nTerminalModificationId", element.getNTerminalModificationId());
60189    }
60190    if (element.hasNTerminalModificationElement()) {
60191      composeString("nTerminalModification", element.getNTerminalModificationElement());
60192    }
60193    if (element.hasCTerminalModificationId()) {
60194      composeIdentifier("cTerminalModificationId", element.getCTerminalModificationId());
60195    }
60196    if (element.hasCTerminalModificationElement()) {
60197      composeString("cTerminalModification", element.getCTerminalModificationElement());
60198    }
60199  }
60200
60201  protected void composeSubstanceReferenceInformation(String name, SubstanceReferenceInformation element) throws IOException {
60202    if (element != null) {
60203    composeResourceAttributes(element);
60204      xml.enter(FHIR_NS, name);
60205      composeSubstanceReferenceInformationElements(element);
60206      composeElementClose(element);
60207      xml.exit(FHIR_NS, name);
60208    }
60209  }
60210
60211  protected void composeSubstanceReferenceInformationElements(SubstanceReferenceInformation element) throws IOException {
60212    composeDomainResourceElements(element);
60213    if (element.hasCommentElement()) {
60214      composeString("comment", element.getCommentElement());
60215    }
60216    if (element.hasGene()) { 
60217      for (SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent e : element.getGene()) 
60218          composeSubstanceReferenceInformationGeneComponent("gene", e);
60219    }
60220    if (element.hasGeneElement()) { 
60221      for (SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent e : element.getGeneElement()) 
60222          composeSubstanceReferenceInformationGeneElementComponent("geneElement", e);
60223    }
60224    if (element.hasTarget()) { 
60225      for (SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent e : element.getTarget()) 
60226          composeSubstanceReferenceInformationTargetComponent("target", e);
60227    }
60228  }
60229
60230  protected void composeSubstanceReferenceInformationGeneComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent element) throws IOException {
60231    if (element != null) {
60232    composeElementAttributes(element);
60233      xml.enter(FHIR_NS, name);
60234      composeSubstanceReferenceInformationGeneComponentElements(element);
60235      composeElementClose(element);
60236      xml.exit(FHIR_NS, name);
60237    }
60238  }
60239
60240  protected void composeSubstanceReferenceInformationGeneComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent element) throws IOException {
60241    composeBackboneElementElements(element);
60242    if (element.hasGeneSequenceOrigin()) {
60243      composeCodeableConcept("geneSequenceOrigin", element.getGeneSequenceOrigin());
60244    }
60245    if (element.hasGene()) {
60246      composeCodeableConcept("gene", element.getGene());
60247    }
60248    if (element.hasSource()) { 
60249      for (Reference e : element.getSource()) 
60250          composeReference("source", e);
60251    }
60252  }
60253
60254  protected void composeSubstanceReferenceInformationGeneElementComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent element) throws IOException {
60255    if (element != null) {
60256    composeElementAttributes(element);
60257      xml.enter(FHIR_NS, name);
60258      composeSubstanceReferenceInformationGeneElementComponentElements(element);
60259      composeElementClose(element);
60260      xml.exit(FHIR_NS, name);
60261    }
60262  }
60263
60264  protected void composeSubstanceReferenceInformationGeneElementComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent element) throws IOException {
60265    composeBackboneElementElements(element);
60266    if (element.hasType()) {
60267      composeCodeableConcept("type", element.getType());
60268    }
60269    if (element.hasElement()) {
60270      composeIdentifier("element", element.getElement());
60271    }
60272    if (element.hasSource()) { 
60273      for (Reference e : element.getSource()) 
60274          composeReference("source", e);
60275    }
60276  }
60277
60278  protected void composeSubstanceReferenceInformationTargetComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent element) throws IOException {
60279    if (element != null) {
60280    composeElementAttributes(element);
60281      xml.enter(FHIR_NS, name);
60282      composeSubstanceReferenceInformationTargetComponentElements(element);
60283      composeElementClose(element);
60284      xml.exit(FHIR_NS, name);
60285    }
60286  }
60287
60288  protected void composeSubstanceReferenceInformationTargetComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent element) throws IOException {
60289    composeBackboneElementElements(element);
60290    if (element.hasTarget()) {
60291      composeIdentifier("target", element.getTarget());
60292    }
60293    if (element.hasType()) {
60294      composeCodeableConcept("type", element.getType());
60295    }
60296    if (element.hasInteraction()) {
60297      composeCodeableConcept("interaction", element.getInteraction());
60298    }
60299    if (element.hasOrganism()) {
60300      composeCodeableConcept("organism", element.getOrganism());
60301    }
60302    if (element.hasOrganismType()) {
60303      composeCodeableConcept("organismType", element.getOrganismType());
60304    }
60305    if (element.hasAmount()) {
60306      composeType("amount", element.getAmount());
60307    }    if (element.hasAmountType()) {
60308      composeCodeableConcept("amountType", element.getAmountType());
60309    }
60310    if (element.hasSource()) { 
60311      for (Reference e : element.getSource()) 
60312          composeReference("source", e);
60313    }
60314  }
60315
60316  protected void composeSubstanceSourceMaterial(String name, SubstanceSourceMaterial element) throws IOException {
60317    if (element != null) {
60318    composeResourceAttributes(element);
60319      xml.enter(FHIR_NS, name);
60320      composeSubstanceSourceMaterialElements(element);
60321      composeElementClose(element);
60322      xml.exit(FHIR_NS, name);
60323    }
60324  }
60325
60326  protected void composeSubstanceSourceMaterialElements(SubstanceSourceMaterial element) throws IOException {
60327    composeDomainResourceElements(element);
60328    if (element.hasSourceMaterialClass()) {
60329      composeCodeableConcept("sourceMaterialClass", element.getSourceMaterialClass());
60330    }
60331    if (element.hasSourceMaterialType()) {
60332      composeCodeableConcept("sourceMaterialType", element.getSourceMaterialType());
60333    }
60334    if (element.hasSourceMaterialState()) {
60335      composeCodeableConcept("sourceMaterialState", element.getSourceMaterialState());
60336    }
60337    if (element.hasOrganismId()) {
60338      composeIdentifier("organismId", element.getOrganismId());
60339    }
60340    if (element.hasOrganismNameElement()) {
60341      composeString("organismName", element.getOrganismNameElement());
60342    }
60343    if (element.hasParentSubstanceId()) { 
60344      for (Identifier e : element.getParentSubstanceId()) 
60345          composeIdentifier("parentSubstanceId", e);
60346    }
60347    if (element.hasParentSubstanceName()) { 
60348      for (StringType e : element.getParentSubstanceName()) 
60349          composeString("parentSubstanceName", e);
60350    }
60351    if (element.hasCountryOfOrigin()) { 
60352      for (CodeableConcept e : element.getCountryOfOrigin()) 
60353          composeCodeableConcept("countryOfOrigin", e);
60354    }
60355    if (element.hasGeographicalLocation()) { 
60356      for (StringType e : element.getGeographicalLocation()) 
60357          composeString("geographicalLocation", e);
60358    }
60359    if (element.hasDevelopmentStage()) {
60360      composeCodeableConcept("developmentStage", element.getDevelopmentStage());
60361    }
60362    if (element.hasFractionDescription()) { 
60363      for (SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent e : element.getFractionDescription()) 
60364          composeSubstanceSourceMaterialFractionDescriptionComponent("fractionDescription", e);
60365    }
60366    if (element.hasOrganism()) {
60367      composeSubstanceSourceMaterialOrganismComponent("organism", element.getOrganism());
60368    }
60369    if (element.hasPartDescription()) { 
60370      for (SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent e : element.getPartDescription()) 
60371          composeSubstanceSourceMaterialPartDescriptionComponent("partDescription", e);
60372    }
60373  }
60374
60375  protected void composeSubstanceSourceMaterialFractionDescriptionComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent element) throws IOException {
60376    if (element != null) {
60377    composeElementAttributes(element);
60378      xml.enter(FHIR_NS, name);
60379      composeSubstanceSourceMaterialFractionDescriptionComponentElements(element);
60380      composeElementClose(element);
60381      xml.exit(FHIR_NS, name);
60382    }
60383  }
60384
60385  protected void composeSubstanceSourceMaterialFractionDescriptionComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent element) throws IOException {
60386    composeBackboneElementElements(element);
60387    if (element.hasFractionElement()) {
60388      composeString("fraction", element.getFractionElement());
60389    }
60390    if (element.hasMaterialType()) {
60391      composeCodeableConcept("materialType", element.getMaterialType());
60392    }
60393  }
60394
60395  protected void composeSubstanceSourceMaterialOrganismComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent element) throws IOException {
60396    if (element != null) {
60397    composeElementAttributes(element);
60398      xml.enter(FHIR_NS, name);
60399      composeSubstanceSourceMaterialOrganismComponentElements(element);
60400      composeElementClose(element);
60401      xml.exit(FHIR_NS, name);
60402    }
60403  }
60404
60405  protected void composeSubstanceSourceMaterialOrganismComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent element) throws IOException {
60406    composeBackboneElementElements(element);
60407    if (element.hasFamily()) {
60408      composeCodeableConcept("family", element.getFamily());
60409    }
60410    if (element.hasGenus()) {
60411      composeCodeableConcept("genus", element.getGenus());
60412    }
60413    if (element.hasSpecies()) {
60414      composeCodeableConcept("species", element.getSpecies());
60415    }
60416    if (element.hasIntraspecificType()) {
60417      composeCodeableConcept("intraspecificType", element.getIntraspecificType());
60418    }
60419    if (element.hasIntraspecificDescriptionElement()) {
60420      composeString("intraspecificDescription", element.getIntraspecificDescriptionElement());
60421    }
60422    if (element.hasAuthor()) { 
60423      for (SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent e : element.getAuthor()) 
60424          composeSubstanceSourceMaterialOrganismAuthorComponent("author", e);
60425    }
60426    if (element.hasHybrid()) {
60427      composeSubstanceSourceMaterialOrganismHybridComponent("hybrid", element.getHybrid());
60428    }
60429    if (element.hasOrganismGeneral()) {
60430      composeSubstanceSourceMaterialOrganismOrganismGeneralComponent("organismGeneral", element.getOrganismGeneral());
60431    }
60432  }
60433
60434  protected void composeSubstanceSourceMaterialOrganismAuthorComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent element) throws IOException {
60435    if (element != null) {
60436    composeElementAttributes(element);
60437      xml.enter(FHIR_NS, name);
60438      composeSubstanceSourceMaterialOrganismAuthorComponentElements(element);
60439      composeElementClose(element);
60440      xml.exit(FHIR_NS, name);
60441    }
60442  }
60443
60444  protected void composeSubstanceSourceMaterialOrganismAuthorComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent element) throws IOException {
60445    composeBackboneElementElements(element);
60446    if (element.hasAuthorType()) {
60447      composeCodeableConcept("authorType", element.getAuthorType());
60448    }
60449    if (element.hasAuthorDescriptionElement()) {
60450      composeString("authorDescription", element.getAuthorDescriptionElement());
60451    }
60452  }
60453
60454  protected void composeSubstanceSourceMaterialOrganismHybridComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent element) throws IOException {
60455    if (element != null) {
60456    composeElementAttributes(element);
60457      xml.enter(FHIR_NS, name);
60458      composeSubstanceSourceMaterialOrganismHybridComponentElements(element);
60459      composeElementClose(element);
60460      xml.exit(FHIR_NS, name);
60461    }
60462  }
60463
60464  protected void composeSubstanceSourceMaterialOrganismHybridComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent element) throws IOException {
60465    composeBackboneElementElements(element);
60466    if (element.hasMaternalOrganismIdElement()) {
60467      composeString("maternalOrganismId", element.getMaternalOrganismIdElement());
60468    }
60469    if (element.hasMaternalOrganismNameElement()) {
60470      composeString("maternalOrganismName", element.getMaternalOrganismNameElement());
60471    }
60472    if (element.hasPaternalOrganismIdElement()) {
60473      composeString("paternalOrganismId", element.getPaternalOrganismIdElement());
60474    }
60475    if (element.hasPaternalOrganismNameElement()) {
60476      composeString("paternalOrganismName", element.getPaternalOrganismNameElement());
60477    }
60478    if (element.hasHybridType()) {
60479      composeCodeableConcept("hybridType", element.getHybridType());
60480    }
60481  }
60482
60483  protected void composeSubstanceSourceMaterialOrganismOrganismGeneralComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent element) throws IOException {
60484    if (element != null) {
60485    composeElementAttributes(element);
60486      xml.enter(FHIR_NS, name);
60487      composeSubstanceSourceMaterialOrganismOrganismGeneralComponentElements(element);
60488      composeElementClose(element);
60489      xml.exit(FHIR_NS, name);
60490    }
60491  }
60492
60493  protected void composeSubstanceSourceMaterialOrganismOrganismGeneralComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent element) throws IOException {
60494    composeBackboneElementElements(element);
60495    if (element.hasKingdom()) {
60496      composeCodeableConcept("kingdom", element.getKingdom());
60497    }
60498    if (element.hasPhylum()) {
60499      composeCodeableConcept("phylum", element.getPhylum());
60500    }
60501    if (element.hasClass_()) {
60502      composeCodeableConcept("class", element.getClass_());
60503    }
60504    if (element.hasOrder()) {
60505      composeCodeableConcept("order", element.getOrder());
60506    }
60507  }
60508
60509  protected void composeSubstanceSourceMaterialPartDescriptionComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent element) throws IOException {
60510    if (element != null) {
60511    composeElementAttributes(element);
60512      xml.enter(FHIR_NS, name);
60513      composeSubstanceSourceMaterialPartDescriptionComponentElements(element);
60514      composeElementClose(element);
60515      xml.exit(FHIR_NS, name);
60516    }
60517  }
60518
60519  protected void composeSubstanceSourceMaterialPartDescriptionComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent element) throws IOException {
60520    composeBackboneElementElements(element);
60521    if (element.hasPart()) {
60522      composeCodeableConcept("part", element.getPart());
60523    }
60524    if (element.hasPartLocation()) {
60525      composeCodeableConcept("partLocation", element.getPartLocation());
60526    }
60527  }
60528
60529  protected void composeSupplyDelivery(String name, SupplyDelivery element) throws IOException {
60530    if (element != null) {
60531    composeResourceAttributes(element);
60532      xml.enter(FHIR_NS, name);
60533      composeSupplyDeliveryElements(element);
60534      composeElementClose(element);
60535      xml.exit(FHIR_NS, name);
60536    }
60537  }
60538
60539  protected void composeSupplyDeliveryElements(SupplyDelivery element) throws IOException {
60540    composeDomainResourceElements(element);
60541    if (element.hasIdentifier()) { 
60542      for (Identifier e : element.getIdentifier()) 
60543          composeIdentifier("identifier", e);
60544    }
60545    if (element.hasBasedOn()) { 
60546      for (Reference e : element.getBasedOn()) 
60547          composeReference("basedOn", e);
60548    }
60549    if (element.hasPartOf()) { 
60550      for (Reference e : element.getPartOf()) 
60551          composeReference("partOf", e);
60552    }
60553    if (element.hasStatusElement())
60554      composeEnumeration("status", element.getStatusElement(), new SupplyDelivery.SupplyDeliveryStatusEnumFactory());
60555    if (element.hasPatient()) {
60556      composeReference("patient", element.getPatient());
60557    }
60558    if (element.hasType()) {
60559      composeCodeableConcept("type", element.getType());
60560    }
60561    if (element.hasSuppliedItem()) { 
60562      for (SupplyDelivery.SupplyDeliverySuppliedItemComponent e : element.getSuppliedItem()) 
60563          composeSupplyDeliverySuppliedItemComponent("suppliedItem", e);
60564    }
60565    if (element.hasOccurrence()) {
60566      composeType("occurrence", element.getOccurrence());
60567    }    if (element.hasSupplier()) {
60568      composeReference("supplier", element.getSupplier());
60569    }
60570    if (element.hasDestination()) {
60571      composeReference("destination", element.getDestination());
60572    }
60573    if (element.hasReceiver()) { 
60574      for (Reference e : element.getReceiver()) 
60575          composeReference("receiver", e);
60576    }
60577  }
60578
60579  protected void composeSupplyDeliverySuppliedItemComponent(String name, SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
60580    if (element != null) {
60581    composeElementAttributes(element);
60582      xml.enter(FHIR_NS, name);
60583      composeSupplyDeliverySuppliedItemComponentElements(element);
60584      composeElementClose(element);
60585      xml.exit(FHIR_NS, name);
60586    }
60587  }
60588
60589  protected void composeSupplyDeliverySuppliedItemComponentElements(SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
60590    composeBackboneElementElements(element);
60591    if (element.hasQuantity()) {
60592      composeQuantity("quantity", element.getQuantity());
60593    }
60594    if (element.hasItem()) {
60595      composeType("item", element.getItem());
60596    }  }
60597
60598  protected void composeSupplyRequest(String name, SupplyRequest element) throws IOException {
60599    if (element != null) {
60600    composeResourceAttributes(element);
60601      xml.enter(FHIR_NS, name);
60602      composeSupplyRequestElements(element);
60603      composeElementClose(element);
60604      xml.exit(FHIR_NS, name);
60605    }
60606  }
60607
60608  protected void composeSupplyRequestElements(SupplyRequest element) throws IOException {
60609    composeDomainResourceElements(element);
60610    if (element.hasIdentifier()) { 
60611      for (Identifier e : element.getIdentifier()) 
60612          composeIdentifier("identifier", e);
60613    }
60614    if (element.hasStatusElement())
60615      composeEnumeration("status", element.getStatusElement(), new SupplyRequest.SupplyRequestStatusEnumFactory());
60616    if (element.hasBasedOn()) { 
60617      for (Reference e : element.getBasedOn()) 
60618          composeReference("basedOn", e);
60619    }
60620    if (element.hasCategory()) {
60621      composeCodeableConcept("category", element.getCategory());
60622    }
60623    if (element.hasPriorityElement())
60624      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
60625    if (element.hasDeliverFor()) {
60626      composeReference("deliverFor", element.getDeliverFor());
60627    }
60628    if (element.hasItem()) {
60629      composeCodeableReference("item", element.getItem());
60630    }
60631    if (element.hasQuantity()) {
60632      composeQuantity("quantity", element.getQuantity());
60633    }
60634    if (element.hasParameter()) { 
60635      for (SupplyRequest.SupplyRequestParameterComponent e : element.getParameter()) 
60636          composeSupplyRequestParameterComponent("parameter", e);
60637    }
60638    if (element.hasOccurrence()) {
60639      composeType("occurrence", element.getOccurrence());
60640    }    if (element.hasAuthoredOnElement()) {
60641      composeDateTime("authoredOn", element.getAuthoredOnElement());
60642    }
60643    if (element.hasRequester()) {
60644      composeReference("requester", element.getRequester());
60645    }
60646    if (element.hasSupplier()) { 
60647      for (Reference e : element.getSupplier()) 
60648          composeReference("supplier", e);
60649    }
60650    if (element.hasReason()) { 
60651      for (CodeableReference e : element.getReason()) 
60652          composeCodeableReference("reason", e);
60653    }
60654    if (element.hasDeliverFrom()) {
60655      composeReference("deliverFrom", element.getDeliverFrom());
60656    }
60657    if (element.hasDeliverTo()) {
60658      composeReference("deliverTo", element.getDeliverTo());
60659    }
60660  }
60661
60662  protected void composeSupplyRequestParameterComponent(String name, SupplyRequest.SupplyRequestParameterComponent element) throws IOException {
60663    if (element != null) {
60664    composeElementAttributes(element);
60665      xml.enter(FHIR_NS, name);
60666      composeSupplyRequestParameterComponentElements(element);
60667      composeElementClose(element);
60668      xml.exit(FHIR_NS, name);
60669    }
60670  }
60671
60672  protected void composeSupplyRequestParameterComponentElements(SupplyRequest.SupplyRequestParameterComponent element) throws IOException {
60673    composeBackboneElementElements(element);
60674    if (element.hasCode()) {
60675      composeCodeableConcept("code", element.getCode());
60676    }
60677    if (element.hasValue()) {
60678      composeType("value", element.getValue());
60679    }  }
60680
60681  protected void composeTask(String name, Task element) throws IOException {
60682    if (element != null) {
60683    composeResourceAttributes(element);
60684      xml.enter(FHIR_NS, name);
60685      composeTaskElements(element);
60686      composeElementClose(element);
60687      xml.exit(FHIR_NS, name);
60688    }
60689  }
60690
60691  protected void composeTaskElements(Task element) throws IOException {
60692    composeDomainResourceElements(element);
60693    if (element.hasIdentifier()) { 
60694      for (Identifier e : element.getIdentifier()) 
60695          composeIdentifier("identifier", e);
60696    }
60697    if (element.hasInstantiatesCanonicalElement()) {
60698      composeCanonical("instantiatesCanonical", element.getInstantiatesCanonicalElement());
60699    }
60700    if (element.hasInstantiatesUriElement()) {
60701      composeUri("instantiatesUri", element.getInstantiatesUriElement());
60702    }
60703    if (element.hasBasedOn()) { 
60704      for (Reference e : element.getBasedOn()) 
60705          composeReference("basedOn", e);
60706    }
60707    if (element.hasGroupIdentifier()) {
60708      composeIdentifier("groupIdentifier", element.getGroupIdentifier());
60709    }
60710    if (element.hasPartOf()) { 
60711      for (Reference e : element.getPartOf()) 
60712          composeReference("partOf", e);
60713    }
60714    if (element.hasStatusElement())
60715      composeEnumeration("status", element.getStatusElement(), new Task.TaskStatusEnumFactory());
60716    if (element.hasStatusReason()) {
60717      composeCodeableReference("statusReason", element.getStatusReason());
60718    }
60719    if (element.hasBusinessStatus()) {
60720      composeCodeableConcept("businessStatus", element.getBusinessStatus());
60721    }
60722    if (element.hasIntentElement())
60723      composeEnumeration("intent", element.getIntentElement(), new Task.TaskIntentEnumFactory());
60724    if (element.hasPriorityElement())
60725      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
60726    if (element.hasDoNotPerformElement()) {
60727      composeBoolean("doNotPerform", element.getDoNotPerformElement());
60728    }
60729    if (element.hasCode()) {
60730      composeCodeableConcept("code", element.getCode());
60731    }
60732    if (element.hasDescriptionElement()) {
60733      composeString("description", element.getDescriptionElement());
60734    }
60735    if (element.hasFocus()) {
60736      composeReference("focus", element.getFocus());
60737    }
60738    if (element.hasFor()) {
60739      composeReference("for", element.getFor());
60740    }
60741    if (element.hasEncounter()) {
60742      composeReference("encounter", element.getEncounter());
60743    }
60744    if (element.hasRequestedPeriod()) {
60745      composePeriod("requestedPeriod", element.getRequestedPeriod());
60746    }
60747    if (element.hasExecutionPeriod()) {
60748      composePeriod("executionPeriod", element.getExecutionPeriod());
60749    }
60750    if (element.hasAuthoredOnElement()) {
60751      composeDateTime("authoredOn", element.getAuthoredOnElement());
60752    }
60753    if (element.hasLastModifiedElement()) {
60754      composeDateTime("lastModified", element.getLastModifiedElement());
60755    }
60756    if (element.hasRequester()) {
60757      composeReference("requester", element.getRequester());
60758    }
60759    if (element.hasRequestedPerformer()) { 
60760      for (CodeableReference e : element.getRequestedPerformer()) 
60761          composeCodeableReference("requestedPerformer", e);
60762    }
60763    if (element.hasOwner()) {
60764      composeReference("owner", element.getOwner());
60765    }
60766    if (element.hasPerformer()) { 
60767      for (Task.TaskPerformerComponent e : element.getPerformer()) 
60768          composeTaskPerformerComponent("performer", e);
60769    }
60770    if (element.hasLocation()) {
60771      composeReference("location", element.getLocation());
60772    }
60773    if (element.hasReason()) { 
60774      for (CodeableReference e : element.getReason()) 
60775          composeCodeableReference("reason", e);
60776    }
60777    if (element.hasInsurance()) { 
60778      for (Reference e : element.getInsurance()) 
60779          composeReference("insurance", e);
60780    }
60781    if (element.hasNote()) { 
60782      for (Annotation e : element.getNote()) 
60783          composeAnnotation("note", e);
60784    }
60785    if (element.hasRelevantHistory()) { 
60786      for (Reference e : element.getRelevantHistory()) 
60787          composeReference("relevantHistory", e);
60788    }
60789    if (element.hasRestriction()) {
60790      composeTaskRestrictionComponent("restriction", element.getRestriction());
60791    }
60792    if (element.hasInput()) { 
60793      for (Task.TaskInputComponent e : element.getInput()) 
60794          composeTaskInputComponent("input", e);
60795    }
60796    if (element.hasOutput()) { 
60797      for (Task.TaskOutputComponent e : element.getOutput()) 
60798          composeTaskOutputComponent("output", e);
60799    }
60800  }
60801
60802  protected void composeTaskPerformerComponent(String name, Task.TaskPerformerComponent element) throws IOException {
60803    if (element != null) {
60804    composeElementAttributes(element);
60805      xml.enter(FHIR_NS, name);
60806      composeTaskPerformerComponentElements(element);
60807      composeElementClose(element);
60808      xml.exit(FHIR_NS, name);
60809    }
60810  }
60811
60812  protected void composeTaskPerformerComponentElements(Task.TaskPerformerComponent element) throws IOException {
60813    composeBackboneElementElements(element);
60814    if (element.hasFunction()) {
60815      composeCodeableConcept("function", element.getFunction());
60816    }
60817    if (element.hasActor()) {
60818      composeReference("actor", element.getActor());
60819    }
60820  }
60821
60822  protected void composeTaskRestrictionComponent(String name, Task.TaskRestrictionComponent element) throws IOException {
60823    if (element != null) {
60824    composeElementAttributes(element);
60825      xml.enter(FHIR_NS, name);
60826      composeTaskRestrictionComponentElements(element);
60827      composeElementClose(element);
60828      xml.exit(FHIR_NS, name);
60829    }
60830  }
60831
60832  protected void composeTaskRestrictionComponentElements(Task.TaskRestrictionComponent element) throws IOException {
60833    composeBackboneElementElements(element);
60834    if (element.hasRepetitionsElement()) {
60835      composePositiveInt("repetitions", element.getRepetitionsElement());
60836    }
60837    if (element.hasPeriod()) {
60838      composePeriod("period", element.getPeriod());
60839    }
60840    if (element.hasRecipient()) { 
60841      for (Reference e : element.getRecipient()) 
60842          composeReference("recipient", e);
60843    }
60844  }
60845
60846  protected void composeTaskInputComponent(String name, Task.TaskInputComponent element) throws IOException {
60847    if (element != null) {
60848    composeElementAttributes(element);
60849      xml.enter(FHIR_NS, name);
60850      composeTaskInputComponentElements(element);
60851      composeElementClose(element);
60852      xml.exit(FHIR_NS, name);
60853    }
60854  }
60855
60856  protected void composeTaskInputComponentElements(Task.TaskInputComponent element) throws IOException {
60857    composeBackboneElementElements(element);
60858    if (element.hasType()) {
60859      composeCodeableConcept("type", element.getType());
60860    }
60861    if (element.hasValue()) {
60862      composeType("value", element.getValue());
60863    }  }
60864
60865  protected void composeTaskOutputComponent(String name, Task.TaskOutputComponent element) throws IOException {
60866    if (element != null) {
60867    composeElementAttributes(element);
60868      xml.enter(FHIR_NS, name);
60869      composeTaskOutputComponentElements(element);
60870      composeElementClose(element);
60871      xml.exit(FHIR_NS, name);
60872    }
60873  }
60874
60875  protected void composeTaskOutputComponentElements(Task.TaskOutputComponent element) throws IOException {
60876    composeBackboneElementElements(element);
60877    if (element.hasType()) {
60878      composeCodeableConcept("type", element.getType());
60879    }
60880    if (element.hasValue()) {
60881      composeType("value", element.getValue());
60882    }  }
60883
60884  protected void composeTerminologyCapabilities(String name, TerminologyCapabilities element) throws IOException {
60885    if (element != null) {
60886    composeResourceAttributes(element);
60887      xml.enter(FHIR_NS, name);
60888      composeTerminologyCapabilitiesElements(element);
60889      composeElementClose(element);
60890      xml.exit(FHIR_NS, name);
60891    }
60892  }
60893
60894  protected void composeTerminologyCapabilitiesElements(TerminologyCapabilities element) throws IOException {
60895    composeCanonicalResourceElements(element);
60896    if (element.hasUrlElement()) {
60897      composeUri("url", element.getUrlElement());
60898    }
60899    if (element.hasIdentifier()) { 
60900      for (Identifier e : element.getIdentifier()) 
60901          composeIdentifier("identifier", e);
60902    }
60903    if (element.hasVersionElement()) {
60904      composeString("version", element.getVersionElement());
60905    }
60906    if (element.hasVersionAlgorithm()) {
60907      composeType("versionAlgorithm", element.getVersionAlgorithm());
60908    }    if (element.hasNameElement()) {
60909      composeString("name", element.getNameElement());
60910    }
60911    if (element.hasTitleElement()) {
60912      composeString("title", element.getTitleElement());
60913    }
60914    if (element.hasStatusElement())
60915      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
60916    if (element.hasExperimentalElement()) {
60917      composeBoolean("experimental", element.getExperimentalElement());
60918    }
60919    if (element.hasDateElement()) {
60920      composeDateTime("date", element.getDateElement());
60921    }
60922    if (element.hasPublisherElement()) {
60923      composeString("publisher", element.getPublisherElement());
60924    }
60925    if (element.hasContact()) { 
60926      for (ContactDetail e : element.getContact()) 
60927          composeContactDetail("contact", e);
60928    }
60929    if (element.hasDescriptionElement()) {
60930      composeMarkdown("description", element.getDescriptionElement());
60931    }
60932    if (element.hasUseContext()) { 
60933      for (UsageContext e : element.getUseContext()) 
60934          composeUsageContext("useContext", e);
60935    }
60936    if (element.hasJurisdiction()) { 
60937      for (CodeableConcept e : element.getJurisdiction()) 
60938          composeCodeableConcept("jurisdiction", e);
60939    }
60940    if (element.hasPurposeElement()) {
60941      composeMarkdown("purpose", element.getPurposeElement());
60942    }
60943    if (element.hasCopyrightElement()) {
60944      composeMarkdown("copyright", element.getCopyrightElement());
60945    }
60946    if (element.hasCopyrightLabelElement()) {
60947      composeString("copyrightLabel", element.getCopyrightLabelElement());
60948    }
60949    if (element.hasKindElement())
60950      composeEnumeration("kind", element.getKindElement(), new Enumerations.CapabilityStatementKindEnumFactory());
60951    if (element.hasSoftware()) {
60952      composeTerminologyCapabilitiesSoftwareComponent("software", element.getSoftware());
60953    }
60954    if (element.hasImplementation()) {
60955      composeTerminologyCapabilitiesImplementationComponent("implementation", element.getImplementation());
60956    }
60957    if (element.hasLockedDateElement()) {
60958      composeBoolean("lockedDate", element.getLockedDateElement());
60959    }
60960    if (element.hasCodeSystem()) { 
60961      for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent e : element.getCodeSystem()) 
60962          composeTerminologyCapabilitiesCodeSystemComponent("codeSystem", e);
60963    }
60964    if (element.hasExpansion()) {
60965      composeTerminologyCapabilitiesExpansionComponent("expansion", element.getExpansion());
60966    }
60967    if (element.hasCodeSearchElement())
60968      composeEnumeration("codeSearch", element.getCodeSearchElement(), new TerminologyCapabilities.CodeSearchSupportEnumFactory());
60969    if (element.hasValidateCode()) {
60970      composeTerminologyCapabilitiesValidateCodeComponent("validateCode", element.getValidateCode());
60971    }
60972    if (element.hasTranslation()) {
60973      composeTerminologyCapabilitiesTranslationComponent("translation", element.getTranslation());
60974    }
60975    if (element.hasClosure()) {
60976      composeTerminologyCapabilitiesClosureComponent("closure", element.getClosure());
60977    }
60978  }
60979
60980  protected void composeTerminologyCapabilitiesSoftwareComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent element) throws IOException {
60981    if (element != null) {
60982    composeElementAttributes(element);
60983      xml.enter(FHIR_NS, name);
60984      composeTerminologyCapabilitiesSoftwareComponentElements(element);
60985      composeElementClose(element);
60986      xml.exit(FHIR_NS, name);
60987    }
60988  }
60989
60990  protected void composeTerminologyCapabilitiesSoftwareComponentElements(TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent element) throws IOException {
60991    composeBackboneElementElements(element);
60992    if (element.hasNameElement()) {
60993      composeString("name", element.getNameElement());
60994    }
60995    if (element.hasVersionElement()) {
60996      composeString("version", element.getVersionElement());
60997    }
60998  }
60999
61000  protected void composeTerminologyCapabilitiesImplementationComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent element) throws IOException {
61001    if (element != null) {
61002    composeElementAttributes(element);
61003      xml.enter(FHIR_NS, name);
61004      composeTerminologyCapabilitiesImplementationComponentElements(element);
61005      composeElementClose(element);
61006      xml.exit(FHIR_NS, name);
61007    }
61008  }
61009
61010  protected void composeTerminologyCapabilitiesImplementationComponentElements(TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent element) throws IOException {
61011    composeBackboneElementElements(element);
61012    if (element.hasDescriptionElement()) {
61013      composeString("description", element.getDescriptionElement());
61014    }
61015    if (element.hasUrlElement()) {
61016      composeUrl("url", element.getUrlElement());
61017    }
61018  }
61019
61020  protected void composeTerminologyCapabilitiesCodeSystemComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent element) throws IOException {
61021    if (element != null) {
61022    composeElementAttributes(element);
61023      xml.enter(FHIR_NS, name);
61024      composeTerminologyCapabilitiesCodeSystemComponentElements(element);
61025      composeElementClose(element);
61026      xml.exit(FHIR_NS, name);
61027    }
61028  }
61029
61030  protected void composeTerminologyCapabilitiesCodeSystemComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent element) throws IOException {
61031    composeBackboneElementElements(element);
61032    if (element.hasUriElement()) {
61033      composeCanonical("uri", element.getUriElement());
61034    }
61035    if (element.hasVersion()) { 
61036      for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent e : element.getVersion()) 
61037          composeTerminologyCapabilitiesCodeSystemVersionComponent("version", e);
61038    }
61039    if (element.hasContentElement())
61040      composeEnumeration("content", element.getContentElement(), new Enumerations.CodeSystemContentModeEnumFactory());
61041    if (element.hasSubsumptionElement()) {
61042      composeBoolean("subsumption", element.getSubsumptionElement());
61043    }
61044  }
61045
61046  protected void composeTerminologyCapabilitiesCodeSystemVersionComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent element) throws IOException {
61047    if (element != null) {
61048    composeElementAttributes(element);
61049      xml.enter(FHIR_NS, name);
61050      composeTerminologyCapabilitiesCodeSystemVersionComponentElements(element);
61051      composeElementClose(element);
61052      xml.exit(FHIR_NS, name);
61053    }
61054  }
61055
61056  protected void composeTerminologyCapabilitiesCodeSystemVersionComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent element) throws IOException {
61057    composeBackboneElementElements(element);
61058    if (element.hasCodeElement()) {
61059      composeString("code", element.getCodeElement());
61060    }
61061    if (element.hasIsDefaultElement()) {
61062      composeBoolean("isDefault", element.getIsDefaultElement());
61063    }
61064    if (element.hasCompositionalElement()) {
61065      composeBoolean("compositional", element.getCompositionalElement());
61066    }
61067      if (element.hasLanguage()) 
61068        for (Enumeration<Enumerations.CommonLanguages> e : element.getLanguage()) 
61069          composeEnumeration("language", e, new Enumerations.CommonLanguagesEnumFactory());
61070    if (element.hasFilter()) { 
61071      for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent e : element.getFilter()) 
61072          composeTerminologyCapabilitiesCodeSystemVersionFilterComponent("filter", e);
61073    }
61074    if (element.hasProperty()) { 
61075      for (CodeType e : element.getProperty()) 
61076          composeCode("property", e);
61077    }
61078  }
61079
61080  protected void composeTerminologyCapabilitiesCodeSystemVersionFilterComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent element) throws IOException {
61081    if (element != null) {
61082    composeElementAttributes(element);
61083      xml.enter(FHIR_NS, name);
61084      composeTerminologyCapabilitiesCodeSystemVersionFilterComponentElements(element);
61085      composeElementClose(element);
61086      xml.exit(FHIR_NS, name);
61087    }
61088  }
61089
61090  protected void composeTerminologyCapabilitiesCodeSystemVersionFilterComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent element) throws IOException {
61091    composeBackboneElementElements(element);
61092    if (element.hasCodeElement()) {
61093      composeCode("code", element.getCodeElement());
61094    }
61095    if (element.hasOp()) { 
61096      for (CodeType e : element.getOp()) 
61097          composeCode("op", e);
61098    }
61099  }
61100
61101  protected void composeTerminologyCapabilitiesExpansionComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent element) throws IOException {
61102    if (element != null) {
61103    composeElementAttributes(element);
61104      xml.enter(FHIR_NS, name);
61105      composeTerminologyCapabilitiesExpansionComponentElements(element);
61106      composeElementClose(element);
61107      xml.exit(FHIR_NS, name);
61108    }
61109  }
61110
61111  protected void composeTerminologyCapabilitiesExpansionComponentElements(TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent element) throws IOException {
61112    composeBackboneElementElements(element);
61113    if (element.hasHierarchicalElement()) {
61114      composeBoolean("hierarchical", element.getHierarchicalElement());
61115    }
61116    if (element.hasPagingElement()) {
61117      composeBoolean("paging", element.getPagingElement());
61118    }
61119    if (element.hasIncompleteElement()) {
61120      composeBoolean("incomplete", element.getIncompleteElement());
61121    }
61122    if (element.hasParameter()) { 
61123      for (TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent e : element.getParameter()) 
61124          composeTerminologyCapabilitiesExpansionParameterComponent("parameter", e);
61125    }
61126    if (element.hasTextFilterElement()) {
61127      composeMarkdown("textFilter", element.getTextFilterElement());
61128    }
61129  }
61130
61131  protected void composeTerminologyCapabilitiesExpansionParameterComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent element) throws IOException {
61132    if (element != null) {
61133    composeElementAttributes(element);
61134      xml.enter(FHIR_NS, name);
61135      composeTerminologyCapabilitiesExpansionParameterComponentElements(element);
61136      composeElementClose(element);
61137      xml.exit(FHIR_NS, name);
61138    }
61139  }
61140
61141  protected void composeTerminologyCapabilitiesExpansionParameterComponentElements(TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent element) throws IOException {
61142    composeBackboneElementElements(element);
61143    if (element.hasNameElement()) {
61144      composeCode("name", element.getNameElement());
61145    }
61146    if (element.hasDocumentationElement()) {
61147      composeString("documentation", element.getDocumentationElement());
61148    }
61149  }
61150
61151  protected void composeTerminologyCapabilitiesValidateCodeComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent element) throws IOException {
61152    if (element != null) {
61153    composeElementAttributes(element);
61154      xml.enter(FHIR_NS, name);
61155      composeTerminologyCapabilitiesValidateCodeComponentElements(element);
61156      composeElementClose(element);
61157      xml.exit(FHIR_NS, name);
61158    }
61159  }
61160
61161  protected void composeTerminologyCapabilitiesValidateCodeComponentElements(TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent element) throws IOException {
61162    composeBackboneElementElements(element);
61163    if (element.hasTranslationsElement()) {
61164      composeBoolean("translations", element.getTranslationsElement());
61165    }
61166  }
61167
61168  protected void composeTerminologyCapabilitiesTranslationComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent element) throws IOException {
61169    if (element != null) {
61170    composeElementAttributes(element);
61171      xml.enter(FHIR_NS, name);
61172      composeTerminologyCapabilitiesTranslationComponentElements(element);
61173      composeElementClose(element);
61174      xml.exit(FHIR_NS, name);
61175    }
61176  }
61177
61178  protected void composeTerminologyCapabilitiesTranslationComponentElements(TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent element) throws IOException {
61179    composeBackboneElementElements(element);
61180    if (element.hasNeedsMapElement()) {
61181      composeBoolean("needsMap", element.getNeedsMapElement());
61182    }
61183  }
61184
61185  protected void composeTerminologyCapabilitiesClosureComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesClosureComponent element) throws IOException {
61186    if (element != null) {
61187    composeElementAttributes(element);
61188      xml.enter(FHIR_NS, name);
61189      composeTerminologyCapabilitiesClosureComponentElements(element);
61190      composeElementClose(element);
61191      xml.exit(FHIR_NS, name);
61192    }
61193  }
61194
61195  protected void composeTerminologyCapabilitiesClosureComponentElements(TerminologyCapabilities.TerminologyCapabilitiesClosureComponent element) throws IOException {
61196    composeBackboneElementElements(element);
61197    if (element.hasTranslationElement()) {
61198      composeBoolean("translation", element.getTranslationElement());
61199    }
61200  }
61201
61202  protected void composeTestPlan(String name, TestPlan element) throws IOException {
61203    if (element != null) {
61204    composeResourceAttributes(element);
61205      xml.enter(FHIR_NS, name);
61206      composeTestPlanElements(element);
61207      composeElementClose(element);
61208      xml.exit(FHIR_NS, name);
61209    }
61210  }
61211
61212  protected void composeTestPlanElements(TestPlan element) throws IOException {
61213    composeCanonicalResourceElements(element);
61214    if (element.hasUrlElement()) {
61215      composeUri("url", element.getUrlElement());
61216    }
61217    if (element.hasIdentifier()) { 
61218      for (Identifier e : element.getIdentifier()) 
61219          composeIdentifier("identifier", e);
61220    }
61221    if (element.hasVersionElement()) {
61222      composeString("version", element.getVersionElement());
61223    }
61224    if (element.hasVersionAlgorithm()) {
61225      composeType("versionAlgorithm", element.getVersionAlgorithm());
61226    }    if (element.hasNameElement()) {
61227      composeString("name", element.getNameElement());
61228    }
61229    if (element.hasTitleElement()) {
61230      composeString("title", element.getTitleElement());
61231    }
61232    if (element.hasStatusElement())
61233      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
61234    if (element.hasExperimentalElement()) {
61235      composeBoolean("experimental", element.getExperimentalElement());
61236    }
61237    if (element.hasDateElement()) {
61238      composeDateTime("date", element.getDateElement());
61239    }
61240    if (element.hasPublisherElement()) {
61241      composeString("publisher", element.getPublisherElement());
61242    }
61243    if (element.hasContact()) { 
61244      for (ContactDetail e : element.getContact()) 
61245          composeContactDetail("contact", e);
61246    }
61247    if (element.hasDescriptionElement()) {
61248      composeMarkdown("description", element.getDescriptionElement());
61249    }
61250    if (element.hasUseContext()) { 
61251      for (UsageContext e : element.getUseContext()) 
61252          composeUsageContext("useContext", e);
61253    }
61254    if (element.hasJurisdiction()) { 
61255      for (CodeableConcept e : element.getJurisdiction()) 
61256          composeCodeableConcept("jurisdiction", e);
61257    }
61258    if (element.hasPurposeElement()) {
61259      composeMarkdown("purpose", element.getPurposeElement());
61260    }
61261    if (element.hasCopyrightElement()) {
61262      composeMarkdown("copyright", element.getCopyrightElement());
61263    }
61264    if (element.hasCopyrightLabelElement()) {
61265      composeString("copyrightLabel", element.getCopyrightLabelElement());
61266    }
61267    if (element.hasCategory()) { 
61268      for (CodeableConcept e : element.getCategory()) 
61269          composeCodeableConcept("category", e);
61270    }
61271    if (element.hasScope()) { 
61272      for (Reference e : element.getScope()) 
61273          composeReference("scope", e);
61274    }
61275    if (element.hasTestToolsElement()) {
61276      composeMarkdown("testTools", element.getTestToolsElement());
61277    }
61278    if (element.hasDependency()) { 
61279      for (TestPlan.TestPlanDependencyComponent e : element.getDependency()) 
61280          composeTestPlanDependencyComponent("dependency", e);
61281    }
61282    if (element.hasExitCriteriaElement()) {
61283      composeMarkdown("exitCriteria", element.getExitCriteriaElement());
61284    }
61285    if (element.hasTestCase()) { 
61286      for (TestPlan.TestPlanTestCaseComponent e : element.getTestCase()) 
61287          composeTestPlanTestCaseComponent("testCase", e);
61288    }
61289  }
61290
61291  protected void composeTestPlanDependencyComponent(String name, TestPlan.TestPlanDependencyComponent element) throws IOException {
61292    if (element != null) {
61293    composeElementAttributes(element);
61294      xml.enter(FHIR_NS, name);
61295      composeTestPlanDependencyComponentElements(element);
61296      composeElementClose(element);
61297      xml.exit(FHIR_NS, name);
61298    }
61299  }
61300
61301  protected void composeTestPlanDependencyComponentElements(TestPlan.TestPlanDependencyComponent element) throws IOException {
61302    composeBackboneElementElements(element);
61303    if (element.hasDescriptionElement()) {
61304      composeMarkdown("description", element.getDescriptionElement());
61305    }
61306    if (element.hasPredecessor()) {
61307      composeReference("predecessor", element.getPredecessor());
61308    }
61309  }
61310
61311  protected void composeTestPlanTestCaseComponent(String name, TestPlan.TestPlanTestCaseComponent element) throws IOException {
61312    if (element != null) {
61313    composeElementAttributes(element);
61314      xml.enter(FHIR_NS, name);
61315      composeTestPlanTestCaseComponentElements(element);
61316      composeElementClose(element);
61317      xml.exit(FHIR_NS, name);
61318    }
61319  }
61320
61321  protected void composeTestPlanTestCaseComponentElements(TestPlan.TestPlanTestCaseComponent element) throws IOException {
61322    composeBackboneElementElements(element);
61323    if (element.hasSequenceElement()) {
61324      composeInteger("sequence", element.getSequenceElement());
61325    }
61326    if (element.hasScope()) { 
61327      for (Reference e : element.getScope()) 
61328          composeReference("scope", e);
61329    }
61330    if (element.hasDependency()) { 
61331      for (TestPlan.TestCaseDependencyComponent e : element.getDependency()) 
61332          composeTestPlanTestCaseDependencyComponent("dependency", e);
61333    }
61334    if (element.hasTestRun()) { 
61335      for (TestPlan.TestPlanTestCaseTestRunComponent e : element.getTestRun()) 
61336          composeTestPlanTestCaseTestRunComponent("testRun", e);
61337    }
61338    if (element.hasTestData()) { 
61339      for (TestPlan.TestPlanTestCaseTestDataComponent e : element.getTestData()) 
61340          composeTestPlanTestCaseTestDataComponent("testData", e);
61341    }
61342    if (element.hasAssertion()) { 
61343      for (TestPlan.TestPlanTestCaseAssertionComponent e : element.getAssertion()) 
61344          composeTestPlanTestCaseAssertionComponent("assertion", e);
61345    }
61346  }
61347
61348  protected void composeTestPlanTestCaseDependencyComponent(String name, TestPlan.TestCaseDependencyComponent element) throws IOException {
61349    if (element != null) {
61350    composeElementAttributes(element);
61351      xml.enter(FHIR_NS, name);
61352      composeTestPlanTestCaseDependencyComponentElements(element);
61353      composeElementClose(element);
61354      xml.exit(FHIR_NS, name);
61355    }
61356  }
61357
61358  protected void composeTestPlanTestCaseDependencyComponentElements(TestPlan.TestCaseDependencyComponent element) throws IOException {
61359    composeBackboneElementElements(element);
61360    if (element.hasDescriptionElement()) {
61361      composeMarkdown("description", element.getDescriptionElement());
61362    }
61363    if (element.hasPredecessor()) {
61364      composeReference("predecessor", element.getPredecessor());
61365    }
61366  }
61367
61368  protected void composeTestPlanTestCaseTestRunComponent(String name, TestPlan.TestPlanTestCaseTestRunComponent element) throws IOException {
61369    if (element != null) {
61370    composeElementAttributes(element);
61371      xml.enter(FHIR_NS, name);
61372      composeTestPlanTestCaseTestRunComponentElements(element);
61373      composeElementClose(element);
61374      xml.exit(FHIR_NS, name);
61375    }
61376  }
61377
61378  protected void composeTestPlanTestCaseTestRunComponentElements(TestPlan.TestPlanTestCaseTestRunComponent element) throws IOException {
61379    composeBackboneElementElements(element);
61380    if (element.hasNarrativeElement()) {
61381      composeMarkdown("narrative", element.getNarrativeElement());
61382    }
61383    if (element.hasScript()) {
61384      composeTestPlanTestCaseTestRunScriptComponent("script", element.getScript());
61385    }
61386  }
61387
61388  protected void composeTestPlanTestCaseTestRunScriptComponent(String name, TestPlan.TestPlanTestCaseTestRunScriptComponent element) throws IOException {
61389    if (element != null) {
61390    composeElementAttributes(element);
61391      xml.enter(FHIR_NS, name);
61392      composeTestPlanTestCaseTestRunScriptComponentElements(element);
61393      composeElementClose(element);
61394      xml.exit(FHIR_NS, name);
61395    }
61396  }
61397
61398  protected void composeTestPlanTestCaseTestRunScriptComponentElements(TestPlan.TestPlanTestCaseTestRunScriptComponent element) throws IOException {
61399    composeBackboneElementElements(element);
61400    if (element.hasLanguage()) {
61401      composeCodeableConcept("language", element.getLanguage());
61402    }
61403    if (element.hasSource()) {
61404      composeType("source", element.getSource());
61405    }  }
61406
61407  protected void composeTestPlanTestCaseTestDataComponent(String name, TestPlan.TestPlanTestCaseTestDataComponent element) throws IOException {
61408    if (element != null) {
61409    composeElementAttributes(element);
61410      xml.enter(FHIR_NS, name);
61411      composeTestPlanTestCaseTestDataComponentElements(element);
61412      composeElementClose(element);
61413      xml.exit(FHIR_NS, name);
61414    }
61415  }
61416
61417  protected void composeTestPlanTestCaseTestDataComponentElements(TestPlan.TestPlanTestCaseTestDataComponent element) throws IOException {
61418    composeBackboneElementElements(element);
61419    if (element.hasType()) {
61420      composeCoding("type", element.getType());
61421    }
61422    if (element.hasContent()) {
61423      composeReference("content", element.getContent());
61424    }
61425    if (element.hasSource()) {
61426      composeType("source", element.getSource());
61427    }  }
61428
61429  protected void composeTestPlanTestCaseAssertionComponent(String name, TestPlan.TestPlanTestCaseAssertionComponent element) throws IOException {
61430    if (element != null) {
61431    composeElementAttributes(element);
61432      xml.enter(FHIR_NS, name);
61433      composeTestPlanTestCaseAssertionComponentElements(element);
61434      composeElementClose(element);
61435      xml.exit(FHIR_NS, name);
61436    }
61437  }
61438
61439  protected void composeTestPlanTestCaseAssertionComponentElements(TestPlan.TestPlanTestCaseAssertionComponent element) throws IOException {
61440    composeBackboneElementElements(element);
61441    if (element.hasType()) { 
61442      for (CodeableConcept e : element.getType()) 
61443          composeCodeableConcept("type", e);
61444    }
61445    if (element.hasObject()) { 
61446      for (CodeableReference e : element.getObject()) 
61447          composeCodeableReference("object", e);
61448    }
61449    if (element.hasResult()) { 
61450      for (CodeableReference e : element.getResult()) 
61451          composeCodeableReference("result", e);
61452    }
61453  }
61454
61455  protected void composeTestReport(String name, TestReport element) throws IOException {
61456    if (element != null) {
61457    composeResourceAttributes(element);
61458      xml.enter(FHIR_NS, name);
61459      composeTestReportElements(element);
61460      composeElementClose(element);
61461      xml.exit(FHIR_NS, name);
61462    }
61463  }
61464
61465  protected void composeTestReportElements(TestReport element) throws IOException {
61466    composeDomainResourceElements(element);
61467    if (element.hasIdentifier()) {
61468      composeIdentifier("identifier", element.getIdentifier());
61469    }
61470    if (element.hasNameElement()) {
61471      composeString("name", element.getNameElement());
61472    }
61473    if (element.hasStatusElement())
61474      composeEnumeration("status", element.getStatusElement(), new TestReport.TestReportStatusEnumFactory());
61475    if (element.hasTestScriptElement()) {
61476      composeCanonical("testScript", element.getTestScriptElement());
61477    }
61478    if (element.hasResultElement())
61479      composeEnumeration("result", element.getResultElement(), new TestReport.TestReportResultEnumFactory());
61480    if (element.hasScoreElement()) {
61481      composeDecimal("score", element.getScoreElement());
61482    }
61483    if (element.hasTesterElement()) {
61484      composeString("tester", element.getTesterElement());
61485    }
61486    if (element.hasIssuedElement()) {
61487      composeDateTime("issued", element.getIssuedElement());
61488    }
61489    if (element.hasParticipant()) { 
61490      for (TestReport.TestReportParticipantComponent e : element.getParticipant()) 
61491          composeTestReportParticipantComponent("participant", e);
61492    }
61493    if (element.hasSetup()) {
61494      composeTestReportSetupComponent("setup", element.getSetup());
61495    }
61496    if (element.hasTest()) { 
61497      for (TestReport.TestReportTestComponent e : element.getTest()) 
61498          composeTestReportTestComponent("test", e);
61499    }
61500    if (element.hasTeardown()) {
61501      composeTestReportTeardownComponent("teardown", element.getTeardown());
61502    }
61503  }
61504
61505  protected void composeTestReportParticipantComponent(String name, TestReport.TestReportParticipantComponent element) throws IOException {
61506    if (element != null) {
61507    composeElementAttributes(element);
61508      xml.enter(FHIR_NS, name);
61509      composeTestReportParticipantComponentElements(element);
61510      composeElementClose(element);
61511      xml.exit(FHIR_NS, name);
61512    }
61513  }
61514
61515  protected void composeTestReportParticipantComponentElements(TestReport.TestReportParticipantComponent element) throws IOException {
61516    composeBackboneElementElements(element);
61517    if (element.hasTypeElement())
61518      composeEnumeration("type", element.getTypeElement(), new TestReport.TestReportParticipantTypeEnumFactory());
61519    if (element.hasUriElement()) {
61520      composeUri("uri", element.getUriElement());
61521    }
61522    if (element.hasDisplayElement()) {
61523      composeString("display", element.getDisplayElement());
61524    }
61525  }
61526
61527  protected void composeTestReportSetupComponent(String name, TestReport.TestReportSetupComponent element) throws IOException {
61528    if (element != null) {
61529    composeElementAttributes(element);
61530      xml.enter(FHIR_NS, name);
61531      composeTestReportSetupComponentElements(element);
61532      composeElementClose(element);
61533      xml.exit(FHIR_NS, name);
61534    }
61535  }
61536
61537  protected void composeTestReportSetupComponentElements(TestReport.TestReportSetupComponent element) throws IOException {
61538    composeBackboneElementElements(element);
61539    if (element.hasAction()) { 
61540      for (TestReport.SetupActionComponent e : element.getAction()) 
61541          composeTestReportSetupActionComponent("action", e);
61542    }
61543  }
61544
61545  protected void composeTestReportSetupActionComponent(String name, TestReport.SetupActionComponent element) throws IOException {
61546    if (element != null) {
61547    composeElementAttributes(element);
61548      xml.enter(FHIR_NS, name);
61549      composeTestReportSetupActionComponentElements(element);
61550      composeElementClose(element);
61551      xml.exit(FHIR_NS, name);
61552    }
61553  }
61554
61555  protected void composeTestReportSetupActionComponentElements(TestReport.SetupActionComponent element) throws IOException {
61556    composeBackboneElementElements(element);
61557    if (element.hasOperation()) {
61558      composeTestReportSetupActionOperationComponent("operation", element.getOperation());
61559    }
61560    if (element.hasAssert()) {
61561      composeTestReportSetupActionAssertComponent("assert", element.getAssert());
61562    }
61563  }
61564
61565  protected void composeTestReportSetupActionOperationComponent(String name, TestReport.SetupActionOperationComponent element) throws IOException {
61566    if (element != null) {
61567    composeElementAttributes(element);
61568      xml.enter(FHIR_NS, name);
61569      composeTestReportSetupActionOperationComponentElements(element);
61570      composeElementClose(element);
61571      xml.exit(FHIR_NS, name);
61572    }
61573  }
61574
61575  protected void composeTestReportSetupActionOperationComponentElements(TestReport.SetupActionOperationComponent element) throws IOException {
61576    composeBackboneElementElements(element);
61577    if (element.hasResultElement())
61578      composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
61579    if (element.hasMessageElement()) {
61580      composeMarkdown("message", element.getMessageElement());
61581    }
61582    if (element.hasDetailElement()) {
61583      composeUri("detail", element.getDetailElement());
61584    }
61585  }
61586
61587  protected void composeTestReportSetupActionAssertComponent(String name, TestReport.SetupActionAssertComponent element) throws IOException {
61588    if (element != null) {
61589    composeElementAttributes(element);
61590      xml.enter(FHIR_NS, name);
61591      composeTestReportSetupActionAssertComponentElements(element);
61592      composeElementClose(element);
61593      xml.exit(FHIR_NS, name);
61594    }
61595  }
61596
61597  protected void composeTestReportSetupActionAssertComponentElements(TestReport.SetupActionAssertComponent element) throws IOException {
61598    composeBackboneElementElements(element);
61599    if (element.hasResultElement())
61600      composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
61601    if (element.hasMessageElement()) {
61602      composeMarkdown("message", element.getMessageElement());
61603    }
61604    if (element.hasDetailElement()) {
61605      composeString("detail", element.getDetailElement());
61606    }
61607    if (element.hasRequirement()) { 
61608      for (TestReport.SetupActionAssertRequirementComponent e : element.getRequirement()) 
61609          composeTestReportSetupActionAssertRequirementComponent("requirement", e);
61610    }
61611  }
61612
61613  protected void composeTestReportSetupActionAssertRequirementComponent(String name, TestReport.SetupActionAssertRequirementComponent element) throws IOException {
61614    if (element != null) {
61615    composeElementAttributes(element);
61616      xml.enter(FHIR_NS, name);
61617      composeTestReportSetupActionAssertRequirementComponentElements(element);
61618      composeElementClose(element);
61619      xml.exit(FHIR_NS, name);
61620    }
61621  }
61622
61623  protected void composeTestReportSetupActionAssertRequirementComponentElements(TestReport.SetupActionAssertRequirementComponent element) throws IOException {
61624    composeBackboneElementElements(element);
61625    if (element.hasLink()) {
61626      composeType("link", element.getLink());
61627    }  }
61628
61629  protected void composeTestReportTestComponent(String name, TestReport.TestReportTestComponent element) throws IOException {
61630    if (element != null) {
61631    composeElementAttributes(element);
61632      xml.enter(FHIR_NS, name);
61633      composeTestReportTestComponentElements(element);
61634      composeElementClose(element);
61635      xml.exit(FHIR_NS, name);
61636    }
61637  }
61638
61639  protected void composeTestReportTestComponentElements(TestReport.TestReportTestComponent element) throws IOException {
61640    composeBackboneElementElements(element);
61641    if (element.hasNameElement()) {
61642      composeString("name", element.getNameElement());
61643    }
61644    if (element.hasDescriptionElement()) {
61645      composeString("description", element.getDescriptionElement());
61646    }
61647    if (element.hasAction()) { 
61648      for (TestReport.TestActionComponent e : element.getAction()) 
61649          composeTestReportTestActionComponent("action", e);
61650    }
61651  }
61652
61653  protected void composeTestReportTestActionComponent(String name, TestReport.TestActionComponent element) throws IOException {
61654    if (element != null) {
61655    composeElementAttributes(element);
61656      xml.enter(FHIR_NS, name);
61657      composeTestReportTestActionComponentElements(element);
61658      composeElementClose(element);
61659      xml.exit(FHIR_NS, name);
61660    }
61661  }
61662
61663  protected void composeTestReportTestActionComponentElements(TestReport.TestActionComponent element) throws IOException {
61664    composeBackboneElementElements(element);
61665    if (element.hasOperation()) {
61666      composeTestReportSetupActionOperationComponent("operation", element.getOperation());
61667    }
61668    if (element.hasAssert()) {
61669      composeTestReportSetupActionAssertComponent("assert", element.getAssert());
61670    }
61671  }
61672
61673  protected void composeTestReportTeardownComponent(String name, TestReport.TestReportTeardownComponent element) throws IOException {
61674    if (element != null) {
61675    composeElementAttributes(element);
61676      xml.enter(FHIR_NS, name);
61677      composeTestReportTeardownComponentElements(element);
61678      composeElementClose(element);
61679      xml.exit(FHIR_NS, name);
61680    }
61681  }
61682
61683  protected void composeTestReportTeardownComponentElements(TestReport.TestReportTeardownComponent element) throws IOException {
61684    composeBackboneElementElements(element);
61685    if (element.hasAction()) { 
61686      for (TestReport.TeardownActionComponent e : element.getAction()) 
61687          composeTestReportTeardownActionComponent("action", e);
61688    }
61689  }
61690
61691  protected void composeTestReportTeardownActionComponent(String name, TestReport.TeardownActionComponent element) throws IOException {
61692    if (element != null) {
61693    composeElementAttributes(element);
61694      xml.enter(FHIR_NS, name);
61695      composeTestReportTeardownActionComponentElements(element);
61696      composeElementClose(element);
61697      xml.exit(FHIR_NS, name);
61698    }
61699  }
61700
61701  protected void composeTestReportTeardownActionComponentElements(TestReport.TeardownActionComponent element) throws IOException {
61702    composeBackboneElementElements(element);
61703    if (element.hasOperation()) {
61704      composeTestReportSetupActionOperationComponent("operation", element.getOperation());
61705    }
61706  }
61707
61708  protected void composeTestScript(String name, TestScript element) throws IOException {
61709    if (element != null) {
61710    composeResourceAttributes(element);
61711      xml.enter(FHIR_NS, name);
61712      composeTestScriptElements(element);
61713      composeElementClose(element);
61714      xml.exit(FHIR_NS, name);
61715    }
61716  }
61717
61718  protected void composeTestScriptElements(TestScript element) throws IOException {
61719    composeCanonicalResourceElements(element);
61720    if (element.hasUrlElement()) {
61721      composeUri("url", element.getUrlElement());
61722    }
61723    if (element.hasIdentifier()) { 
61724      for (Identifier e : element.getIdentifier()) 
61725          composeIdentifier("identifier", e);
61726    }
61727    if (element.hasVersionElement()) {
61728      composeString("version", element.getVersionElement());
61729    }
61730    if (element.hasVersionAlgorithm()) {
61731      composeType("versionAlgorithm", element.getVersionAlgorithm());
61732    }    if (element.hasNameElement()) {
61733      composeString("name", element.getNameElement());
61734    }
61735    if (element.hasTitleElement()) {
61736      composeString("title", element.getTitleElement());
61737    }
61738    if (element.hasStatusElement())
61739      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
61740    if (element.hasExperimentalElement()) {
61741      composeBoolean("experimental", element.getExperimentalElement());
61742    }
61743    if (element.hasDateElement()) {
61744      composeDateTime("date", element.getDateElement());
61745    }
61746    if (element.hasPublisherElement()) {
61747      composeString("publisher", element.getPublisherElement());
61748    }
61749    if (element.hasContact()) { 
61750      for (ContactDetail e : element.getContact()) 
61751          composeContactDetail("contact", e);
61752    }
61753    if (element.hasDescriptionElement()) {
61754      composeMarkdown("description", element.getDescriptionElement());
61755    }
61756    if (element.hasUseContext()) { 
61757      for (UsageContext e : element.getUseContext()) 
61758          composeUsageContext("useContext", e);
61759    }
61760    if (element.hasJurisdiction()) { 
61761      for (CodeableConcept e : element.getJurisdiction()) 
61762          composeCodeableConcept("jurisdiction", e);
61763    }
61764    if (element.hasPurposeElement()) {
61765      composeMarkdown("purpose", element.getPurposeElement());
61766    }
61767    if (element.hasCopyrightElement()) {
61768      composeMarkdown("copyright", element.getCopyrightElement());
61769    }
61770    if (element.hasCopyrightLabelElement()) {
61771      composeString("copyrightLabel", element.getCopyrightLabelElement());
61772    }
61773    if (element.hasOrigin()) { 
61774      for (TestScript.TestScriptOriginComponent e : element.getOrigin()) 
61775          composeTestScriptOriginComponent("origin", e);
61776    }
61777    if (element.hasDestination()) { 
61778      for (TestScript.TestScriptDestinationComponent e : element.getDestination()) 
61779          composeTestScriptDestinationComponent("destination", e);
61780    }
61781    if (element.hasMetadata()) {
61782      composeTestScriptMetadataComponent("metadata", element.getMetadata());
61783    }
61784    if (element.hasScope()) { 
61785      for (TestScript.TestScriptScopeComponent e : element.getScope()) 
61786          composeTestScriptScopeComponent("scope", e);
61787    }
61788    if (element.hasFixture()) { 
61789      for (TestScript.TestScriptFixtureComponent e : element.getFixture()) 
61790          composeTestScriptFixtureComponent("fixture", e);
61791    }
61792    if (element.hasProfile()) { 
61793      for (CanonicalType e : element.getProfile()) 
61794          composeCanonical("profile", e);
61795    }
61796    if (element.hasVariable()) { 
61797      for (TestScript.TestScriptVariableComponent e : element.getVariable()) 
61798          composeTestScriptVariableComponent("variable", e);
61799    }
61800    if (element.hasSetup()) {
61801      composeTestScriptSetupComponent("setup", element.getSetup());
61802    }
61803    if (element.hasTest()) { 
61804      for (TestScript.TestScriptTestComponent e : element.getTest()) 
61805          composeTestScriptTestComponent("test", e);
61806    }
61807    if (element.hasTeardown()) {
61808      composeTestScriptTeardownComponent("teardown", element.getTeardown());
61809    }
61810  }
61811
61812  protected void composeTestScriptOriginComponent(String name, TestScript.TestScriptOriginComponent element) throws IOException {
61813    if (element != null) {
61814    composeElementAttributes(element);
61815      xml.enter(FHIR_NS, name);
61816      composeTestScriptOriginComponentElements(element);
61817      composeElementClose(element);
61818      xml.exit(FHIR_NS, name);
61819    }
61820  }
61821
61822  protected void composeTestScriptOriginComponentElements(TestScript.TestScriptOriginComponent element) throws IOException {
61823    composeBackboneElementElements(element);
61824    if (element.hasIndexElement()) {
61825      composeInteger("index", element.getIndexElement());
61826    }
61827    if (element.hasProfile()) {
61828      composeCoding("profile", element.getProfile());
61829    }
61830    if (element.hasUrlElement()) {
61831      composeUrl("url", element.getUrlElement());
61832    }
61833  }
61834
61835  protected void composeTestScriptDestinationComponent(String name, TestScript.TestScriptDestinationComponent element) throws IOException {
61836    if (element != null) {
61837    composeElementAttributes(element);
61838      xml.enter(FHIR_NS, name);
61839      composeTestScriptDestinationComponentElements(element);
61840      composeElementClose(element);
61841      xml.exit(FHIR_NS, name);
61842    }
61843  }
61844
61845  protected void composeTestScriptDestinationComponentElements(TestScript.TestScriptDestinationComponent element) throws IOException {
61846    composeBackboneElementElements(element);
61847    if (element.hasIndexElement()) {
61848      composeInteger("index", element.getIndexElement());
61849    }
61850    if (element.hasProfile()) {
61851      composeCoding("profile", element.getProfile());
61852    }
61853    if (element.hasUrlElement()) {
61854      composeUrl("url", element.getUrlElement());
61855    }
61856  }
61857
61858  protected void composeTestScriptMetadataComponent(String name, TestScript.TestScriptMetadataComponent element) throws IOException {
61859    if (element != null) {
61860    composeElementAttributes(element);
61861      xml.enter(FHIR_NS, name);
61862      composeTestScriptMetadataComponentElements(element);
61863      composeElementClose(element);
61864      xml.exit(FHIR_NS, name);
61865    }
61866  }
61867
61868  protected void composeTestScriptMetadataComponentElements(TestScript.TestScriptMetadataComponent element) throws IOException {
61869    composeBackboneElementElements(element);
61870    if (element.hasLink()) { 
61871      for (TestScript.TestScriptMetadataLinkComponent e : element.getLink()) 
61872          composeTestScriptMetadataLinkComponent("link", e);
61873    }
61874    if (element.hasCapability()) { 
61875      for (TestScript.TestScriptMetadataCapabilityComponent e : element.getCapability()) 
61876          composeTestScriptMetadataCapabilityComponent("capability", e);
61877    }
61878  }
61879
61880  protected void composeTestScriptMetadataLinkComponent(String name, TestScript.TestScriptMetadataLinkComponent element) throws IOException {
61881    if (element != null) {
61882    composeElementAttributes(element);
61883      xml.enter(FHIR_NS, name);
61884      composeTestScriptMetadataLinkComponentElements(element);
61885      composeElementClose(element);
61886      xml.exit(FHIR_NS, name);
61887    }
61888  }
61889
61890  protected void composeTestScriptMetadataLinkComponentElements(TestScript.TestScriptMetadataLinkComponent element) throws IOException {
61891    composeBackboneElementElements(element);
61892    if (element.hasUrlElement()) {
61893      composeUri("url", element.getUrlElement());
61894    }
61895    if (element.hasDescriptionElement()) {
61896      composeString("description", element.getDescriptionElement());
61897    }
61898  }
61899
61900  protected void composeTestScriptMetadataCapabilityComponent(String name, TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
61901    if (element != null) {
61902    composeElementAttributes(element);
61903      xml.enter(FHIR_NS, name);
61904      composeTestScriptMetadataCapabilityComponentElements(element);
61905      composeElementClose(element);
61906      xml.exit(FHIR_NS, name);
61907    }
61908  }
61909
61910  protected void composeTestScriptMetadataCapabilityComponentElements(TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
61911    composeBackboneElementElements(element);
61912    if (element.hasRequiredElement()) {
61913      composeBoolean("required", element.getRequiredElement());
61914    }
61915    if (element.hasValidatedElement()) {
61916      composeBoolean("validated", element.getValidatedElement());
61917    }
61918    if (element.hasDescriptionElement()) {
61919      composeString("description", element.getDescriptionElement());
61920    }
61921    if (element.hasOrigin()) { 
61922      for (IntegerType e : element.getOrigin()) 
61923          composeInteger("origin", e);
61924    }
61925    if (element.hasDestinationElement()) {
61926      composeInteger("destination", element.getDestinationElement());
61927    }
61928    if (element.hasLink()) { 
61929      for (UriType e : element.getLink()) 
61930          composeUri("link", e);
61931    }
61932    if (element.hasCapabilitiesElement()) {
61933      composeCanonical("capabilities", element.getCapabilitiesElement());
61934    }
61935  }
61936
61937  protected void composeTestScriptScopeComponent(String name, TestScript.TestScriptScopeComponent element) throws IOException {
61938    if (element != null) {
61939    composeElementAttributes(element);
61940      xml.enter(FHIR_NS, name);
61941      composeTestScriptScopeComponentElements(element);
61942      composeElementClose(element);
61943      xml.exit(FHIR_NS, name);
61944    }
61945  }
61946
61947  protected void composeTestScriptScopeComponentElements(TestScript.TestScriptScopeComponent element) throws IOException {
61948    composeBackboneElementElements(element);
61949    if (element.hasArtifactElement()) {
61950      composeCanonical("artifact", element.getArtifactElement());
61951    }
61952    if (element.hasConformance()) {
61953      composeCodeableConcept("conformance", element.getConformance());
61954    }
61955    if (element.hasPhase()) {
61956      composeCodeableConcept("phase", element.getPhase());
61957    }
61958  }
61959
61960  protected void composeTestScriptFixtureComponent(String name, TestScript.TestScriptFixtureComponent element) throws IOException {
61961    if (element != null) {
61962    composeElementAttributes(element);
61963      xml.enter(FHIR_NS, name);
61964      composeTestScriptFixtureComponentElements(element);
61965      composeElementClose(element);
61966      xml.exit(FHIR_NS, name);
61967    }
61968  }
61969
61970  protected void composeTestScriptFixtureComponentElements(TestScript.TestScriptFixtureComponent element) throws IOException {
61971    composeBackboneElementElements(element);
61972    if (element.hasAutocreateElement()) {
61973      composeBoolean("autocreate", element.getAutocreateElement());
61974    }
61975    if (element.hasAutodeleteElement()) {
61976      composeBoolean("autodelete", element.getAutodeleteElement());
61977    }
61978    if (element.hasResource()) {
61979      composeReference("resource", element.getResource());
61980    }
61981  }
61982
61983  protected void composeTestScriptVariableComponent(String name, TestScript.TestScriptVariableComponent element) throws IOException {
61984    if (element != null) {
61985    composeElementAttributes(element);
61986      xml.enter(FHIR_NS, name);
61987      composeTestScriptVariableComponentElements(element);
61988      composeElementClose(element);
61989      xml.exit(FHIR_NS, name);
61990    }
61991  }
61992
61993  protected void composeTestScriptVariableComponentElements(TestScript.TestScriptVariableComponent element) throws IOException {
61994    composeBackboneElementElements(element);
61995    if (element.hasNameElement()) {
61996      composeString("name", element.getNameElement());
61997    }
61998    if (element.hasDefaultValueElement()) {
61999      composeString("defaultValue", element.getDefaultValueElement());
62000    }
62001    if (element.hasDescriptionElement()) {
62002      composeString("description", element.getDescriptionElement());
62003    }
62004    if (element.hasExpressionElement()) {
62005      composeString("expression", element.getExpressionElement());
62006    }
62007    if (element.hasHeaderFieldElement()) {
62008      composeString("headerField", element.getHeaderFieldElement());
62009    }
62010    if (element.hasHintElement()) {
62011      composeString("hint", element.getHintElement());
62012    }
62013    if (element.hasPathElement()) {
62014      composeString("path", element.getPathElement());
62015    }
62016    if (element.hasSourceIdElement()) {
62017      composeId("sourceId", element.getSourceIdElement());
62018    }
62019  }
62020
62021  protected void composeTestScriptSetupComponent(String name, TestScript.TestScriptSetupComponent element) throws IOException {
62022    if (element != null) {
62023    composeElementAttributes(element);
62024      xml.enter(FHIR_NS, name);
62025      composeTestScriptSetupComponentElements(element);
62026      composeElementClose(element);
62027      xml.exit(FHIR_NS, name);
62028    }
62029  }
62030
62031  protected void composeTestScriptSetupComponentElements(TestScript.TestScriptSetupComponent element) throws IOException {
62032    composeBackboneElementElements(element);
62033    if (element.hasAction()) { 
62034      for (TestScript.SetupActionComponent e : element.getAction()) 
62035          composeTestScriptSetupActionComponent("action", e);
62036    }
62037  }
62038
62039  protected void composeTestScriptSetupActionComponent(String name, TestScript.SetupActionComponent element) throws IOException {
62040    if (element != null) {
62041    composeElementAttributes(element);
62042      xml.enter(FHIR_NS, name);
62043      composeTestScriptSetupActionComponentElements(element);
62044      composeElementClose(element);
62045      xml.exit(FHIR_NS, name);
62046    }
62047  }
62048
62049  protected void composeTestScriptSetupActionComponentElements(TestScript.SetupActionComponent element) throws IOException {
62050    composeBackboneElementElements(element);
62051    if (element.hasOperation()) {
62052      composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
62053    }
62054    if (element.hasAssert()) {
62055      composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
62056    }
62057  }
62058
62059  protected void composeTestScriptSetupActionOperationComponent(String name, TestScript.SetupActionOperationComponent element) throws IOException {
62060    if (element != null) {
62061    composeElementAttributes(element);
62062      xml.enter(FHIR_NS, name);
62063      composeTestScriptSetupActionOperationComponentElements(element);
62064      composeElementClose(element);
62065      xml.exit(FHIR_NS, name);
62066    }
62067  }
62068
62069  protected void composeTestScriptSetupActionOperationComponentElements(TestScript.SetupActionOperationComponent element) throws IOException {
62070    composeBackboneElementElements(element);
62071    if (element.hasType()) {
62072      composeCoding("type", element.getType());
62073    }
62074    if (element.hasResourceElement()) {
62075      composeUri("resource", element.getResourceElement());
62076    }
62077    if (element.hasLabelElement()) {
62078      composeString("label", element.getLabelElement());
62079    }
62080    if (element.hasDescriptionElement()) {
62081      composeString("description", element.getDescriptionElement());
62082    }
62083    if (element.hasAcceptElement()) {
62084      composeCode("accept", element.getAcceptElement());
62085    }
62086    if (element.hasContentTypeElement()) {
62087      composeCode("contentType", element.getContentTypeElement());
62088    }
62089    if (element.hasDestinationElement()) {
62090      composeInteger("destination", element.getDestinationElement());
62091    }
62092    if (element.hasEncodeRequestUrlElement()) {
62093      composeBoolean("encodeRequestUrl", element.getEncodeRequestUrlElement());
62094    }
62095    if (element.hasMethodElement())
62096      composeEnumeration("method", element.getMethodElement(), new TestScript.TestScriptRequestMethodCodeEnumFactory());
62097    if (element.hasOriginElement()) {
62098      composeInteger("origin", element.getOriginElement());
62099    }
62100    if (element.hasParamsElement()) {
62101      composeString("params", element.getParamsElement());
62102    }
62103    if (element.hasRequestHeader()) { 
62104      for (TestScript.SetupActionOperationRequestHeaderComponent e : element.getRequestHeader()) 
62105          composeTestScriptSetupActionOperationRequestHeaderComponent("requestHeader", e);
62106    }
62107    if (element.hasRequestIdElement()) {
62108      composeId("requestId", element.getRequestIdElement());
62109    }
62110    if (element.hasResponseIdElement()) {
62111      composeId("responseId", element.getResponseIdElement());
62112    }
62113    if (element.hasSourceIdElement()) {
62114      composeId("sourceId", element.getSourceIdElement());
62115    }
62116    if (element.hasTargetIdElement()) {
62117      composeId("targetId", element.getTargetIdElement());
62118    }
62119    if (element.hasUrlElement()) {
62120      composeString("url", element.getUrlElement());
62121    }
62122  }
62123
62124  protected void composeTestScriptSetupActionOperationRequestHeaderComponent(String name, TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
62125    if (element != null) {
62126    composeElementAttributes(element);
62127      xml.enter(FHIR_NS, name);
62128      composeTestScriptSetupActionOperationRequestHeaderComponentElements(element);
62129      composeElementClose(element);
62130      xml.exit(FHIR_NS, name);
62131    }
62132  }
62133
62134  protected void composeTestScriptSetupActionOperationRequestHeaderComponentElements(TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
62135    composeBackboneElementElements(element);
62136    if (element.hasFieldElement()) {
62137      composeString("field", element.getFieldElement());
62138    }
62139    if (element.hasValueElement()) {
62140      composeString("value", element.getValueElement());
62141    }
62142  }
62143
62144  protected void composeTestScriptSetupActionAssertComponent(String name, TestScript.SetupActionAssertComponent element) throws IOException {
62145    if (element != null) {
62146    composeElementAttributes(element);
62147      xml.enter(FHIR_NS, name);
62148      composeTestScriptSetupActionAssertComponentElements(element);
62149      composeElementClose(element);
62150      xml.exit(FHIR_NS, name);
62151    }
62152  }
62153
62154  protected void composeTestScriptSetupActionAssertComponentElements(TestScript.SetupActionAssertComponent element) throws IOException {
62155    composeBackboneElementElements(element);
62156    if (element.hasLabelElement()) {
62157      composeString("label", element.getLabelElement());
62158    }
62159    if (element.hasDescriptionElement()) {
62160      composeString("description", element.getDescriptionElement());
62161    }
62162    if (element.hasDirectionElement())
62163      composeEnumeration("direction", element.getDirectionElement(), new TestScript.AssertionDirectionTypeEnumFactory());
62164    if (element.hasCompareToSourceIdElement()) {
62165      composeString("compareToSourceId", element.getCompareToSourceIdElement());
62166    }
62167    if (element.hasCompareToSourceExpressionElement()) {
62168      composeString("compareToSourceExpression", element.getCompareToSourceExpressionElement());
62169    }
62170    if (element.hasCompareToSourcePathElement()) {
62171      composeString("compareToSourcePath", element.getCompareToSourcePathElement());
62172    }
62173    if (element.hasContentTypeElement()) {
62174      composeCode("contentType", element.getContentTypeElement());
62175    }
62176    if (element.hasDefaultManualCompletionElement())
62177      composeEnumeration("defaultManualCompletion", element.getDefaultManualCompletionElement(), new TestScript.AssertionManualCompletionTypeEnumFactory());
62178    if (element.hasExpressionElement()) {
62179      composeString("expression", element.getExpressionElement());
62180    }
62181    if (element.hasHeaderFieldElement()) {
62182      composeString("headerField", element.getHeaderFieldElement());
62183    }
62184    if (element.hasMinimumIdElement()) {
62185      composeString("minimumId", element.getMinimumIdElement());
62186    }
62187    if (element.hasNavigationLinksElement()) {
62188      composeBoolean("navigationLinks", element.getNavigationLinksElement());
62189    }
62190    if (element.hasOperatorElement())
62191      composeEnumeration("operator", element.getOperatorElement(), new TestScript.AssertionOperatorTypeEnumFactory());
62192    if (element.hasPathElement()) {
62193      composeString("path", element.getPathElement());
62194    }
62195    if (element.hasRequestMethodElement())
62196      composeEnumeration("requestMethod", element.getRequestMethodElement(), new TestScript.TestScriptRequestMethodCodeEnumFactory());
62197    if (element.hasRequestURLElement()) {
62198      composeString("requestURL", element.getRequestURLElement());
62199    }
62200    if (element.hasResourceElement()) {
62201      composeUri("resource", element.getResourceElement());
62202    }
62203    if (element.hasResponseElement())
62204      composeEnumeration("response", element.getResponseElement(), new TestScript.AssertionResponseTypesEnumFactory());
62205    if (element.hasResponseCodeElement()) {
62206      composeString("responseCode", element.getResponseCodeElement());
62207    }
62208    if (element.hasSourceIdElement()) {
62209      composeId("sourceId", element.getSourceIdElement());
62210    }
62211    if (element.hasStopTestOnFailElement()) {
62212      composeBoolean("stopTestOnFail", element.getStopTestOnFailElement());
62213    }
62214    if (element.hasValidateProfileIdElement()) {
62215      composeId("validateProfileId", element.getValidateProfileIdElement());
62216    }
62217    if (element.hasValueElement()) {
62218      composeString("value", element.getValueElement());
62219    }
62220    if (element.hasWarningOnlyElement()) {
62221      composeBoolean("warningOnly", element.getWarningOnlyElement());
62222    }
62223    if (element.hasRequirement()) { 
62224      for (TestScript.SetupActionAssertRequirementComponent e : element.getRequirement()) 
62225          composeTestScriptSetupActionAssertRequirementComponent("requirement", e);
62226    }
62227  }
62228
62229  protected void composeTestScriptSetupActionAssertRequirementComponent(String name, TestScript.SetupActionAssertRequirementComponent element) throws IOException {
62230    if (element != null) {
62231    composeElementAttributes(element);
62232      xml.enter(FHIR_NS, name);
62233      composeTestScriptSetupActionAssertRequirementComponentElements(element);
62234      composeElementClose(element);
62235      xml.exit(FHIR_NS, name);
62236    }
62237  }
62238
62239  protected void composeTestScriptSetupActionAssertRequirementComponentElements(TestScript.SetupActionAssertRequirementComponent element) throws IOException {
62240    composeBackboneElementElements(element);
62241    if (element.hasLink()) {
62242      composeType("link", element.getLink());
62243    }  }
62244
62245  protected void composeTestScriptTestComponent(String name, TestScript.TestScriptTestComponent element) throws IOException {
62246    if (element != null) {
62247    composeElementAttributes(element);
62248      xml.enter(FHIR_NS, name);
62249      composeTestScriptTestComponentElements(element);
62250      composeElementClose(element);
62251      xml.exit(FHIR_NS, name);
62252    }
62253  }
62254
62255  protected void composeTestScriptTestComponentElements(TestScript.TestScriptTestComponent element) throws IOException {
62256    composeBackboneElementElements(element);
62257    if (element.hasNameElement()) {
62258      composeString("name", element.getNameElement());
62259    }
62260    if (element.hasDescriptionElement()) {
62261      composeString("description", element.getDescriptionElement());
62262    }
62263    if (element.hasAction()) { 
62264      for (TestScript.TestActionComponent e : element.getAction()) 
62265          composeTestScriptTestActionComponent("action", e);
62266    }
62267  }
62268
62269  protected void composeTestScriptTestActionComponent(String name, TestScript.TestActionComponent element) throws IOException {
62270    if (element != null) {
62271    composeElementAttributes(element);
62272      xml.enter(FHIR_NS, name);
62273      composeTestScriptTestActionComponentElements(element);
62274      composeElementClose(element);
62275      xml.exit(FHIR_NS, name);
62276    }
62277  }
62278
62279  protected void composeTestScriptTestActionComponentElements(TestScript.TestActionComponent element) throws IOException {
62280    composeBackboneElementElements(element);
62281    if (element.hasOperation()) {
62282      composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
62283    }
62284    if (element.hasAssert()) {
62285      composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
62286    }
62287  }
62288
62289  protected void composeTestScriptTeardownComponent(String name, TestScript.TestScriptTeardownComponent element) throws IOException {
62290    if (element != null) {
62291    composeElementAttributes(element);
62292      xml.enter(FHIR_NS, name);
62293      composeTestScriptTeardownComponentElements(element);
62294      composeElementClose(element);
62295      xml.exit(FHIR_NS, name);
62296    }
62297  }
62298
62299  protected void composeTestScriptTeardownComponentElements(TestScript.TestScriptTeardownComponent element) throws IOException {
62300    composeBackboneElementElements(element);
62301    if (element.hasAction()) { 
62302      for (TestScript.TeardownActionComponent e : element.getAction()) 
62303          composeTestScriptTeardownActionComponent("action", e);
62304    }
62305  }
62306
62307  protected void composeTestScriptTeardownActionComponent(String name, TestScript.TeardownActionComponent element) throws IOException {
62308    if (element != null) {
62309    composeElementAttributes(element);
62310      xml.enter(FHIR_NS, name);
62311      composeTestScriptTeardownActionComponentElements(element);
62312      composeElementClose(element);
62313      xml.exit(FHIR_NS, name);
62314    }
62315  }
62316
62317  protected void composeTestScriptTeardownActionComponentElements(TestScript.TeardownActionComponent element) throws IOException {
62318    composeBackboneElementElements(element);
62319    if (element.hasOperation()) {
62320      composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
62321    }
62322  }
62323
62324  protected void composeTransport(String name, Transport element) throws IOException {
62325    if (element != null) {
62326    composeResourceAttributes(element);
62327      xml.enter(FHIR_NS, name);
62328      composeTransportElements(element);
62329      composeElementClose(element);
62330      xml.exit(FHIR_NS, name);
62331    }
62332  }
62333
62334  protected void composeTransportElements(Transport element) throws IOException {
62335    composeDomainResourceElements(element);
62336    if (element.hasIdentifier()) { 
62337      for (Identifier e : element.getIdentifier()) 
62338          composeIdentifier("identifier", e);
62339    }
62340    if (element.hasInstantiatesCanonicalElement()) {
62341      composeCanonical("instantiatesCanonical", element.getInstantiatesCanonicalElement());
62342    }
62343    if (element.hasInstantiatesUriElement()) {
62344      composeUri("instantiatesUri", element.getInstantiatesUriElement());
62345    }
62346    if (element.hasBasedOn()) { 
62347      for (Reference e : element.getBasedOn()) 
62348          composeReference("basedOn", e);
62349    }
62350    if (element.hasGroupIdentifier()) {
62351      composeIdentifier("groupIdentifier", element.getGroupIdentifier());
62352    }
62353    if (element.hasPartOf()) { 
62354      for (Reference e : element.getPartOf()) 
62355          composeReference("partOf", e);
62356    }
62357    if (element.hasStatusElement())
62358      composeEnumeration("status", element.getStatusElement(), new Transport.TransportStatusEnumFactory());
62359    if (element.hasStatusReason()) {
62360      composeCodeableConcept("statusReason", element.getStatusReason());
62361    }
62362    if (element.hasIntentElement())
62363      composeEnumeration("intent", element.getIntentElement(), new Transport.TransportIntentEnumFactory());
62364    if (element.hasPriorityElement())
62365      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
62366    if (element.hasCode()) {
62367      composeCodeableConcept("code", element.getCode());
62368    }
62369    if (element.hasDescriptionElement()) {
62370      composeString("description", element.getDescriptionElement());
62371    }
62372    if (element.hasFocus()) {
62373      composeReference("focus", element.getFocus());
62374    }
62375    if (element.hasFor()) {
62376      composeReference("for", element.getFor());
62377    }
62378    if (element.hasEncounter()) {
62379      composeReference("encounter", element.getEncounter());
62380    }
62381    if (element.hasCompletionTimeElement()) {
62382      composeDateTime("completionTime", element.getCompletionTimeElement());
62383    }
62384    if (element.hasAuthoredOnElement()) {
62385      composeDateTime("authoredOn", element.getAuthoredOnElement());
62386    }
62387    if (element.hasLastModifiedElement()) {
62388      composeDateTime("lastModified", element.getLastModifiedElement());
62389    }
62390    if (element.hasRequester()) {
62391      composeReference("requester", element.getRequester());
62392    }
62393    if (element.hasPerformerType()) { 
62394      for (CodeableConcept e : element.getPerformerType()) 
62395          composeCodeableConcept("performerType", e);
62396    }
62397    if (element.hasOwner()) {
62398      composeReference("owner", element.getOwner());
62399    }
62400    if (element.hasLocation()) {
62401      composeReference("location", element.getLocation());
62402    }
62403    if (element.hasInsurance()) { 
62404      for (Reference e : element.getInsurance()) 
62405          composeReference("insurance", e);
62406    }
62407    if (element.hasNote()) { 
62408      for (Annotation e : element.getNote()) 
62409          composeAnnotation("note", e);
62410    }
62411    if (element.hasRelevantHistory()) { 
62412      for (Reference e : element.getRelevantHistory()) 
62413          composeReference("relevantHistory", e);
62414    }
62415    if (element.hasRestriction()) {
62416      composeTransportRestrictionComponent("restriction", element.getRestriction());
62417    }
62418    if (element.hasInput()) { 
62419      for (Transport.ParameterComponent e : element.getInput()) 
62420          composeTransportParameterComponent("input", e);
62421    }
62422    if (element.hasOutput()) { 
62423      for (Transport.TransportOutputComponent e : element.getOutput()) 
62424          composeTransportOutputComponent("output", e);
62425    }
62426    if (element.hasRequestedLocation()) {
62427      composeReference("requestedLocation", element.getRequestedLocation());
62428    }
62429    if (element.hasCurrentLocation()) {
62430      composeReference("currentLocation", element.getCurrentLocation());
62431    }
62432    if (element.hasReason()) {
62433      composeCodeableReference("reason", element.getReason());
62434    }
62435    if (element.hasHistory()) {
62436      composeReference("history", element.getHistory());
62437    }
62438  }
62439
62440  protected void composeTransportRestrictionComponent(String name, Transport.TransportRestrictionComponent element) throws IOException {
62441    if (element != null) {
62442    composeElementAttributes(element);
62443      xml.enter(FHIR_NS, name);
62444      composeTransportRestrictionComponentElements(element);
62445      composeElementClose(element);
62446      xml.exit(FHIR_NS, name);
62447    }
62448  }
62449
62450  protected void composeTransportRestrictionComponentElements(Transport.TransportRestrictionComponent element) throws IOException {
62451    composeBackboneElementElements(element);
62452    if (element.hasRepetitionsElement()) {
62453      composePositiveInt("repetitions", element.getRepetitionsElement());
62454    }
62455    if (element.hasPeriod()) {
62456      composePeriod("period", element.getPeriod());
62457    }
62458    if (element.hasRecipient()) { 
62459      for (Reference e : element.getRecipient()) 
62460          composeReference("recipient", e);
62461    }
62462  }
62463
62464  protected void composeTransportParameterComponent(String name, Transport.ParameterComponent element) throws IOException {
62465    if (element != null) {
62466    composeElementAttributes(element);
62467      xml.enter(FHIR_NS, name);
62468      composeTransportParameterComponentElements(element);
62469      composeElementClose(element);
62470      xml.exit(FHIR_NS, name);
62471    }
62472  }
62473
62474  protected void composeTransportParameterComponentElements(Transport.ParameterComponent element) throws IOException {
62475    composeBackboneElementElements(element);
62476    if (element.hasType()) {
62477      composeCodeableConcept("type", element.getType());
62478    }
62479    if (element.hasValue()) {
62480      composeType("value", element.getValue());
62481    }  }
62482
62483  protected void composeTransportOutputComponent(String name, Transport.TransportOutputComponent element) throws IOException {
62484    if (element != null) {
62485    composeElementAttributes(element);
62486      xml.enter(FHIR_NS, name);
62487      composeTransportOutputComponentElements(element);
62488      composeElementClose(element);
62489      xml.exit(FHIR_NS, name);
62490    }
62491  }
62492
62493  protected void composeTransportOutputComponentElements(Transport.TransportOutputComponent element) throws IOException {
62494    composeBackboneElementElements(element);
62495    if (element.hasType()) {
62496      composeCodeableConcept("type", element.getType());
62497    }
62498    if (element.hasValue()) {
62499      composeType("value", element.getValue());
62500    }  }
62501
62502  protected void composeValueSet(String name, ValueSet element) throws IOException {
62503    if (element != null) {
62504    composeResourceAttributes(element);
62505      xml.enter(FHIR_NS, name);
62506      composeValueSetElements(element);
62507      composeElementClose(element);
62508      xml.exit(FHIR_NS, name);
62509    }
62510  }
62511
62512  protected void composeValueSetElements(ValueSet element) throws IOException {
62513    composeMetadataResourceElements(element);
62514    if (element.hasUrlElement()) {
62515      composeUri("url", element.getUrlElement());
62516    }
62517    if (element.hasIdentifier()) { 
62518      for (Identifier e : element.getIdentifier()) 
62519          composeIdentifier("identifier", e);
62520    }
62521    if (element.hasVersionElement()) {
62522      composeString("version", element.getVersionElement());
62523    }
62524    if (element.hasVersionAlgorithm()) {
62525      composeType("versionAlgorithm", element.getVersionAlgorithm());
62526    }    if (element.hasNameElement()) {
62527      composeString("name", element.getNameElement());
62528    }
62529    if (element.hasTitleElement()) {
62530      composeString("title", element.getTitleElement());
62531    }
62532    if (element.hasStatusElement())
62533      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
62534    if (element.hasExperimentalElement()) {
62535      composeBoolean("experimental", element.getExperimentalElement());
62536    }
62537    if (element.hasDateElement()) {
62538      composeDateTime("date", element.getDateElement());
62539    }
62540    if (element.hasPublisherElement()) {
62541      composeString("publisher", element.getPublisherElement());
62542    }
62543    if (element.hasContact()) { 
62544      for (ContactDetail e : element.getContact()) 
62545          composeContactDetail("contact", e);
62546    }
62547    if (element.hasDescriptionElement()) {
62548      composeMarkdown("description", element.getDescriptionElement());
62549    }
62550    if (element.hasUseContext()) { 
62551      for (UsageContext e : element.getUseContext()) 
62552          composeUsageContext("useContext", e);
62553    }
62554    if (element.hasJurisdiction()) { 
62555      for (CodeableConcept e : element.getJurisdiction()) 
62556          composeCodeableConcept("jurisdiction", e);
62557    }
62558    if (element.hasImmutableElement()) {
62559      composeBoolean("immutable", element.getImmutableElement());
62560    }
62561    if (element.hasPurposeElement()) {
62562      composeMarkdown("purpose", element.getPurposeElement());
62563    }
62564    if (element.hasCopyrightElement()) {
62565      composeMarkdown("copyright", element.getCopyrightElement());
62566    }
62567    if (element.hasCopyrightLabelElement()) {
62568      composeString("copyrightLabel", element.getCopyrightLabelElement());
62569    }
62570    if (element.hasApprovalDateElement()) {
62571      composeDate("approvalDate", element.getApprovalDateElement());
62572    }
62573    if (element.hasLastReviewDateElement()) {
62574      composeDate("lastReviewDate", element.getLastReviewDateElement());
62575    }
62576    if (element.hasEffectivePeriod()) {
62577      composePeriod("effectivePeriod", element.getEffectivePeriod());
62578    }
62579    if (element.hasTopic()) { 
62580      for (CodeableConcept e : element.getTopic()) 
62581          composeCodeableConcept("topic", e);
62582    }
62583    if (element.hasAuthor()) { 
62584      for (ContactDetail e : element.getAuthor()) 
62585          composeContactDetail("author", e);
62586    }
62587    if (element.hasEditor()) { 
62588      for (ContactDetail e : element.getEditor()) 
62589          composeContactDetail("editor", e);
62590    }
62591    if (element.hasReviewer()) { 
62592      for (ContactDetail e : element.getReviewer()) 
62593          composeContactDetail("reviewer", e);
62594    }
62595    if (element.hasEndorser()) { 
62596      for (ContactDetail e : element.getEndorser()) 
62597          composeContactDetail("endorser", e);
62598    }
62599    if (element.hasRelatedArtifact()) { 
62600      for (RelatedArtifact e : element.getRelatedArtifact()) 
62601          composeRelatedArtifact("relatedArtifact", e);
62602    }
62603    if (element.hasCompose()) {
62604      composeValueSetComposeComponent("compose", element.getCompose());
62605    }
62606    if (element.hasExpansion()) {
62607      composeValueSetExpansionComponent("expansion", element.getExpansion());
62608    }
62609    if (element.hasScope()) {
62610      composeValueSetScopeComponent("scope", element.getScope());
62611    }
62612  }
62613
62614  protected void composeValueSetComposeComponent(String name, ValueSet.ValueSetComposeComponent element) throws IOException {
62615    if (element != null) {
62616    composeElementAttributes(element);
62617      xml.enter(FHIR_NS, name);
62618      composeValueSetComposeComponentElements(element);
62619      composeElementClose(element);
62620      xml.exit(FHIR_NS, name);
62621    }
62622  }
62623
62624  protected void composeValueSetComposeComponentElements(ValueSet.ValueSetComposeComponent element) throws IOException {
62625    composeBackboneElementElements(element);
62626    if (element.hasLockedDateElement()) {
62627      composeDate("lockedDate", element.getLockedDateElement());
62628    }
62629    if (element.hasInactiveElement()) {
62630      composeBoolean("inactive", element.getInactiveElement());
62631    }
62632    if (element.hasInclude()) { 
62633      for (ValueSet.ConceptSetComponent e : element.getInclude()) 
62634          composeValueSetConceptSetComponent("include", e);
62635    }
62636    if (element.hasExclude()) { 
62637      for (ValueSet.ConceptSetComponent e : element.getExclude()) 
62638          composeValueSetConceptSetComponent("exclude", e);
62639    }
62640    if (element.hasProperty()) { 
62641      for (StringType e : element.getProperty()) 
62642          composeString("property", e);
62643    }
62644  }
62645
62646  protected void composeValueSetConceptSetComponent(String name, ValueSet.ConceptSetComponent element) throws IOException {
62647    if (element != null) {
62648    composeElementAttributes(element);
62649      xml.enter(FHIR_NS, name);
62650      composeValueSetConceptSetComponentElements(element);
62651      composeElementClose(element);
62652      xml.exit(FHIR_NS, name);
62653    }
62654  }
62655
62656  protected void composeValueSetConceptSetComponentElements(ValueSet.ConceptSetComponent element) throws IOException {
62657    composeBackboneElementElements(element);
62658    if (element.hasSystemElement()) {
62659      composeUri("system", element.getSystemElement());
62660    }
62661    if (element.hasVersionElement()) {
62662      composeString("version", element.getVersionElement());
62663    }
62664    if (element.hasConcept()) { 
62665      for (ValueSet.ConceptReferenceComponent e : element.getConcept()) 
62666          composeValueSetConceptReferenceComponent("concept", e);
62667    }
62668    if (element.hasFilter()) { 
62669      for (ValueSet.ConceptSetFilterComponent e : element.getFilter()) 
62670          composeValueSetConceptSetFilterComponent("filter", e);
62671    }
62672    if (element.hasValueSet()) { 
62673      for (CanonicalType e : element.getValueSet()) 
62674          composeCanonical("valueSet", e);
62675    }
62676    if (element.hasCopyrightElement()) {
62677      composeString("copyright", element.getCopyrightElement());
62678    }
62679  }
62680
62681  protected void composeValueSetConceptReferenceComponent(String name, ValueSet.ConceptReferenceComponent element) throws IOException {
62682    if (element != null) {
62683    composeElementAttributes(element);
62684      xml.enter(FHIR_NS, name);
62685      composeValueSetConceptReferenceComponentElements(element);
62686      composeElementClose(element);
62687      xml.exit(FHIR_NS, name);
62688    }
62689  }
62690
62691  protected void composeValueSetConceptReferenceComponentElements(ValueSet.ConceptReferenceComponent element) throws IOException {
62692    composeBackboneElementElements(element);
62693    if (element.hasCodeElement()) {
62694      composeCode("code", element.getCodeElement());
62695    }
62696    if (element.hasDisplayElement()) {
62697      composeString("display", element.getDisplayElement());
62698    }
62699    if (element.hasDesignation()) { 
62700      for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
62701          composeValueSetConceptReferenceDesignationComponent("designation", e);
62702    }
62703  }
62704
62705  protected void composeValueSetConceptReferenceDesignationComponent(String name, ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
62706    if (element != null) {
62707    composeElementAttributes(element);
62708      xml.enter(FHIR_NS, name);
62709      composeValueSetConceptReferenceDesignationComponentElements(element);
62710      composeElementClose(element);
62711      xml.exit(FHIR_NS, name);
62712    }
62713  }
62714
62715  protected void composeValueSetConceptReferenceDesignationComponentElements(ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
62716    composeBackboneElementElements(element);
62717    if (element.hasLanguageElement()) {
62718      composeCode("language", element.getLanguageElement());
62719    }
62720    if (element.hasUse()) {
62721      composeCoding("use", element.getUse());
62722    }
62723    if (element.hasAdditionalUse()) { 
62724      for (Coding e : element.getAdditionalUse()) 
62725          composeCoding("additionalUse", e);
62726    }
62727    if (element.hasValueElement()) {
62728      composeString("value", element.getValueElement());
62729    }
62730  }
62731
62732  protected void composeValueSetConceptSetFilterComponent(String name, ValueSet.ConceptSetFilterComponent element) throws IOException {
62733    if (element != null) {
62734    composeElementAttributes(element);
62735      xml.enter(FHIR_NS, name);
62736      composeValueSetConceptSetFilterComponentElements(element);
62737      composeElementClose(element);
62738      xml.exit(FHIR_NS, name);
62739    }
62740  }
62741
62742  protected void composeValueSetConceptSetFilterComponentElements(ValueSet.ConceptSetFilterComponent element) throws IOException {
62743    composeBackboneElementElements(element);
62744    if (element.hasPropertyElement()) {
62745      composeCode("property", element.getPropertyElement());
62746    }
62747    if (element.hasOpElement())
62748      composeEnumeration("op", element.getOpElement(), new Enumerations.FilterOperatorEnumFactory());
62749    if (element.hasValueElement()) {
62750      composeString("value", element.getValueElement());
62751    }
62752  }
62753
62754  protected void composeValueSetExpansionComponent(String name, ValueSet.ValueSetExpansionComponent element) throws IOException {
62755    if (element != null) {
62756    composeElementAttributes(element);
62757      xml.enter(FHIR_NS, name);
62758      composeValueSetExpansionComponentElements(element);
62759      composeElementClose(element);
62760      xml.exit(FHIR_NS, name);
62761    }
62762  }
62763
62764  protected void composeValueSetExpansionComponentElements(ValueSet.ValueSetExpansionComponent element) throws IOException {
62765    composeBackboneElementElements(element);
62766    if (element.hasIdentifierElement()) {
62767      composeUri("identifier", element.getIdentifierElement());
62768    }
62769    if (element.hasNextElement()) {
62770      composeUri("next", element.getNextElement());
62771    }
62772    if (element.hasTimestampElement()) {
62773      composeDateTime("timestamp", element.getTimestampElement());
62774    }
62775    if (element.hasTotalElement()) {
62776      composeInteger("total", element.getTotalElement());
62777    }
62778    if (element.hasOffsetElement()) {
62779      composeInteger("offset", element.getOffsetElement());
62780    }
62781    if (element.hasParameter()) { 
62782      for (ValueSet.ValueSetExpansionParameterComponent e : element.getParameter()) 
62783          composeValueSetExpansionParameterComponent("parameter", e);
62784    }
62785    if (element.hasProperty()) { 
62786      for (ValueSet.ValueSetExpansionPropertyComponent e : element.getProperty()) 
62787          composeValueSetExpansionPropertyComponent("property", e);
62788    }
62789    if (element.hasContains()) { 
62790      for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
62791          composeValueSetExpansionContainsComponent("contains", e);
62792    }
62793  }
62794
62795  protected void composeValueSetExpansionParameterComponent(String name, ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
62796    if (element != null) {
62797    composeElementAttributes(element);
62798      xml.enter(FHIR_NS, name);
62799      composeValueSetExpansionParameterComponentElements(element);
62800      composeElementClose(element);
62801      xml.exit(FHIR_NS, name);
62802    }
62803  }
62804
62805  protected void composeValueSetExpansionParameterComponentElements(ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
62806    composeBackboneElementElements(element);
62807    if (element.hasNameElement()) {
62808      composeString("name", element.getNameElement());
62809    }
62810    if (element.hasValue()) {
62811      composeType("value", element.getValue());
62812    }  }
62813
62814  protected void composeValueSetExpansionPropertyComponent(String name, ValueSet.ValueSetExpansionPropertyComponent element) throws IOException {
62815    if (element != null) {
62816    composeElementAttributes(element);
62817      xml.enter(FHIR_NS, name);
62818      composeValueSetExpansionPropertyComponentElements(element);
62819      composeElementClose(element);
62820      xml.exit(FHIR_NS, name);
62821    }
62822  }
62823
62824  protected void composeValueSetExpansionPropertyComponentElements(ValueSet.ValueSetExpansionPropertyComponent element) throws IOException {
62825    composeBackboneElementElements(element);
62826    if (element.hasCodeElement()) {
62827      composeCode("code", element.getCodeElement());
62828    }
62829    if (element.hasUriElement()) {
62830      composeUri("uri", element.getUriElement());
62831    }
62832  }
62833
62834  protected void composeValueSetExpansionContainsComponent(String name, ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
62835    if (element != null) {
62836    composeElementAttributes(element);
62837      xml.enter(FHIR_NS, name);
62838      composeValueSetExpansionContainsComponentElements(element);
62839      composeElementClose(element);
62840      xml.exit(FHIR_NS, name);
62841    }
62842  }
62843
62844  protected void composeValueSetExpansionContainsComponentElements(ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
62845    composeBackboneElementElements(element);
62846    if (element.hasSystemElement()) {
62847      composeUri("system", element.getSystemElement());
62848    }
62849    if (element.hasAbstractElement()) {
62850      composeBoolean("abstract", element.getAbstractElement());
62851    }
62852    if (element.hasInactiveElement()) {
62853      composeBoolean("inactive", element.getInactiveElement());
62854    }
62855    if (element.hasVersionElement()) {
62856      composeString("version", element.getVersionElement());
62857    }
62858    if (element.hasCodeElement()) {
62859      composeCode("code", element.getCodeElement());
62860    }
62861    if (element.hasDisplayElement()) {
62862      composeString("display", element.getDisplayElement());
62863    }
62864    if (element.hasDesignation()) { 
62865      for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
62866          composeValueSetConceptReferenceDesignationComponent("designation", e);
62867    }
62868    if (element.hasProperty()) { 
62869      for (ValueSet.ConceptPropertyComponent e : element.getProperty()) 
62870          composeValueSetConceptPropertyComponent("property", e);
62871    }
62872    if (element.hasContains()) { 
62873      for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
62874          composeValueSetExpansionContainsComponent("contains", e);
62875    }
62876  }
62877
62878  protected void composeValueSetConceptPropertyComponent(String name, ValueSet.ConceptPropertyComponent element) throws IOException {
62879    if (element != null) {
62880    composeElementAttributes(element);
62881      xml.enter(FHIR_NS, name);
62882      composeValueSetConceptPropertyComponentElements(element);
62883      composeElementClose(element);
62884      xml.exit(FHIR_NS, name);
62885    }
62886  }
62887
62888  protected void composeValueSetConceptPropertyComponentElements(ValueSet.ConceptPropertyComponent element) throws IOException {
62889    composeBackboneElementElements(element);
62890    if (element.hasCodeElement()) {
62891      composeCode("code", element.getCodeElement());
62892    }
62893    if (element.hasValue()) {
62894      composeType("value", element.getValue());
62895    }    if (element.hasSubProperty()) { 
62896      for (ValueSet.ConceptSubPropertyComponent e : element.getSubProperty()) 
62897          composeValueSetConceptSubPropertyComponent("subProperty", e);
62898    }
62899  }
62900
62901  protected void composeValueSetConceptSubPropertyComponent(String name, ValueSet.ConceptSubPropertyComponent element) throws IOException {
62902    if (element != null) {
62903    composeElementAttributes(element);
62904      xml.enter(FHIR_NS, name);
62905      composeValueSetConceptSubPropertyComponentElements(element);
62906      composeElementClose(element);
62907      xml.exit(FHIR_NS, name);
62908    }
62909  }
62910
62911  protected void composeValueSetConceptSubPropertyComponentElements(ValueSet.ConceptSubPropertyComponent element) throws IOException {
62912    composeBackboneElementElements(element);
62913    if (element.hasCodeElement()) {
62914      composeCode("code", element.getCodeElement());
62915    }
62916    if (element.hasValue()) {
62917      composeType("value", element.getValue());
62918    }  }
62919
62920  protected void composeValueSetScopeComponent(String name, ValueSet.ValueSetScopeComponent element) throws IOException {
62921    if (element != null) {
62922    composeElementAttributes(element);
62923      xml.enter(FHIR_NS, name);
62924      composeValueSetScopeComponentElements(element);
62925      composeElementClose(element);
62926      xml.exit(FHIR_NS, name);
62927    }
62928  }
62929
62930  protected void composeValueSetScopeComponentElements(ValueSet.ValueSetScopeComponent element) throws IOException {
62931    composeBackboneElementElements(element);
62932    if (element.hasInclusionCriteriaElement()) {
62933      composeString("inclusionCriteria", element.getInclusionCriteriaElement());
62934    }
62935    if (element.hasExclusionCriteriaElement()) {
62936      composeString("exclusionCriteria", element.getExclusionCriteriaElement());
62937    }
62938  }
62939
62940  protected void composeVerificationResult(String name, VerificationResult element) throws IOException {
62941    if (element != null) {
62942    composeResourceAttributes(element);
62943      xml.enter(FHIR_NS, name);
62944      composeVerificationResultElements(element);
62945      composeElementClose(element);
62946      xml.exit(FHIR_NS, name);
62947    }
62948  }
62949
62950  protected void composeVerificationResultElements(VerificationResult element) throws IOException {
62951    composeDomainResourceElements(element);
62952    if (element.hasTarget()) { 
62953      for (Reference e : element.getTarget()) 
62954          composeReference("target", e);
62955    }
62956    if (element.hasTargetLocation()) { 
62957      for (StringType e : element.getTargetLocation()) 
62958          composeString("targetLocation", e);
62959    }
62960    if (element.hasNeed()) {
62961      composeCodeableConcept("need", element.getNeed());
62962    }
62963    if (element.hasStatusElement())
62964      composeEnumeration("status", element.getStatusElement(), new VerificationResult.VerificationResultStatusEnumFactory());
62965    if (element.hasStatusDateElement()) {
62966      composeDateTime("statusDate", element.getStatusDateElement());
62967    }
62968    if (element.hasValidationType()) {
62969      composeCodeableConcept("validationType", element.getValidationType());
62970    }
62971    if (element.hasValidationProcess()) { 
62972      for (CodeableConcept e : element.getValidationProcess()) 
62973          composeCodeableConcept("validationProcess", e);
62974    }
62975    if (element.hasFrequency()) {
62976      composeTiming("frequency", element.getFrequency());
62977    }
62978    if (element.hasLastPerformedElement()) {
62979      composeDateTime("lastPerformed", element.getLastPerformedElement());
62980    }
62981    if (element.hasNextScheduledElement()) {
62982      composeDate("nextScheduled", element.getNextScheduledElement());
62983    }
62984    if (element.hasFailureAction()) {
62985      composeCodeableConcept("failureAction", element.getFailureAction());
62986    }
62987    if (element.hasPrimarySource()) { 
62988      for (VerificationResult.VerificationResultPrimarySourceComponent e : element.getPrimarySource()) 
62989          composeVerificationResultPrimarySourceComponent("primarySource", e);
62990    }
62991    if (element.hasAttestation()) {
62992      composeVerificationResultAttestationComponent("attestation", element.getAttestation());
62993    }
62994    if (element.hasValidator()) { 
62995      for (VerificationResult.VerificationResultValidatorComponent e : element.getValidator()) 
62996          composeVerificationResultValidatorComponent("validator", e);
62997    }
62998  }
62999
63000  protected void composeVerificationResultPrimarySourceComponent(String name, VerificationResult.VerificationResultPrimarySourceComponent element) throws IOException {
63001    if (element != null) {
63002    composeElementAttributes(element);
63003      xml.enter(FHIR_NS, name);
63004      composeVerificationResultPrimarySourceComponentElements(element);
63005      composeElementClose(element);
63006      xml.exit(FHIR_NS, name);
63007    }
63008  }
63009
63010  protected void composeVerificationResultPrimarySourceComponentElements(VerificationResult.VerificationResultPrimarySourceComponent element) throws IOException {
63011    composeBackboneElementElements(element);
63012    if (element.hasWho()) {
63013      composeReference("who", element.getWho());
63014    }
63015    if (element.hasType()) { 
63016      for (CodeableConcept e : element.getType()) 
63017          composeCodeableConcept("type", e);
63018    }
63019    if (element.hasCommunicationMethod()) { 
63020      for (CodeableConcept e : element.getCommunicationMethod()) 
63021          composeCodeableConcept("communicationMethod", e);
63022    }
63023    if (element.hasValidationStatus()) {
63024      composeCodeableConcept("validationStatus", element.getValidationStatus());
63025    }
63026    if (element.hasValidationDateElement()) {
63027      composeDateTime("validationDate", element.getValidationDateElement());
63028    }
63029    if (element.hasCanPushUpdates()) {
63030      composeCodeableConcept("canPushUpdates", element.getCanPushUpdates());
63031    }
63032    if (element.hasPushTypeAvailable()) { 
63033      for (CodeableConcept e : element.getPushTypeAvailable()) 
63034          composeCodeableConcept("pushTypeAvailable", e);
63035    }
63036  }
63037
63038  protected void composeVerificationResultAttestationComponent(String name, VerificationResult.VerificationResultAttestationComponent element) throws IOException {
63039    if (element != null) {
63040    composeElementAttributes(element);
63041      xml.enter(FHIR_NS, name);
63042      composeVerificationResultAttestationComponentElements(element);
63043      composeElementClose(element);
63044      xml.exit(FHIR_NS, name);
63045    }
63046  }
63047
63048  protected void composeVerificationResultAttestationComponentElements(VerificationResult.VerificationResultAttestationComponent element) throws IOException {
63049    composeBackboneElementElements(element);
63050    if (element.hasWho()) {
63051      composeReference("who", element.getWho());
63052    }
63053    if (element.hasOnBehalfOf()) {
63054      composeReference("onBehalfOf", element.getOnBehalfOf());
63055    }
63056    if (element.hasCommunicationMethod()) {
63057      composeCodeableConcept("communicationMethod", element.getCommunicationMethod());
63058    }
63059    if (element.hasDateElement()) {
63060      composeDate("date", element.getDateElement());
63061    }
63062    if (element.hasSourceIdentityCertificateElement()) {
63063      composeString("sourceIdentityCertificate", element.getSourceIdentityCertificateElement());
63064    }
63065    if (element.hasProxyIdentityCertificateElement()) {
63066      composeString("proxyIdentityCertificate", element.getProxyIdentityCertificateElement());
63067    }
63068    if (element.hasProxySignature()) {
63069      composeSignature("proxySignature", element.getProxySignature());
63070    }
63071    if (element.hasSourceSignature()) {
63072      composeSignature("sourceSignature", element.getSourceSignature());
63073    }
63074  }
63075
63076  protected void composeVerificationResultValidatorComponent(String name, VerificationResult.VerificationResultValidatorComponent element) throws IOException {
63077    if (element != null) {
63078    composeElementAttributes(element);
63079      xml.enter(FHIR_NS, name);
63080      composeVerificationResultValidatorComponentElements(element);
63081      composeElementClose(element);
63082      xml.exit(FHIR_NS, name);
63083    }
63084  }
63085
63086  protected void composeVerificationResultValidatorComponentElements(VerificationResult.VerificationResultValidatorComponent element) throws IOException {
63087    composeBackboneElementElements(element);
63088    if (element.hasOrganization()) {
63089      composeReference("organization", element.getOrganization());
63090    }
63091    if (element.hasIdentityCertificateElement()) {
63092      composeString("identityCertificate", element.getIdentityCertificateElement());
63093    }
63094    if (element.hasAttestationSignature()) {
63095      composeSignature("attestationSignature", element.getAttestationSignature());
63096    }
63097  }
63098
63099  protected void composeVisionPrescription(String name, VisionPrescription element) throws IOException {
63100    if (element != null) {
63101    composeResourceAttributes(element);
63102      xml.enter(FHIR_NS, name);
63103      composeVisionPrescriptionElements(element);
63104      composeElementClose(element);
63105      xml.exit(FHIR_NS, name);
63106    }
63107  }
63108
63109  protected void composeVisionPrescriptionElements(VisionPrescription element) throws IOException {
63110    composeDomainResourceElements(element);
63111    if (element.hasIdentifier()) { 
63112      for (Identifier e : element.getIdentifier()) 
63113          composeIdentifier("identifier", e);
63114    }
63115    if (element.hasStatusElement())
63116      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
63117    if (element.hasCreatedElement()) {
63118      composeDateTime("created", element.getCreatedElement());
63119    }
63120    if (element.hasPatient()) {
63121      composeReference("patient", element.getPatient());
63122    }
63123    if (element.hasEncounter()) {
63124      composeReference("encounter", element.getEncounter());
63125    }
63126    if (element.hasDateWrittenElement()) {
63127      composeDateTime("dateWritten", element.getDateWrittenElement());
63128    }
63129    if (element.hasPrescriber()) {
63130      composeReference("prescriber", element.getPrescriber());
63131    }
63132    if (element.hasLensSpecification()) { 
63133      for (VisionPrescription.VisionPrescriptionLensSpecificationComponent e : element.getLensSpecification()) 
63134          composeVisionPrescriptionLensSpecificationComponent("lensSpecification", e);
63135    }
63136  }
63137
63138  protected void composeVisionPrescriptionLensSpecificationComponent(String name, VisionPrescription.VisionPrescriptionLensSpecificationComponent element) throws IOException {
63139    if (element != null) {
63140    composeElementAttributes(element);
63141      xml.enter(FHIR_NS, name);
63142      composeVisionPrescriptionLensSpecificationComponentElements(element);
63143      composeElementClose(element);
63144      xml.exit(FHIR_NS, name);
63145    }
63146  }
63147
63148  protected void composeVisionPrescriptionLensSpecificationComponentElements(VisionPrescription.VisionPrescriptionLensSpecificationComponent element) throws IOException {
63149    composeBackboneElementElements(element);
63150    if (element.hasProduct()) {
63151      composeCodeableConcept("product", element.getProduct());
63152    }
63153    if (element.hasEyeElement())
63154      composeEnumeration("eye", element.getEyeElement(), new VisionPrescription.VisionEyesEnumFactory());
63155    if (element.hasSphereElement()) {
63156      composeDecimal("sphere", element.getSphereElement());
63157    }
63158    if (element.hasCylinderElement()) {
63159      composeDecimal("cylinder", element.getCylinderElement());
63160    }
63161    if (element.hasAxisElement()) {
63162      composeInteger("axis", element.getAxisElement());
63163    }
63164    if (element.hasPrism()) { 
63165      for (VisionPrescription.PrismComponent e : element.getPrism()) 
63166          composeVisionPrescriptionPrismComponent("prism", e);
63167    }
63168    if (element.hasAddElement()) {
63169      composeDecimal("add", element.getAddElement());
63170    }
63171    if (element.hasPowerElement()) {
63172      composeDecimal("power", element.getPowerElement());
63173    }
63174    if (element.hasBackCurveElement()) {
63175      composeDecimal("backCurve", element.getBackCurveElement());
63176    }
63177    if (element.hasDiameterElement()) {
63178      composeDecimal("diameter", element.getDiameterElement());
63179    }
63180    if (element.hasDuration()) {
63181      composeQuantity("duration", element.getDuration());
63182    }
63183    if (element.hasColorElement()) {
63184      composeString("color", element.getColorElement());
63185    }
63186    if (element.hasBrandElement()) {
63187      composeString("brand", element.getBrandElement());
63188    }
63189    if (element.hasNote()) { 
63190      for (Annotation e : element.getNote()) 
63191          composeAnnotation("note", e);
63192    }
63193  }
63194
63195  protected void composeVisionPrescriptionPrismComponent(String name, VisionPrescription.PrismComponent element) throws IOException {
63196    if (element != null) {
63197    composeElementAttributes(element);
63198      xml.enter(FHIR_NS, name);
63199      composeVisionPrescriptionPrismComponentElements(element);
63200      composeElementClose(element);
63201      xml.exit(FHIR_NS, name);
63202    }
63203  }
63204
63205  protected void composeVisionPrescriptionPrismComponentElements(VisionPrescription.PrismComponent element) throws IOException {
63206    composeBackboneElementElements(element);
63207    if (element.hasAmountElement()) {
63208      composeDecimal("amount", element.getAmountElement());
63209    }
63210    if (element.hasBaseElement())
63211      composeEnumeration("base", element.getBaseElement(), new VisionPrescription.VisionBaseEnumFactory());
63212  }
63213
63214
63215
63216  @Override
63217  protected void composeResource(Resource resource) throws IOException {
63218    if (resource == null) {
63219      throw new IOException("resource == null");
63220    } else if (resource instanceof Account) {
63221      composeAccount("Account", (Account)resource);
63222    } else if (resource instanceof ActivityDefinition) {
63223      composeActivityDefinition("ActivityDefinition", (ActivityDefinition)resource);
63224    } else if (resource instanceof ActorDefinition) {
63225      composeActorDefinition("ActorDefinition", (ActorDefinition)resource);
63226    } else if (resource instanceof AdministrableProductDefinition) {
63227      composeAdministrableProductDefinition("AdministrableProductDefinition", (AdministrableProductDefinition)resource);
63228    } else if (resource instanceof AdverseEvent) {
63229      composeAdverseEvent("AdverseEvent", (AdverseEvent)resource);
63230    } else if (resource instanceof AllergyIntolerance) {
63231      composeAllergyIntolerance("AllergyIntolerance", (AllergyIntolerance)resource);
63232    } else if (resource instanceof Appointment) {
63233      composeAppointment("Appointment", (Appointment)resource);
63234    } else if (resource instanceof AppointmentResponse) {
63235      composeAppointmentResponse("AppointmentResponse", (AppointmentResponse)resource);
63236    } else if (resource instanceof ArtifactAssessment) {
63237      composeArtifactAssessment("ArtifactAssessment", (ArtifactAssessment)resource);
63238    } else if (resource instanceof AuditEvent) {
63239      composeAuditEvent("AuditEvent", (AuditEvent)resource);
63240    } else if (resource instanceof Basic) {
63241      composeBasic("Basic", (Basic)resource);
63242    } else if (resource instanceof Binary) {
63243      composeBinary("Binary", (Binary)resource);
63244    } else if (resource instanceof BiologicallyDerivedProduct) {
63245      composeBiologicallyDerivedProduct("BiologicallyDerivedProduct", (BiologicallyDerivedProduct)resource);
63246    } else if (resource instanceof BiologicallyDerivedProductDispense) {
63247      composeBiologicallyDerivedProductDispense("BiologicallyDerivedProductDispense", (BiologicallyDerivedProductDispense)resource);
63248    } else if (resource instanceof BodyStructure) {
63249      composeBodyStructure("BodyStructure", (BodyStructure)resource);
63250    } else if (resource instanceof Bundle) {
63251      composeBundle("Bundle", (Bundle)resource);
63252    } else if (resource instanceof CapabilityStatement) {
63253      composeCapabilityStatement("CapabilityStatement", (CapabilityStatement)resource);
63254    } else if (resource instanceof CarePlan) {
63255      composeCarePlan("CarePlan", (CarePlan)resource);
63256    } else if (resource instanceof CareTeam) {
63257      composeCareTeam("CareTeam", (CareTeam)resource);
63258    } else if (resource instanceof ChargeItem) {
63259      composeChargeItem("ChargeItem", (ChargeItem)resource);
63260    } else if (resource instanceof ChargeItemDefinition) {
63261      composeChargeItemDefinition("ChargeItemDefinition", (ChargeItemDefinition)resource);
63262    } else if (resource instanceof Citation) {
63263      composeCitation("Citation", (Citation)resource);
63264    } else if (resource instanceof Claim) {
63265      composeClaim("Claim", (Claim)resource);
63266    } else if (resource instanceof ClaimResponse) {
63267      composeClaimResponse("ClaimResponse", (ClaimResponse)resource);
63268    } else if (resource instanceof ClinicalImpression) {
63269      composeClinicalImpression("ClinicalImpression", (ClinicalImpression)resource);
63270    } else if (resource instanceof ClinicalUseDefinition) {
63271      composeClinicalUseDefinition("ClinicalUseDefinition", (ClinicalUseDefinition)resource);
63272    } else if (resource instanceof CodeSystem) {
63273      composeCodeSystem("CodeSystem", (CodeSystem)resource);
63274    } else if (resource instanceof Communication) {
63275      composeCommunication("Communication", (Communication)resource);
63276    } else if (resource instanceof CommunicationRequest) {
63277      composeCommunicationRequest("CommunicationRequest", (CommunicationRequest)resource);
63278    } else if (resource instanceof CompartmentDefinition) {
63279      composeCompartmentDefinition("CompartmentDefinition", (CompartmentDefinition)resource);
63280    } else if (resource instanceof Composition) {
63281      composeComposition("Composition", (Composition)resource);
63282    } else if (resource instanceof ConceptMap) {
63283      composeConceptMap("ConceptMap", (ConceptMap)resource);
63284    } else if (resource instanceof Condition) {
63285      composeCondition("Condition", (Condition)resource);
63286    } else if (resource instanceof ConditionDefinition) {
63287      composeConditionDefinition("ConditionDefinition", (ConditionDefinition)resource);
63288    } else if (resource instanceof Consent) {
63289      composeConsent("Consent", (Consent)resource);
63290    } else if (resource instanceof Contract) {
63291      composeContract("Contract", (Contract)resource);
63292    } else if (resource instanceof Coverage) {
63293      composeCoverage("Coverage", (Coverage)resource);
63294    } else if (resource instanceof CoverageEligibilityRequest) {
63295      composeCoverageEligibilityRequest("CoverageEligibilityRequest", (CoverageEligibilityRequest)resource);
63296    } else if (resource instanceof CoverageEligibilityResponse) {
63297      composeCoverageEligibilityResponse("CoverageEligibilityResponse", (CoverageEligibilityResponse)resource);
63298    } else if (resource instanceof DetectedIssue) {
63299      composeDetectedIssue("DetectedIssue", (DetectedIssue)resource);
63300    } else if (resource instanceof Device) {
63301      composeDevice("Device", (Device)resource);
63302    } else if (resource instanceof DeviceAssociation) {
63303      composeDeviceAssociation("DeviceAssociation", (DeviceAssociation)resource);
63304    } else if (resource instanceof DeviceDefinition) {
63305      composeDeviceDefinition("DeviceDefinition", (DeviceDefinition)resource);
63306    } else if (resource instanceof DeviceDispense) {
63307      composeDeviceDispense("DeviceDispense", (DeviceDispense)resource);
63308    } else if (resource instanceof DeviceMetric) {
63309      composeDeviceMetric("DeviceMetric", (DeviceMetric)resource);
63310    } else if (resource instanceof DeviceRequest) {
63311      composeDeviceRequest("DeviceRequest", (DeviceRequest)resource);
63312    } else if (resource instanceof DeviceUsage) {
63313      composeDeviceUsage("DeviceUsage", (DeviceUsage)resource);
63314    } else if (resource instanceof DiagnosticReport) {
63315      composeDiagnosticReport("DiagnosticReport", (DiagnosticReport)resource);
63316    } else if (resource instanceof DocumentReference) {
63317      composeDocumentReference("DocumentReference", (DocumentReference)resource);
63318    } else if (resource instanceof Encounter) {
63319      composeEncounter("Encounter", (Encounter)resource);
63320    } else if (resource instanceof EncounterHistory) {
63321      composeEncounterHistory("EncounterHistory", (EncounterHistory)resource);
63322    } else if (resource instanceof Endpoint) {
63323      composeEndpoint("Endpoint", (Endpoint)resource);
63324    } else if (resource instanceof EnrollmentRequest) {
63325      composeEnrollmentRequest("EnrollmentRequest", (EnrollmentRequest)resource);
63326    } else if (resource instanceof EnrollmentResponse) {
63327      composeEnrollmentResponse("EnrollmentResponse", (EnrollmentResponse)resource);
63328    } else if (resource instanceof EpisodeOfCare) {
63329      composeEpisodeOfCare("EpisodeOfCare", (EpisodeOfCare)resource);
63330    } else if (resource instanceof EventDefinition) {
63331      composeEventDefinition("EventDefinition", (EventDefinition)resource);
63332    } else if (resource instanceof Evidence) {
63333      composeEvidence("Evidence", (Evidence)resource);
63334    } else if (resource instanceof EvidenceReport) {
63335      composeEvidenceReport("EvidenceReport", (EvidenceReport)resource);
63336    } else if (resource instanceof EvidenceVariable) {
63337      composeEvidenceVariable("EvidenceVariable", (EvidenceVariable)resource);
63338    } else if (resource instanceof ExampleScenario) {
63339      composeExampleScenario("ExampleScenario", (ExampleScenario)resource);
63340    } else if (resource instanceof ExplanationOfBenefit) {
63341      composeExplanationOfBenefit("ExplanationOfBenefit", (ExplanationOfBenefit)resource);
63342    } else if (resource instanceof FamilyMemberHistory) {
63343      composeFamilyMemberHistory("FamilyMemberHistory", (FamilyMemberHistory)resource);
63344    } else if (resource instanceof Flag) {
63345      composeFlag("Flag", (Flag)resource);
63346    } else if (resource instanceof FormularyItem) {
63347      composeFormularyItem("FormularyItem", (FormularyItem)resource);
63348    } else if (resource instanceof GenomicStudy) {
63349      composeGenomicStudy("GenomicStudy", (GenomicStudy)resource);
63350    } else if (resource instanceof Goal) {
63351      composeGoal("Goal", (Goal)resource);
63352    } else if (resource instanceof GraphDefinition) {
63353      composeGraphDefinition("GraphDefinition", (GraphDefinition)resource);
63354    } else if (resource instanceof Group) {
63355      composeGroup("Group", (Group)resource);
63356    } else if (resource instanceof GuidanceResponse) {
63357      composeGuidanceResponse("GuidanceResponse", (GuidanceResponse)resource);
63358    } else if (resource instanceof HealthcareService) {
63359      composeHealthcareService("HealthcareService", (HealthcareService)resource);
63360    } else if (resource instanceof ImagingSelection) {
63361      composeImagingSelection("ImagingSelection", (ImagingSelection)resource);
63362    } else if (resource instanceof ImagingStudy) {
63363      composeImagingStudy("ImagingStudy", (ImagingStudy)resource);
63364    } else if (resource instanceof Immunization) {
63365      composeImmunization("Immunization", (Immunization)resource);
63366    } else if (resource instanceof ImmunizationEvaluation) {
63367      composeImmunizationEvaluation("ImmunizationEvaluation", (ImmunizationEvaluation)resource);
63368    } else if (resource instanceof ImmunizationRecommendation) {
63369      composeImmunizationRecommendation("ImmunizationRecommendation", (ImmunizationRecommendation)resource);
63370    } else if (resource instanceof ImplementationGuide) {
63371      composeImplementationGuide("ImplementationGuide", (ImplementationGuide)resource);
63372    } else if (resource instanceof Ingredient) {
63373      composeIngredient("Ingredient", (Ingredient)resource);
63374    } else if (resource instanceof InsurancePlan) {
63375      composeInsurancePlan("InsurancePlan", (InsurancePlan)resource);
63376    } else if (resource instanceof InventoryItem) {
63377      composeInventoryItem("InventoryItem", (InventoryItem)resource);
63378    } else if (resource instanceof InventoryReport) {
63379      composeInventoryReport("InventoryReport", (InventoryReport)resource);
63380    } else if (resource instanceof Invoice) {
63381      composeInvoice("Invoice", (Invoice)resource);
63382    } else if (resource instanceof Library) {
63383      composeLibrary("Library", (Library)resource);
63384    } else if (resource instanceof Linkage) {
63385      composeLinkage("Linkage", (Linkage)resource);
63386    } else if (resource instanceof ListResource) {
63387      composeListResource("List", (ListResource)resource);
63388    } else if (resource instanceof Location) {
63389      composeLocation("Location", (Location)resource);
63390    } else if (resource instanceof ManufacturedItemDefinition) {
63391      composeManufacturedItemDefinition("ManufacturedItemDefinition", (ManufacturedItemDefinition)resource);
63392    } else if (resource instanceof Measure) {
63393      composeMeasure("Measure", (Measure)resource);
63394    } else if (resource instanceof MeasureReport) {
63395      composeMeasureReport("MeasureReport", (MeasureReport)resource);
63396    } else if (resource instanceof Medication) {
63397      composeMedication("Medication", (Medication)resource);
63398    } else if (resource instanceof MedicationAdministration) {
63399      composeMedicationAdministration("MedicationAdministration", (MedicationAdministration)resource);
63400    } else if (resource instanceof MedicationDispense) {
63401      composeMedicationDispense("MedicationDispense", (MedicationDispense)resource);
63402    } else if (resource instanceof MedicationKnowledge) {
63403      composeMedicationKnowledge("MedicationKnowledge", (MedicationKnowledge)resource);
63404    } else if (resource instanceof MedicationRequest) {
63405      composeMedicationRequest("MedicationRequest", (MedicationRequest)resource);
63406    } else if (resource instanceof MedicationStatement) {
63407      composeMedicationStatement("MedicationStatement", (MedicationStatement)resource);
63408    } else if (resource instanceof MedicinalProductDefinition) {
63409      composeMedicinalProductDefinition("MedicinalProductDefinition", (MedicinalProductDefinition)resource);
63410    } else if (resource instanceof MessageDefinition) {
63411      composeMessageDefinition("MessageDefinition", (MessageDefinition)resource);
63412    } else if (resource instanceof MessageHeader) {
63413      composeMessageHeader("MessageHeader", (MessageHeader)resource);
63414    } else if (resource instanceof MolecularSequence) {
63415      composeMolecularSequence("MolecularSequence", (MolecularSequence)resource);
63416    } else if (resource instanceof NamingSystem) {
63417      composeNamingSystem("NamingSystem", (NamingSystem)resource);
63418    } else if (resource instanceof NutritionIntake) {
63419      composeNutritionIntake("NutritionIntake", (NutritionIntake)resource);
63420    } else if (resource instanceof NutritionOrder) {
63421      composeNutritionOrder("NutritionOrder", (NutritionOrder)resource);
63422    } else if (resource instanceof NutritionProduct) {
63423      composeNutritionProduct("NutritionProduct", (NutritionProduct)resource);
63424    } else if (resource instanceof Observation) {
63425      composeObservation("Observation", (Observation)resource);
63426    } else if (resource instanceof ObservationDefinition) {
63427      composeObservationDefinition("ObservationDefinition", (ObservationDefinition)resource);
63428    } else if (resource instanceof OperationDefinition) {
63429      composeOperationDefinition("OperationDefinition", (OperationDefinition)resource);
63430    } else if (resource instanceof OperationOutcome) {
63431      composeOperationOutcome("OperationOutcome", (OperationOutcome)resource);
63432    } else if (resource instanceof Organization) {
63433      composeOrganization("Organization", (Organization)resource);
63434    } else if (resource instanceof OrganizationAffiliation) {
63435      composeOrganizationAffiliation("OrganizationAffiliation", (OrganizationAffiliation)resource);
63436    } else if (resource instanceof PackagedProductDefinition) {
63437      composePackagedProductDefinition("PackagedProductDefinition", (PackagedProductDefinition)resource);
63438    } else if (resource instanceof Parameters) {
63439      composeParameters("Parameters", (Parameters)resource);
63440    } else if (resource instanceof Patient) {
63441      composePatient("Patient", (Patient)resource);
63442    } else if (resource instanceof PaymentNotice) {
63443      composePaymentNotice("PaymentNotice", (PaymentNotice)resource);
63444    } else if (resource instanceof PaymentReconciliation) {
63445      composePaymentReconciliation("PaymentReconciliation", (PaymentReconciliation)resource);
63446    } else if (resource instanceof Permission) {
63447      composePermission("Permission", (Permission)resource);
63448    } else if (resource instanceof Person) {
63449      composePerson("Person", (Person)resource);
63450    } else if (resource instanceof PlanDefinition) {
63451      composePlanDefinition("PlanDefinition", (PlanDefinition)resource);
63452    } else if (resource instanceof Practitioner) {
63453      composePractitioner("Practitioner", (Practitioner)resource);
63454    } else if (resource instanceof PractitionerRole) {
63455      composePractitionerRole("PractitionerRole", (PractitionerRole)resource);
63456    } else if (resource instanceof Procedure) {
63457      composeProcedure("Procedure", (Procedure)resource);
63458    } else if (resource instanceof Provenance) {
63459      composeProvenance("Provenance", (Provenance)resource);
63460    } else if (resource instanceof Questionnaire) {
63461      composeQuestionnaire("Questionnaire", (Questionnaire)resource);
63462    } else if (resource instanceof QuestionnaireResponse) {
63463      composeQuestionnaireResponse("QuestionnaireResponse", (QuestionnaireResponse)resource);
63464    } else if (resource instanceof RegulatedAuthorization) {
63465      composeRegulatedAuthorization("RegulatedAuthorization", (RegulatedAuthorization)resource);
63466    } else if (resource instanceof RelatedPerson) {
63467      composeRelatedPerson("RelatedPerson", (RelatedPerson)resource);
63468    } else if (resource instanceof RequestOrchestration) {
63469      composeRequestOrchestration("RequestOrchestration", (RequestOrchestration)resource);
63470    } else if (resource instanceof Requirements) {
63471      composeRequirements("Requirements", (Requirements)resource);
63472    } else if (resource instanceof ResearchStudy) {
63473      composeResearchStudy("ResearchStudy", (ResearchStudy)resource);
63474    } else if (resource instanceof ResearchSubject) {
63475      composeResearchSubject("ResearchSubject", (ResearchSubject)resource);
63476    } else if (resource instanceof RiskAssessment) {
63477      composeRiskAssessment("RiskAssessment", (RiskAssessment)resource);
63478    } else if (resource instanceof Schedule) {
63479      composeSchedule("Schedule", (Schedule)resource);
63480    } else if (resource instanceof SearchParameter) {
63481      composeSearchParameter("SearchParameter", (SearchParameter)resource);
63482    } else if (resource instanceof ServiceRequest) {
63483      composeServiceRequest("ServiceRequest", (ServiceRequest)resource);
63484    } else if (resource instanceof Slot) {
63485      composeSlot("Slot", (Slot)resource);
63486    } else if (resource instanceof Specimen) {
63487      composeSpecimen("Specimen", (Specimen)resource);
63488    } else if (resource instanceof SpecimenDefinition) {
63489      composeSpecimenDefinition("SpecimenDefinition", (SpecimenDefinition)resource);
63490    } else if (resource instanceof StructureDefinition) {
63491      composeStructureDefinition("StructureDefinition", (StructureDefinition)resource);
63492    } else if (resource instanceof StructureMap) {
63493      composeStructureMap("StructureMap", (StructureMap)resource);
63494    } else if (resource instanceof Subscription) {
63495      composeSubscription("Subscription", (Subscription)resource);
63496    } else if (resource instanceof SubscriptionStatus) {
63497      composeSubscriptionStatus("SubscriptionStatus", (SubscriptionStatus)resource);
63498    } else if (resource instanceof SubscriptionTopic) {
63499      composeSubscriptionTopic("SubscriptionTopic", (SubscriptionTopic)resource);
63500    } else if (resource instanceof Substance) {
63501      composeSubstance("Substance", (Substance)resource);
63502    } else if (resource instanceof SubstanceDefinition) {
63503      composeSubstanceDefinition("SubstanceDefinition", (SubstanceDefinition)resource);
63504    } else if (resource instanceof SubstanceNucleicAcid) {
63505      composeSubstanceNucleicAcid("SubstanceNucleicAcid", (SubstanceNucleicAcid)resource);
63506    } else if (resource instanceof SubstancePolymer) {
63507      composeSubstancePolymer("SubstancePolymer", (SubstancePolymer)resource);
63508    } else if (resource instanceof SubstanceProtein) {
63509      composeSubstanceProtein("SubstanceProtein", (SubstanceProtein)resource);
63510    } else if (resource instanceof SubstanceReferenceInformation) {
63511      composeSubstanceReferenceInformation("SubstanceReferenceInformation", (SubstanceReferenceInformation)resource);
63512    } else if (resource instanceof SubstanceSourceMaterial) {
63513      composeSubstanceSourceMaterial("SubstanceSourceMaterial", (SubstanceSourceMaterial)resource);
63514    } else if (resource instanceof SupplyDelivery) {
63515      composeSupplyDelivery("SupplyDelivery", (SupplyDelivery)resource);
63516    } else if (resource instanceof SupplyRequest) {
63517      composeSupplyRequest("SupplyRequest", (SupplyRequest)resource);
63518    } else if (resource instanceof Task) {
63519      composeTask("Task", (Task)resource);
63520    } else if (resource instanceof TerminologyCapabilities) {
63521      composeTerminologyCapabilities("TerminologyCapabilities", (TerminologyCapabilities)resource);
63522    } else if (resource instanceof TestPlan) {
63523      composeTestPlan("TestPlan", (TestPlan)resource);
63524    } else if (resource instanceof TestReport) {
63525      composeTestReport("TestReport", (TestReport)resource);
63526    } else if (resource instanceof TestScript) {
63527      composeTestScript("TestScript", (TestScript)resource);
63528    } else if (resource instanceof Transport) {
63529      composeTransport("Transport", (Transport)resource);
63530    } else if (resource instanceof ValueSet) {
63531      composeValueSet("ValueSet", (ValueSet)resource);
63532    } else if (resource instanceof VerificationResult) {
63533      composeVerificationResult("VerificationResult", (VerificationResult)resource);
63534    } else if (resource instanceof VisionPrescription) {
63535      composeVisionPrescription("VisionPrescription", (VisionPrescription)resource);
63536    } else if (!composeCustomResource(resource)) {
63537      throw new Error("Unhandled resource type "+resource.getClass().getName());
63538    }
63539  }
63540
63541
63542  protected void composeResource(String name, Resource resource) throws IOException {
63543    if (name == null) {
63544      throw new IOException("name == null");
63545    } else if (resource == null) {
63546      throw new IOException("resource == null");
63547    } else if (resource instanceof Account) {
63548      composeAccount(name, (Account)resource);
63549    } else if (resource instanceof ActivityDefinition) {
63550      composeActivityDefinition(name, (ActivityDefinition)resource);
63551    } else if (resource instanceof ActorDefinition) {
63552      composeActorDefinition(name, (ActorDefinition)resource);
63553    } else if (resource instanceof AdministrableProductDefinition) {
63554      composeAdministrableProductDefinition(name, (AdministrableProductDefinition)resource);
63555    } else if (resource instanceof AdverseEvent) {
63556      composeAdverseEvent(name, (AdverseEvent)resource);
63557    } else if (resource instanceof AllergyIntolerance) {
63558      composeAllergyIntolerance(name, (AllergyIntolerance)resource);
63559    } else if (resource instanceof Appointment) {
63560      composeAppointment(name, (Appointment)resource);
63561    } else if (resource instanceof AppointmentResponse) {
63562      composeAppointmentResponse(name, (AppointmentResponse)resource);
63563    } else if (resource instanceof ArtifactAssessment) {
63564      composeArtifactAssessment(name, (ArtifactAssessment)resource);
63565    } else if (resource instanceof AuditEvent) {
63566      composeAuditEvent(name, (AuditEvent)resource);
63567    } else if (resource instanceof Basic) {
63568      composeBasic(name, (Basic)resource);
63569    } else if (resource instanceof Binary) {
63570      composeBinary(name, (Binary)resource);
63571    } else if (resource instanceof BiologicallyDerivedProduct) {
63572      composeBiologicallyDerivedProduct(name, (BiologicallyDerivedProduct)resource);
63573    } else if (resource instanceof BiologicallyDerivedProductDispense) {
63574      composeBiologicallyDerivedProductDispense(name, (BiologicallyDerivedProductDispense)resource);
63575    } else if (resource instanceof BodyStructure) {
63576      composeBodyStructure(name, (BodyStructure)resource);
63577    } else if (resource instanceof Bundle) {
63578      composeBundle(name, (Bundle)resource);
63579    } else if (resource instanceof CapabilityStatement) {
63580      composeCapabilityStatement(name, (CapabilityStatement)resource);
63581    } else if (resource instanceof CarePlan) {
63582      composeCarePlan(name, (CarePlan)resource);
63583    } else if (resource instanceof CareTeam) {
63584      composeCareTeam(name, (CareTeam)resource);
63585    } else if (resource instanceof ChargeItem) {
63586      composeChargeItem(name, (ChargeItem)resource);
63587    } else if (resource instanceof ChargeItemDefinition) {
63588      composeChargeItemDefinition(name, (ChargeItemDefinition)resource);
63589    } else if (resource instanceof Citation) {
63590      composeCitation(name, (Citation)resource);
63591    } else if (resource instanceof Claim) {
63592      composeClaim(name, (Claim)resource);
63593    } else if (resource instanceof ClaimResponse) {
63594      composeClaimResponse(name, (ClaimResponse)resource);
63595    } else if (resource instanceof ClinicalImpression) {
63596      composeClinicalImpression(name, (ClinicalImpression)resource);
63597    } else if (resource instanceof ClinicalUseDefinition) {
63598      composeClinicalUseDefinition(name, (ClinicalUseDefinition)resource);
63599    } else if (resource instanceof CodeSystem) {
63600      composeCodeSystem(name, (CodeSystem)resource);
63601    } else if (resource instanceof Communication) {
63602      composeCommunication(name, (Communication)resource);
63603    } else if (resource instanceof CommunicationRequest) {
63604      composeCommunicationRequest(name, (CommunicationRequest)resource);
63605    } else if (resource instanceof CompartmentDefinition) {
63606      composeCompartmentDefinition(name, (CompartmentDefinition)resource);
63607    } else if (resource instanceof Composition) {
63608      composeComposition(name, (Composition)resource);
63609    } else if (resource instanceof ConceptMap) {
63610      composeConceptMap(name, (ConceptMap)resource);
63611    } else if (resource instanceof Condition) {
63612      composeCondition(name, (Condition)resource);
63613    } else if (resource instanceof ConditionDefinition) {
63614      composeConditionDefinition(name, (ConditionDefinition)resource);
63615    } else if (resource instanceof Consent) {
63616      composeConsent(name, (Consent)resource);
63617    } else if (resource instanceof Contract) {
63618      composeContract(name, (Contract)resource);
63619    } else if (resource instanceof Coverage) {
63620      composeCoverage(name, (Coverage)resource);
63621    } else if (resource instanceof CoverageEligibilityRequest) {
63622      composeCoverageEligibilityRequest(name, (CoverageEligibilityRequest)resource);
63623    } else if (resource instanceof CoverageEligibilityResponse) {
63624      composeCoverageEligibilityResponse(name, (CoverageEligibilityResponse)resource);
63625    } else if (resource instanceof DetectedIssue) {
63626      composeDetectedIssue(name, (DetectedIssue)resource);
63627    } else if (resource instanceof Device) {
63628      composeDevice(name, (Device)resource);
63629    } else if (resource instanceof DeviceAssociation) {
63630      composeDeviceAssociation(name, (DeviceAssociation)resource);
63631    } else if (resource instanceof DeviceDefinition) {
63632      composeDeviceDefinition(name, (DeviceDefinition)resource);
63633    } else if (resource instanceof DeviceDispense) {
63634      composeDeviceDispense(name, (DeviceDispense)resource);
63635    } else if (resource instanceof DeviceMetric) {
63636      composeDeviceMetric(name, (DeviceMetric)resource);
63637    } else if (resource instanceof DeviceRequest) {
63638      composeDeviceRequest(name, (DeviceRequest)resource);
63639    } else if (resource instanceof DeviceUsage) {
63640      composeDeviceUsage(name, (DeviceUsage)resource);
63641    } else if (resource instanceof DiagnosticReport) {
63642      composeDiagnosticReport(name, (DiagnosticReport)resource);
63643    } else if (resource instanceof DocumentReference) {
63644      composeDocumentReference(name, (DocumentReference)resource);
63645    } else if (resource instanceof Encounter) {
63646      composeEncounter(name, (Encounter)resource);
63647    } else if (resource instanceof EncounterHistory) {
63648      composeEncounterHistory(name, (EncounterHistory)resource);
63649    } else if (resource instanceof Endpoint) {
63650      composeEndpoint(name, (Endpoint)resource);
63651    } else if (resource instanceof EnrollmentRequest) {
63652      composeEnrollmentRequest(name, (EnrollmentRequest)resource);
63653    } else if (resource instanceof EnrollmentResponse) {
63654      composeEnrollmentResponse(name, (EnrollmentResponse)resource);
63655    } else if (resource instanceof EpisodeOfCare) {
63656      composeEpisodeOfCare(name, (EpisodeOfCare)resource);
63657    } else if (resource instanceof EventDefinition) {
63658      composeEventDefinition(name, (EventDefinition)resource);
63659    } else if (resource instanceof Evidence) {
63660      composeEvidence(name, (Evidence)resource);
63661    } else if (resource instanceof EvidenceReport) {
63662      composeEvidenceReport(name, (EvidenceReport)resource);
63663    } else if (resource instanceof EvidenceVariable) {
63664      composeEvidenceVariable(name, (EvidenceVariable)resource);
63665    } else if (resource instanceof ExampleScenario) {
63666      composeExampleScenario(name, (ExampleScenario)resource);
63667    } else if (resource instanceof ExplanationOfBenefit) {
63668      composeExplanationOfBenefit(name, (ExplanationOfBenefit)resource);
63669    } else if (resource instanceof FamilyMemberHistory) {
63670      composeFamilyMemberHistory(name, (FamilyMemberHistory)resource);
63671    } else if (resource instanceof Flag) {
63672      composeFlag(name, (Flag)resource);
63673    } else if (resource instanceof FormularyItem) {
63674      composeFormularyItem(name, (FormularyItem)resource);
63675    } else if (resource instanceof GenomicStudy) {
63676      composeGenomicStudy(name, (GenomicStudy)resource);
63677    } else if (resource instanceof Goal) {
63678      composeGoal(name, (Goal)resource);
63679    } else if (resource instanceof GraphDefinition) {
63680      composeGraphDefinition(name, (GraphDefinition)resource);
63681    } else if (resource instanceof Group) {
63682      composeGroup(name, (Group)resource);
63683    } else if (resource instanceof GuidanceResponse) {
63684      composeGuidanceResponse(name, (GuidanceResponse)resource);
63685    } else if (resource instanceof HealthcareService) {
63686      composeHealthcareService(name, (HealthcareService)resource);
63687    } else if (resource instanceof ImagingSelection) {
63688      composeImagingSelection(name, (ImagingSelection)resource);
63689    } else if (resource instanceof ImagingStudy) {
63690      composeImagingStudy(name, (ImagingStudy)resource);
63691    } else if (resource instanceof Immunization) {
63692      composeImmunization(name, (Immunization)resource);
63693    } else if (resource instanceof ImmunizationEvaluation) {
63694      composeImmunizationEvaluation(name, (ImmunizationEvaluation)resource);
63695    } else if (resource instanceof ImmunizationRecommendation) {
63696      composeImmunizationRecommendation(name, (ImmunizationRecommendation)resource);
63697    } else if (resource instanceof ImplementationGuide) {
63698      composeImplementationGuide(name, (ImplementationGuide)resource);
63699    } else if (resource instanceof Ingredient) {
63700      composeIngredient(name, (Ingredient)resource);
63701    } else if (resource instanceof InsurancePlan) {
63702      composeInsurancePlan(name, (InsurancePlan)resource);
63703    } else if (resource instanceof InventoryItem) {
63704      composeInventoryItem(name, (InventoryItem)resource);
63705    } else if (resource instanceof InventoryReport) {
63706      composeInventoryReport(name, (InventoryReport)resource);
63707    } else if (resource instanceof Invoice) {
63708      composeInvoice(name, (Invoice)resource);
63709    } else if (resource instanceof Library) {
63710      composeLibrary(name, (Library)resource);
63711    } else if (resource instanceof Linkage) {
63712      composeLinkage(name, (Linkage)resource);
63713    } else if (resource instanceof ListResource) {
63714      composeListResource(name, (ListResource)resource);
63715    } else if (resource instanceof Location) {
63716      composeLocation(name, (Location)resource);
63717    } else if (resource instanceof ManufacturedItemDefinition) {
63718      composeManufacturedItemDefinition(name, (ManufacturedItemDefinition)resource);
63719    } else if (resource instanceof Measure) {
63720      composeMeasure(name, (Measure)resource);
63721    } else if (resource instanceof MeasureReport) {
63722      composeMeasureReport(name, (MeasureReport)resource);
63723    } else if (resource instanceof Medication) {
63724      composeMedication(name, (Medication)resource);
63725    } else if (resource instanceof MedicationAdministration) {
63726      composeMedicationAdministration(name, (MedicationAdministration)resource);
63727    } else if (resource instanceof MedicationDispense) {
63728      composeMedicationDispense(name, (MedicationDispense)resource);
63729    } else if (resource instanceof MedicationKnowledge) {
63730      composeMedicationKnowledge(name, (MedicationKnowledge)resource);
63731    } else if (resource instanceof MedicationRequest) {
63732      composeMedicationRequest(name, (MedicationRequest)resource);
63733    } else if (resource instanceof MedicationStatement) {
63734      composeMedicationStatement(name, (MedicationStatement)resource);
63735    } else if (resource instanceof MedicinalProductDefinition) {
63736      composeMedicinalProductDefinition(name, (MedicinalProductDefinition)resource);
63737    } else if (resource instanceof MessageDefinition) {
63738      composeMessageDefinition(name, (MessageDefinition)resource);
63739    } else if (resource instanceof MessageHeader) {
63740      composeMessageHeader(name, (MessageHeader)resource);
63741    } else if (resource instanceof MolecularSequence) {
63742      composeMolecularSequence(name, (MolecularSequence)resource);
63743    } else if (resource instanceof NamingSystem) {
63744      composeNamingSystem(name, (NamingSystem)resource);
63745    } else if (resource instanceof NutritionIntake) {
63746      composeNutritionIntake(name, (NutritionIntake)resource);
63747    } else if (resource instanceof NutritionOrder) {
63748      composeNutritionOrder(name, (NutritionOrder)resource);
63749    } else if (resource instanceof NutritionProduct) {
63750      composeNutritionProduct(name, (NutritionProduct)resource);
63751    } else if (resource instanceof Observation) {
63752      composeObservation(name, (Observation)resource);
63753    } else if (resource instanceof ObservationDefinition) {
63754      composeObservationDefinition(name, (ObservationDefinition)resource);
63755    } else if (resource instanceof OperationDefinition) {
63756      composeOperationDefinition(name, (OperationDefinition)resource);
63757    } else if (resource instanceof OperationOutcome) {
63758      composeOperationOutcome(name, (OperationOutcome)resource);
63759    } else if (resource instanceof Organization) {
63760      composeOrganization(name, (Organization)resource);
63761    } else if (resource instanceof OrganizationAffiliation) {
63762      composeOrganizationAffiliation(name, (OrganizationAffiliation)resource);
63763    } else if (resource instanceof PackagedProductDefinition) {
63764      composePackagedProductDefinition(name, (PackagedProductDefinition)resource);
63765    } else if (resource instanceof Parameters) {
63766      composeParameters(name, (Parameters)resource);
63767    } else if (resource instanceof Patient) {
63768      composePatient(name, (Patient)resource);
63769    } else if (resource instanceof PaymentNotice) {
63770      composePaymentNotice(name, (PaymentNotice)resource);
63771    } else if (resource instanceof PaymentReconciliation) {
63772      composePaymentReconciliation(name, (PaymentReconciliation)resource);
63773    } else if (resource instanceof Permission) {
63774      composePermission(name, (Permission)resource);
63775    } else if (resource instanceof Person) {
63776      composePerson(name, (Person)resource);
63777    } else if (resource instanceof PlanDefinition) {
63778      composePlanDefinition(name, (PlanDefinition)resource);
63779    } else if (resource instanceof Practitioner) {
63780      composePractitioner(name, (Practitioner)resource);
63781    } else if (resource instanceof PractitionerRole) {
63782      composePractitionerRole(name, (PractitionerRole)resource);
63783    } else if (resource instanceof Procedure) {
63784      composeProcedure(name, (Procedure)resource);
63785    } else if (resource instanceof Provenance) {
63786      composeProvenance(name, (Provenance)resource);
63787    } else if (resource instanceof Questionnaire) {
63788      composeQuestionnaire(name, (Questionnaire)resource);
63789    } else if (resource instanceof QuestionnaireResponse) {
63790      composeQuestionnaireResponse(name, (QuestionnaireResponse)resource);
63791    } else if (resource instanceof RegulatedAuthorization) {
63792      composeRegulatedAuthorization(name, (RegulatedAuthorization)resource);
63793    } else if (resource instanceof RelatedPerson) {
63794      composeRelatedPerson(name, (RelatedPerson)resource);
63795    } else if (resource instanceof RequestOrchestration) {
63796      composeRequestOrchestration(name, (RequestOrchestration)resource);
63797    } else if (resource instanceof Requirements) {
63798      composeRequirements(name, (Requirements)resource);
63799    } else if (resource instanceof ResearchStudy) {
63800      composeResearchStudy(name, (ResearchStudy)resource);
63801    } else if (resource instanceof ResearchSubject) {
63802      composeResearchSubject(name, (ResearchSubject)resource);
63803    } else if (resource instanceof RiskAssessment) {
63804      composeRiskAssessment(name, (RiskAssessment)resource);
63805    } else if (resource instanceof Schedule) {
63806      composeSchedule(name, (Schedule)resource);
63807    } else if (resource instanceof SearchParameter) {
63808      composeSearchParameter(name, (SearchParameter)resource);
63809    } else if (resource instanceof ServiceRequest) {
63810      composeServiceRequest(name, (ServiceRequest)resource);
63811    } else if (resource instanceof Slot) {
63812      composeSlot(name, (Slot)resource);
63813    } else if (resource instanceof Specimen) {
63814      composeSpecimen(name, (Specimen)resource);
63815    } else if (resource instanceof SpecimenDefinition) {
63816      composeSpecimenDefinition(name, (SpecimenDefinition)resource);
63817    } else if (resource instanceof StructureDefinition) {
63818      composeStructureDefinition(name, (StructureDefinition)resource);
63819    } else if (resource instanceof StructureMap) {
63820      composeStructureMap(name, (StructureMap)resource);
63821    } else if (resource instanceof Subscription) {
63822      composeSubscription(name, (Subscription)resource);
63823    } else if (resource instanceof SubscriptionStatus) {
63824      composeSubscriptionStatus(name, (SubscriptionStatus)resource);
63825    } else if (resource instanceof SubscriptionTopic) {
63826      composeSubscriptionTopic(name, (SubscriptionTopic)resource);
63827    } else if (resource instanceof Substance) {
63828      composeSubstance(name, (Substance)resource);
63829    } else if (resource instanceof SubstanceDefinition) {
63830      composeSubstanceDefinition(name, (SubstanceDefinition)resource);
63831    } else if (resource instanceof SubstanceNucleicAcid) {
63832      composeSubstanceNucleicAcid(name, (SubstanceNucleicAcid)resource);
63833    } else if (resource instanceof SubstancePolymer) {
63834      composeSubstancePolymer(name, (SubstancePolymer)resource);
63835    } else if (resource instanceof SubstanceProtein) {
63836      composeSubstanceProtein(name, (SubstanceProtein)resource);
63837    } else if (resource instanceof SubstanceReferenceInformation) {
63838      composeSubstanceReferenceInformation(name, (SubstanceReferenceInformation)resource);
63839    } else if (resource instanceof SubstanceSourceMaterial) {
63840      composeSubstanceSourceMaterial(name, (SubstanceSourceMaterial)resource);
63841    } else if (resource instanceof SupplyDelivery) {
63842      composeSupplyDelivery(name, (SupplyDelivery)resource);
63843    } else if (resource instanceof SupplyRequest) {
63844      composeSupplyRequest(name, (SupplyRequest)resource);
63845    } else if (resource instanceof Task) {
63846      composeTask(name, (Task)resource);
63847    } else if (resource instanceof TerminologyCapabilities) {
63848      composeTerminologyCapabilities(name, (TerminologyCapabilities)resource);
63849    } else if (resource instanceof TestPlan) {
63850      composeTestPlan(name, (TestPlan)resource);
63851    } else if (resource instanceof TestReport) {
63852      composeTestReport(name, (TestReport)resource);
63853    } else if (resource instanceof TestScript) {
63854      composeTestScript(name, (TestScript)resource);
63855    } else if (resource instanceof Transport) {
63856      composeTransport(name, (Transport)resource);
63857    } else if (resource instanceof ValueSet) {
63858      composeValueSet(name, (ValueSet)resource);
63859    } else if (resource instanceof VerificationResult) {
63860      composeVerificationResult(name, (VerificationResult)resource);
63861    } else if (resource instanceof VisionPrescription) {
63862      composeVisionPrescription(name, (VisionPrescription)resource);
63863      
63864    } else {
63865      throw new Error("Unhandled resource type "+resource.getClass().getName());
63866    }
63867  }
63868
63869  protected void composeType(String prefix, DataType type) throws IOException {
63870    if (prefix == null) {
63871      throw new IOException("prefix == null");
63872    } else if (type == null) {
63873      throw new IOException("type == null");
63874    } else if (type instanceof Address) {
63875       composeAddress(prefix+"Address", (Address) type);
63876    } else if (type instanceof Age) {
63877       composeAge(prefix+"Age", (Age) type);
63878    } else if (type instanceof Annotation) {
63879       composeAnnotation(prefix+"Annotation", (Annotation) type);
63880    } else if (type instanceof Attachment) {
63881       composeAttachment(prefix+"Attachment", (Attachment) type);
63882    } else if (type instanceof Availability) {
63883       composeAvailability(prefix+"Availability", (Availability) type);
63884    } else if (type instanceof CodeableConcept) {
63885       composeCodeableConcept(prefix+"CodeableConcept", (CodeableConcept) type);
63886    } else if (type instanceof CodeableReference) {
63887       composeCodeableReference(prefix+"CodeableReference", (CodeableReference) type);
63888    } else if (type instanceof Coding) {
63889       composeCoding(prefix+"Coding", (Coding) type);
63890    } else if (type instanceof ContactDetail) {
63891       composeContactDetail(prefix+"ContactDetail", (ContactDetail) type);
63892    } else if (type instanceof ContactPoint) {
63893       composeContactPoint(prefix+"ContactPoint", (ContactPoint) type);
63894    } else if (type instanceof Contributor) {
63895       composeContributor(prefix+"Contributor", (Contributor) type);
63896    } else if (type instanceof Count) {
63897       composeCount(prefix+"Count", (Count) type);
63898    } else if (type instanceof DataRequirement) {
63899       composeDataRequirement(prefix+"DataRequirement", (DataRequirement) type);
63900    } else if (type instanceof Distance) {
63901       composeDistance(prefix+"Distance", (Distance) type);
63902    } else if (type instanceof Dosage) {
63903       composeDosage(prefix+"Dosage", (Dosage) type);
63904    } else if (type instanceof Duration) {
63905       composeDuration(prefix+"Duration", (Duration) type);
63906    } else if (type instanceof ElementDefinition) {
63907       composeElementDefinition(prefix+"ElementDefinition", (ElementDefinition) type);
63908    } else if (type instanceof Expression) {
63909       composeExpression(prefix+"Expression", (Expression) type);
63910    } else if (type instanceof ExtendedContactDetail) {
63911       composeExtendedContactDetail(prefix+"ExtendedContactDetail", (ExtendedContactDetail) type);
63912    } else if (type instanceof Extension) {
63913       composeExtension(prefix+"Extension", (Extension) type);
63914    } else if (type instanceof HumanName) {
63915       composeHumanName(prefix+"HumanName", (HumanName) type);
63916    } else if (type instanceof Identifier) {
63917       composeIdentifier(prefix+"Identifier", (Identifier) type);
63918    } else if (type instanceof MarketingStatus) {
63919       composeMarketingStatus(prefix+"MarketingStatus", (MarketingStatus) type);
63920    } else if (type instanceof Meta) {
63921       composeMeta(prefix+"Meta", (Meta) type);
63922    } else if (type instanceof MonetaryComponent) {
63923       composeMonetaryComponent(prefix+"MonetaryComponent", (MonetaryComponent) type);
63924    } else if (type instanceof Money) {
63925       composeMoney(prefix+"Money", (Money) type);
63926    } else if (type instanceof Narrative) {
63927       composeNarrative(prefix+"Narrative", (Narrative) type);
63928    } else if (type instanceof ParameterDefinition) {
63929       composeParameterDefinition(prefix+"ParameterDefinition", (ParameterDefinition) type);
63930    } else if (type instanceof Period) {
63931       composePeriod(prefix+"Period", (Period) type);
63932    } else if (type instanceof ProductShelfLife) {
63933       composeProductShelfLife(prefix+"ProductShelfLife", (ProductShelfLife) type);
63934    } else if (type instanceof Quantity) {
63935       composeQuantity(prefix+"Quantity", (Quantity) type);
63936    } else if (type instanceof Range) {
63937       composeRange(prefix+"Range", (Range) type);
63938    } else if (type instanceof Ratio) {
63939       composeRatio(prefix+"Ratio", (Ratio) type);
63940    } else if (type instanceof RatioRange) {
63941       composeRatioRange(prefix+"RatioRange", (RatioRange) type);
63942    } else if (type instanceof Reference) {
63943       composeReference(prefix+"Reference", (Reference) type);
63944    } else if (type instanceof RelatedArtifact) {
63945       composeRelatedArtifact(prefix+"RelatedArtifact", (RelatedArtifact) type);
63946    } else if (type instanceof SampledData) {
63947       composeSampledData(prefix+"SampledData", (SampledData) type);
63948    } else if (type instanceof Signature) {
63949       composeSignature(prefix+"Signature", (Signature) type);
63950    } else if (type instanceof Timing) {
63951       composeTiming(prefix+"Timing", (Timing) type);
63952    } else if (type instanceof TriggerDefinition) {
63953       composeTriggerDefinition(prefix+"TriggerDefinition", (TriggerDefinition) type);
63954    } else if (type instanceof UsageContext) {
63955       composeUsageContext(prefix+"UsageContext", (UsageContext) type);
63956    } else if (type instanceof VirtualServiceDetail) {
63957       composeVirtualServiceDetail(prefix+"VirtualServiceDetail", (VirtualServiceDetail) type);
63958
63959    } else if (type instanceof CodeType) {
63960       composeCode(prefix+"Code", (CodeType) type);
63961    } else if (type instanceof OidType) {
63962       composeOid(prefix+"Oid", (OidType) type);
63963    } else if (type instanceof CanonicalType) {
63964       composeCanonical(prefix+"Canonical", (CanonicalType) type);
63965    } else if (type instanceof UuidType) {
63966       composeUuid(prefix+"Uuid", (UuidType) type);
63967    } else if (type instanceof UrlType) {
63968       composeUrl(prefix+"Url", (UrlType) type);
63969    } else if (type instanceof UnsignedIntType) {
63970       composeUnsignedInt(prefix+"UnsignedInt", (UnsignedIntType) type);
63971    } else if (type instanceof MarkdownType) {
63972       composeMarkdown(prefix+"Markdown", (MarkdownType) type);
63973    } else if (type instanceof IdType) {
63974       composeId(prefix+"Id", (IdType) type);
63975    } else if (type instanceof PositiveIntType) {
63976       composePositiveInt(prefix+"PositiveInt", (PositiveIntType) type);
63977    } else if (type instanceof DateType) {
63978       composeDate(prefix+"Date", (DateType) type);
63979    } else if (type instanceof DateTimeType) {
63980       composeDateTime(prefix+"DateTime", (DateTimeType) type);
63981    } else if (type instanceof StringType) {
63982       composeString(prefix+"String", (StringType) type);
63983    } else if (type instanceof IntegerType) {
63984      composeInteger(prefix+"Integer", (IntegerType) type);
63985    } else if (type instanceof Integer64Type) {
63986      composeInteger64(prefix+"Integer64", (Integer64Type) type);
63987    } else if (type instanceof UriType) {
63988       composeUri(prefix+"Uri", (UriType) type);
63989    } else if (type instanceof InstantType) {
63990       composeInstant(prefix+"Instant", (InstantType) type);
63991    } else if (type instanceof BooleanType) {
63992       composeBoolean(prefix+"Boolean", (BooleanType) type);
63993    } else if (type instanceof Base64BinaryType) {
63994       composeBase64Binary(prefix+"Base64Binary", (Base64BinaryType) type);
63995    } else if (type instanceof TimeType) {
63996       composeTime(prefix+"Time", (TimeType) type);
63997    } else if (type instanceof DecimalType) {
63998       composeDecimal(prefix+"Decimal", (DecimalType) type);
63999    } else {
64000      throw new Error("Unhandled type "+type.fhirType());
64001    }
64002  }
64003
64004}