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      throw new FHIRFormatError("Unknown resource type "+xpp.getName()+"");
30928    }
30929  }
30930
30931  protected DataType parseType(String prefix, XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
30932    if (prefix == null) {
30933      throw new IOException("prefix == null!");
30934    } else if (xpp == null) {
30935      throw new IOException("xpp == null!");
30936    } else if (xpp.getName().equals(prefix+"Date")) {
30937      return parseDate(xpp);
30938    } else if (xpp.getName().equals(prefix+"DateTime")) {
30939      return parseDateTime(xpp);
30940    } else if (xpp.getName().equals(prefix+"Code")) {
30941      return parseCode(xpp);
30942    } else if (xpp.getName().equals(prefix+"String")) {
30943      return parseString(xpp);
30944    } else if (xpp.getName().equals(prefix+"Integer")) {
30945      return parseInteger(xpp);
30946    } else if (xpp.getName().equals(prefix+"Integer64")) {
30947      return parseInteger64(xpp);
30948    } else if (xpp.getName().equals(prefix+"Oid")) {
30949      return parseOid(xpp);
30950    } else if (xpp.getName().equals(prefix+"Canonical")) {
30951      return parseCanonical(xpp);
30952    } else if (xpp.getName().equals(prefix+"Uri")) {
30953      return parseUri(xpp);
30954    } else if (xpp.getName().equals(prefix+"Uuid")) {
30955      return parseUuid(xpp);
30956    } else if (xpp.getName().equals(prefix+"Url")) {
30957      return parseUrl(xpp);
30958    } else if (xpp.getName().equals(prefix+"Instant")) {
30959      return parseInstant(xpp);
30960    } else if (xpp.getName().equals(prefix+"Boolean")) {
30961      return parseBoolean(xpp);
30962    } else if (xpp.getName().equals(prefix+"Base64Binary")) {
30963      return parseBase64Binary(xpp);
30964    } else if (xpp.getName().equals(prefix+"UnsignedInt")) {
30965      return parseUnsignedInt(xpp);
30966    } else if (xpp.getName().equals(prefix+"Markdown")) {
30967      return parseMarkdown(xpp);
30968    } else if (xpp.getName().equals(prefix+"Time")) {
30969      return parseTime(xpp);
30970    } else if (xpp.getName().equals(prefix+"Id")) {
30971      return parseId(xpp);
30972    } else if (xpp.getName().equals(prefix+"PositiveInt")) {
30973      return parsePositiveInt(xpp);
30974    } else if (xpp.getName().equals(prefix+"Decimal")) {
30975      return parseDecimal(xpp);
30976    } else if (xpp.getName().equals(prefix+"Address")) {
30977      return parseAddress(xpp);
30978    } else if (xpp.getName().equals(prefix+"Age")) {
30979      return parseAge(xpp);
30980    } else if (xpp.getName().equals(prefix+"Annotation")) {
30981      return parseAnnotation(xpp);
30982    } else if (xpp.getName().equals(prefix+"Attachment")) {
30983      return parseAttachment(xpp);
30984    } else if (xpp.getName().equals(prefix+"Availability")) {
30985      return parseAvailability(xpp);
30986    } else if (xpp.getName().equals(prefix+"CodeableConcept")) {
30987      return parseCodeableConcept(xpp);
30988    } else if (xpp.getName().equals(prefix+"CodeableReference")) {
30989      return parseCodeableReference(xpp);
30990    } else if (xpp.getName().equals(prefix+"Coding")) {
30991      return parseCoding(xpp);
30992    } else if (xpp.getName().equals(prefix+"ContactDetail")) {
30993      return parseContactDetail(xpp);
30994    } else if (xpp.getName().equals(prefix+"ContactPoint")) {
30995      return parseContactPoint(xpp);
30996    } else if (xpp.getName().equals(prefix+"Contributor")) {
30997      return parseContributor(xpp);
30998    } else if (xpp.getName().equals(prefix+"Count")) {
30999      return parseCount(xpp);
31000    } else if (xpp.getName().equals(prefix+"DataRequirement")) {
31001      return parseDataRequirement(xpp);
31002    } else if (xpp.getName().equals(prefix+"Distance")) {
31003      return parseDistance(xpp);
31004    } else if (xpp.getName().equals(prefix+"Dosage")) {
31005      return parseDosage(xpp);
31006    } else if (xpp.getName().equals(prefix+"Duration")) {
31007      return parseDuration(xpp);
31008    } else if (xpp.getName().equals(prefix+"ElementDefinition")) {
31009      return parseElementDefinition(xpp);
31010    } else if (xpp.getName().equals(prefix+"Expression")) {
31011      return parseExpression(xpp);
31012    } else if (xpp.getName().equals(prefix+"ExtendedContactDetail")) {
31013      return parseExtendedContactDetail(xpp);
31014    } else if (xpp.getName().equals(prefix+"Extension")) {
31015      return parseExtension(xpp);
31016    } else if (xpp.getName().equals(prefix+"HumanName")) {
31017      return parseHumanName(xpp);
31018    } else if (xpp.getName().equals(prefix+"Identifier")) {
31019      return parseIdentifier(xpp);
31020    } else if (xpp.getName().equals(prefix+"MarketingStatus")) {
31021      return parseMarketingStatus(xpp);
31022    } else if (xpp.getName().equals(prefix+"Meta")) {
31023      return parseMeta(xpp);
31024    } else if (xpp.getName().equals(prefix+"MonetaryComponent")) {
31025      return parseMonetaryComponent(xpp);
31026    } else if (xpp.getName().equals(prefix+"Money")) {
31027      return parseMoney(xpp);
31028    } else if (xpp.getName().equals(prefix+"Narrative")) {
31029      return parseNarrative(xpp);
31030    } else if (xpp.getName().equals(prefix+"ParameterDefinition")) {
31031      return parseParameterDefinition(xpp);
31032    } else if (xpp.getName().equals(prefix+"Period")) {
31033      return parsePeriod(xpp);
31034    } else if (xpp.getName().equals(prefix+"ProductShelfLife")) {
31035      return parseProductShelfLife(xpp);
31036    } else if (xpp.getName().equals(prefix+"Quantity")) {
31037      return parseQuantity(xpp);
31038    } else if (xpp.getName().equals(prefix+"Range")) {
31039      return parseRange(xpp);
31040    } else if (xpp.getName().equals(prefix+"Ratio")) {
31041      return parseRatio(xpp);
31042    } else if (xpp.getName().equals(prefix+"RatioRange")) {
31043      return parseRatioRange(xpp);
31044    } else if (xpp.getName().equals(prefix+"Reference")) {
31045      return parseReference(xpp);
31046    } else if (xpp.getName().equals(prefix+"RelatedArtifact")) {
31047      return parseRelatedArtifact(xpp);
31048    } else if (xpp.getName().equals(prefix+"SampledData")) {
31049      return parseSampledData(xpp);
31050    } else if (xpp.getName().equals(prefix+"Signature")) {
31051      return parseSignature(xpp);
31052    } else if (xpp.getName().equals(prefix+"Timing")) {
31053      return parseTiming(xpp);
31054    } else if (xpp.getName().equals(prefix+"TriggerDefinition")) {
31055      return parseTriggerDefinition(xpp);
31056    } else if (xpp.getName().equals(prefix+"UsageContext")) {
31057      return parseUsageContext(xpp);
31058    } else if (xpp.getName().equals(prefix+"VirtualServiceDetail")) {
31059      return parseVirtualServiceDetail(xpp);
31060
31061    } else {
31062      throw new FHIRFormatError("Unknown type "+xpp.getName());
31063    }
31064  }
31065
31066  protected DataType parseType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
31067    if (type == null) {
31068      throw new IOException("type == null!");
31069    } else if (xpp == null) {
31070      throw new IOException("xpp == null!");
31071    } else if (type.equals("date")) {
31072      return parseDate(xpp);
31073    } else if (type.equals("dateTime")) {
31074      return parseDateTime(xpp);
31075    } else if (type.equals("code")) {
31076      return parseCode(xpp);
31077    } else if (type.equals("string")) {
31078      return parseString(xpp);
31079    } else if (type.equals("integer")) {
31080      return parseInteger(xpp);
31081    } else if (type.equals("integer64")) {
31082      return parseInteger64(xpp);
31083    } else if (type.equals("oid")) {
31084      return parseOid(xpp);
31085    } else if (type.equals("canonical")) {
31086      return parseCanonical(xpp);
31087    } else if (type.equals("uri")) {
31088      return parseUri(xpp);
31089    } else if (type.equals("uuid")) {
31090      return parseUuid(xpp);
31091    } else if (type.equals("url")) {
31092      return parseUrl(xpp);
31093    } else if (type.equals("instant")) {
31094      return parseInstant(xpp);
31095    } else if (type.equals("boolean")) {
31096      return parseBoolean(xpp);
31097    } else if (type.equals("base64Binary")) {
31098      return parseBase64Binary(xpp);
31099    } else if (type.equals("unsignedInt")) {
31100      return parseUnsignedInt(xpp);
31101    } else if (type.equals("markdown")) {
31102      return parseMarkdown(xpp);
31103    } else if (type.equals("time")) {
31104      return parseTime(xpp);
31105    } else if (type.equals("id")) {
31106      return parseId(xpp);
31107    } else if (type.equals("positiveInt")) {
31108      return parsePositiveInt(xpp);
31109    } else if (type.equals("decimal")) {
31110      return parseDecimal(xpp);
31111    } else if (type.equals("Address")) {
31112      return parseAddress(xpp);
31113    } else if (type.equals("Age")) {
31114      return parseAge(xpp);
31115    } else if (type.equals("Annotation")) {
31116      return parseAnnotation(xpp);
31117    } else if (type.equals("Attachment")) {
31118      return parseAttachment(xpp);
31119    } else if (type.equals("Availability")) {
31120      return parseAvailability(xpp);
31121    } else if (type.equals("CodeableConcept")) {
31122      return parseCodeableConcept(xpp);
31123    } else if (type.equals("CodeableReference")) {
31124      return parseCodeableReference(xpp);
31125    } else if (type.equals("Coding")) {
31126      return parseCoding(xpp);
31127    } else if (type.equals("ContactDetail")) {
31128      return parseContactDetail(xpp);
31129    } else if (type.equals("ContactPoint")) {
31130      return parseContactPoint(xpp);
31131    } else if (type.equals("Contributor")) {
31132      return parseContributor(xpp);
31133    } else if (type.equals("Count")) {
31134      return parseCount(xpp);
31135    } else if (type.equals("DataRequirement")) {
31136      return parseDataRequirement(xpp);
31137    } else if (type.equals("Distance")) {
31138      return parseDistance(xpp);
31139    } else if (type.equals("Dosage")) {
31140      return parseDosage(xpp);
31141    } else if (type.equals("Duration")) {
31142      return parseDuration(xpp);
31143    } else if (type.equals("ElementDefinition")) {
31144      return parseElementDefinition(xpp);
31145    } else if (type.equals("Expression")) {
31146      return parseExpression(xpp);
31147    } else if (type.equals("ExtendedContactDetail")) {
31148      return parseExtendedContactDetail(xpp);
31149    } else if (type.equals("Extension")) {
31150      return parseExtension(xpp);
31151    } else if (type.equals("HumanName")) {
31152      return parseHumanName(xpp);
31153    } else if (type.equals("Identifier")) {
31154      return parseIdentifier(xpp);
31155    } else if (type.equals("MarketingStatus")) {
31156      return parseMarketingStatus(xpp);
31157    } else if (type.equals("Meta")) {
31158      return parseMeta(xpp);
31159    } else if (type.equals("MonetaryComponent")) {
31160      return parseMonetaryComponent(xpp);
31161    } else if (type.equals("Money")) {
31162      return parseMoney(xpp);
31163    } else if (type.equals("Narrative")) {
31164      return parseNarrative(xpp);
31165    } else if (type.equals("ParameterDefinition")) {
31166      return parseParameterDefinition(xpp);
31167    } else if (type.equals("Period")) {
31168      return parsePeriod(xpp);
31169    } else if (type.equals("ProductShelfLife")) {
31170      return parseProductShelfLife(xpp);
31171    } else if (type.equals("Quantity")) {
31172      return parseQuantity(xpp);
31173    } else if (type.equals("Range")) {
31174      return parseRange(xpp);
31175    } else if (type.equals("Ratio")) {
31176      return parseRatio(xpp);
31177    } else if (type.equals("RatioRange")) {
31178      return parseRatioRange(xpp);
31179    } else if (type.equals("Reference")) {
31180      return parseReference(xpp);
31181    } else if (type.equals("RelatedArtifact")) {
31182      return parseRelatedArtifact(xpp);
31183    } else if (type.equals("SampledData")) {
31184      return parseSampledData(xpp);
31185    } else if (type.equals("Signature")) {
31186      return parseSignature(xpp);
31187    } else if (type.equals("Timing")) {
31188      return parseTiming(xpp);
31189    } else if (type.equals("TriggerDefinition")) {
31190      return parseTriggerDefinition(xpp);
31191    } else if (type.equals("UsageContext")) {
31192      return parseUsageContext(xpp);
31193    } else if (type.equals("VirtualServiceDetail")) {
31194      return parseVirtualServiceDetail(xpp);
31195
31196    } else {
31197      throw new FHIRFormatError("Unknown type "+type);
31198    }
31199  }
31200
31201  public Base parseFragment(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
31202    if (type == null) {
31203      throw new IOException("type == null!");
31204    } else if (xpp == null) {
31205      throw new IOException("xpp == null!");
31206    } else if (type.equals("Address")) {
31207      return parseAddress(xpp);
31208    } else if (type.equals("Age")) {
31209      return parseAge(xpp);
31210    } else if (type.equals("Annotation")) {
31211      return parseAnnotation(xpp);
31212    } else if (type.equals("Attachment")) {
31213      return parseAttachment(xpp);
31214    } else if (type.equals("Availability")) {
31215      return parseAvailability(xpp);
31216    } else if (type.equals("CodeableConcept")) {
31217      return parseCodeableConcept(xpp);
31218    } else if (type.equals("CodeableReference")) {
31219      return parseCodeableReference(xpp);
31220    } else if (type.equals("Coding")) {
31221      return parseCoding(xpp);
31222    } else if (type.equals("ContactDetail")) {
31223      return parseContactDetail(xpp);
31224    } else if (type.equals("ContactPoint")) {
31225      return parseContactPoint(xpp);
31226    } else if (type.equals("Contributor")) {
31227      return parseContributor(xpp);
31228    } else if (type.equals("Count")) {
31229      return parseCount(xpp);
31230    } else if (type.equals("DataRequirement")) {
31231      return parseDataRequirement(xpp);
31232    } else if (type.equals("Distance")) {
31233      return parseDistance(xpp);
31234    } else if (type.equals("Dosage")) {
31235      return parseDosage(xpp);
31236    } else if (type.equals("Duration")) {
31237      return parseDuration(xpp);
31238    } else if (type.equals("ElementDefinition")) {
31239      return parseElementDefinition(xpp);
31240    } else if (type.equals("Expression")) {
31241      return parseExpression(xpp);
31242    } else if (type.equals("ExtendedContactDetail")) {
31243      return parseExtendedContactDetail(xpp);
31244    } else if (type.equals("Extension")) {
31245      return parseExtension(xpp);
31246    } else if (type.equals("HumanName")) {
31247      return parseHumanName(xpp);
31248    } else if (type.equals("Identifier")) {
31249      return parseIdentifier(xpp);
31250    } else if (type.equals("MarketingStatus")) {
31251      return parseMarketingStatus(xpp);
31252    } else if (type.equals("Meta")) {
31253      return parseMeta(xpp);
31254    } else if (type.equals("MonetaryComponent")) {
31255      return parseMonetaryComponent(xpp);
31256    } else if (type.equals("Money")) {
31257      return parseMoney(xpp);
31258    } else if (type.equals("Narrative")) {
31259      return parseNarrative(xpp);
31260    } else if (type.equals("ParameterDefinition")) {
31261      return parseParameterDefinition(xpp);
31262    } else if (type.equals("Period")) {
31263      return parsePeriod(xpp);
31264    } else if (type.equals("ProductShelfLife")) {
31265      return parseProductShelfLife(xpp);
31266    } else if (type.equals("Quantity")) {
31267      return parseQuantity(xpp);
31268    } else if (type.equals("Range")) {
31269      return parseRange(xpp);
31270    } else if (type.equals("Ratio")) {
31271      return parseRatio(xpp);
31272    } else if (type.equals("RatioRange")) {
31273      return parseRatioRange(xpp);
31274    } else if (type.equals("Reference")) {
31275      return parseReference(xpp);
31276    } else if (type.equals("RelatedArtifact")) {
31277      return parseRelatedArtifact(xpp);
31278    } else if (type.equals("SampledData")) {
31279      return parseSampledData(xpp);
31280    } else if (type.equals("Signature")) {
31281      return parseSignature(xpp);
31282    } else if (type.equals("Timing")) {
31283      return parseTiming(xpp);
31284    } else if (type.equals("TriggerDefinition")) {
31285      return parseTriggerDefinition(xpp);
31286    } else if (type.equals("UsageContext")) {
31287      return parseUsageContext(xpp);
31288    } else if (type.equals("VirtualServiceDetail")) {
31289      return parseVirtualServiceDetail(xpp);
31290    } else if (type.equals("Account")) {
31291      return parseAccount(xpp);
31292    } else if (type.equals("ActivityDefinition")) {
31293      return parseActivityDefinition(xpp);
31294    } else if (type.equals("ActorDefinition")) {
31295      return parseActorDefinition(xpp);
31296    } else if (type.equals("AdministrableProductDefinition")) {
31297      return parseAdministrableProductDefinition(xpp);
31298    } else if (type.equals("AdverseEvent")) {
31299      return parseAdverseEvent(xpp);
31300    } else if (type.equals("AllergyIntolerance")) {
31301      return parseAllergyIntolerance(xpp);
31302    } else if (type.equals("Appointment")) {
31303      return parseAppointment(xpp);
31304    } else if (type.equals("AppointmentResponse")) {
31305      return parseAppointmentResponse(xpp);
31306    } else if (type.equals("ArtifactAssessment")) {
31307      return parseArtifactAssessment(xpp);
31308    } else if (type.equals("AuditEvent")) {
31309      return parseAuditEvent(xpp);
31310    } else if (type.equals("Basic")) {
31311      return parseBasic(xpp);
31312    } else if (type.equals("Binary")) {
31313      return parseBinary(xpp);
31314    } else if (type.equals("BiologicallyDerivedProduct")) {
31315      return parseBiologicallyDerivedProduct(xpp);
31316    } else if (type.equals("BiologicallyDerivedProductDispense")) {
31317      return parseBiologicallyDerivedProductDispense(xpp);
31318    } else if (type.equals("BodyStructure")) {
31319      return parseBodyStructure(xpp);
31320    } else if (type.equals("Bundle")) {
31321      return parseBundle(xpp);
31322    } else if (type.equals("CapabilityStatement")) {
31323      return parseCapabilityStatement(xpp);
31324    } else if (type.equals("CarePlan")) {
31325      return parseCarePlan(xpp);
31326    } else if (type.equals("CareTeam")) {
31327      return parseCareTeam(xpp);
31328    } else if (type.equals("ChargeItem")) {
31329      return parseChargeItem(xpp);
31330    } else if (type.equals("ChargeItemDefinition")) {
31331      return parseChargeItemDefinition(xpp);
31332    } else if (type.equals("Citation")) {
31333      return parseCitation(xpp);
31334    } else if (type.equals("Claim")) {
31335      return parseClaim(xpp);
31336    } else if (type.equals("ClaimResponse")) {
31337      return parseClaimResponse(xpp);
31338    } else if (type.equals("ClinicalImpression")) {
31339      return parseClinicalImpression(xpp);
31340    } else if (type.equals("ClinicalUseDefinition")) {
31341      return parseClinicalUseDefinition(xpp);
31342    } else if (type.equals("CodeSystem")) {
31343      return parseCodeSystem(xpp);
31344    } else if (type.equals("Communication")) {
31345      return parseCommunication(xpp);
31346    } else if (type.equals("CommunicationRequest")) {
31347      return parseCommunicationRequest(xpp);
31348    } else if (type.equals("CompartmentDefinition")) {
31349      return parseCompartmentDefinition(xpp);
31350    } else if (type.equals("Composition")) {
31351      return parseComposition(xpp);
31352    } else if (type.equals("ConceptMap")) {
31353      return parseConceptMap(xpp);
31354    } else if (type.equals("Condition")) {
31355      return parseCondition(xpp);
31356    } else if (type.equals("ConditionDefinition")) {
31357      return parseConditionDefinition(xpp);
31358    } else if (type.equals("Consent")) {
31359      return parseConsent(xpp);
31360    } else if (type.equals("Contract")) {
31361      return parseContract(xpp);
31362    } else if (type.equals("Coverage")) {
31363      return parseCoverage(xpp);
31364    } else if (type.equals("CoverageEligibilityRequest")) {
31365      return parseCoverageEligibilityRequest(xpp);
31366    } else if (type.equals("CoverageEligibilityResponse")) {
31367      return parseCoverageEligibilityResponse(xpp);
31368    } else if (type.equals("DetectedIssue")) {
31369      return parseDetectedIssue(xpp);
31370    } else if (type.equals("Device")) {
31371      return parseDevice(xpp);
31372    } else if (type.equals("DeviceAssociation")) {
31373      return parseDeviceAssociation(xpp);
31374    } else if (type.equals("DeviceDefinition")) {
31375      return parseDeviceDefinition(xpp);
31376    } else if (type.equals("DeviceDispense")) {
31377      return parseDeviceDispense(xpp);
31378    } else if (type.equals("DeviceMetric")) {
31379      return parseDeviceMetric(xpp);
31380    } else if (type.equals("DeviceRequest")) {
31381      return parseDeviceRequest(xpp);
31382    } else if (type.equals("DeviceUsage")) {
31383      return parseDeviceUsage(xpp);
31384    } else if (type.equals("DiagnosticReport")) {
31385      return parseDiagnosticReport(xpp);
31386    } else if (type.equals("DocumentReference")) {
31387      return parseDocumentReference(xpp);
31388    } else if (type.equals("Encounter")) {
31389      return parseEncounter(xpp);
31390    } else if (type.equals("EncounterHistory")) {
31391      return parseEncounterHistory(xpp);
31392    } else if (type.equals("Endpoint")) {
31393      return parseEndpoint(xpp);
31394    } else if (type.equals("EnrollmentRequest")) {
31395      return parseEnrollmentRequest(xpp);
31396    } else if (type.equals("EnrollmentResponse")) {
31397      return parseEnrollmentResponse(xpp);
31398    } else if (type.equals("EpisodeOfCare")) {
31399      return parseEpisodeOfCare(xpp);
31400    } else if (type.equals("EventDefinition")) {
31401      return parseEventDefinition(xpp);
31402    } else if (type.equals("Evidence")) {
31403      return parseEvidence(xpp);
31404    } else if (type.equals("EvidenceReport")) {
31405      return parseEvidenceReport(xpp);
31406    } else if (type.equals("EvidenceVariable")) {
31407      return parseEvidenceVariable(xpp);
31408    } else if (type.equals("ExampleScenario")) {
31409      return parseExampleScenario(xpp);
31410    } else if (type.equals("ExplanationOfBenefit")) {
31411      return parseExplanationOfBenefit(xpp);
31412    } else if (type.equals("FamilyMemberHistory")) {
31413      return parseFamilyMemberHistory(xpp);
31414    } else if (type.equals("Flag")) {
31415      return parseFlag(xpp);
31416    } else if (type.equals("FormularyItem")) {
31417      return parseFormularyItem(xpp);
31418    } else if (type.equals("GenomicStudy")) {
31419      return parseGenomicStudy(xpp);
31420    } else if (type.equals("Goal")) {
31421      return parseGoal(xpp);
31422    } else if (type.equals("GraphDefinition")) {
31423      return parseGraphDefinition(xpp);
31424    } else if (type.equals("Group")) {
31425      return parseGroup(xpp);
31426    } else if (type.equals("GuidanceResponse")) {
31427      return parseGuidanceResponse(xpp);
31428    } else if (type.equals("HealthcareService")) {
31429      return parseHealthcareService(xpp);
31430    } else if (type.equals("ImagingSelection")) {
31431      return parseImagingSelection(xpp);
31432    } else if (type.equals("ImagingStudy")) {
31433      return parseImagingStudy(xpp);
31434    } else if (type.equals("Immunization")) {
31435      return parseImmunization(xpp);
31436    } else if (type.equals("ImmunizationEvaluation")) {
31437      return parseImmunizationEvaluation(xpp);
31438    } else if (type.equals("ImmunizationRecommendation")) {
31439      return parseImmunizationRecommendation(xpp);
31440    } else if (type.equals("ImplementationGuide")) {
31441      return parseImplementationGuide(xpp);
31442    } else if (type.equals("Ingredient")) {
31443      return parseIngredient(xpp);
31444    } else if (type.equals("InsurancePlan")) {
31445      return parseInsurancePlan(xpp);
31446    } else if (type.equals("InventoryItem")) {
31447      return parseInventoryItem(xpp);
31448    } else if (type.equals("InventoryReport")) {
31449      return parseInventoryReport(xpp);
31450    } else if (type.equals("Invoice")) {
31451      return parseInvoice(xpp);
31452    } else if (type.equals("Library")) {
31453      return parseLibrary(xpp);
31454    } else if (type.equals("Linkage")) {
31455      return parseLinkage(xpp);
31456    } else if (type.equals("List")) {
31457      return parseListResource(xpp);
31458    } else if (type.equals("Location")) {
31459      return parseLocation(xpp);
31460    } else if (type.equals("ManufacturedItemDefinition")) {
31461      return parseManufacturedItemDefinition(xpp);
31462    } else if (type.equals("Measure")) {
31463      return parseMeasure(xpp);
31464    } else if (type.equals("MeasureReport")) {
31465      return parseMeasureReport(xpp);
31466    } else if (type.equals("Medication")) {
31467      return parseMedication(xpp);
31468    } else if (type.equals("MedicationAdministration")) {
31469      return parseMedicationAdministration(xpp);
31470    } else if (type.equals("MedicationDispense")) {
31471      return parseMedicationDispense(xpp);
31472    } else if (type.equals("MedicationKnowledge")) {
31473      return parseMedicationKnowledge(xpp);
31474    } else if (type.equals("MedicationRequest")) {
31475      return parseMedicationRequest(xpp);
31476    } else if (type.equals("MedicationStatement")) {
31477      return parseMedicationStatement(xpp);
31478    } else if (type.equals("MedicinalProductDefinition")) {
31479      return parseMedicinalProductDefinition(xpp);
31480    } else if (type.equals("MessageDefinition")) {
31481      return parseMessageDefinition(xpp);
31482    } else if (type.equals("MessageHeader")) {
31483      return parseMessageHeader(xpp);
31484    } else if (type.equals("MolecularSequence")) {
31485      return parseMolecularSequence(xpp);
31486    } else if (type.equals("NamingSystem")) {
31487      return parseNamingSystem(xpp);
31488    } else if (type.equals("NutritionIntake")) {
31489      return parseNutritionIntake(xpp);
31490    } else if (type.equals("NutritionOrder")) {
31491      return parseNutritionOrder(xpp);
31492    } else if (type.equals("NutritionProduct")) {
31493      return parseNutritionProduct(xpp);
31494    } else if (type.equals("Observation")) {
31495      return parseObservation(xpp);
31496    } else if (type.equals("ObservationDefinition")) {
31497      return parseObservationDefinition(xpp);
31498    } else if (type.equals("OperationDefinition")) {
31499      return parseOperationDefinition(xpp);
31500    } else if (type.equals("OperationOutcome")) {
31501      return parseOperationOutcome(xpp);
31502    } else if (type.equals("Organization")) {
31503      return parseOrganization(xpp);
31504    } else if (type.equals("OrganizationAffiliation")) {
31505      return parseOrganizationAffiliation(xpp);
31506    } else if (type.equals("PackagedProductDefinition")) {
31507      return parsePackagedProductDefinition(xpp);
31508    } else if (type.equals("Parameters")) {
31509      return parseParameters(xpp);
31510    } else if (type.equals("Patient")) {
31511      return parsePatient(xpp);
31512    } else if (type.equals("PaymentNotice")) {
31513      return parsePaymentNotice(xpp);
31514    } else if (type.equals("PaymentReconciliation")) {
31515      return parsePaymentReconciliation(xpp);
31516    } else if (type.equals("Permission")) {
31517      return parsePermission(xpp);
31518    } else if (type.equals("Person")) {
31519      return parsePerson(xpp);
31520    } else if (type.equals("PlanDefinition")) {
31521      return parsePlanDefinition(xpp);
31522    } else if (type.equals("Practitioner")) {
31523      return parsePractitioner(xpp);
31524    } else if (type.equals("PractitionerRole")) {
31525      return parsePractitionerRole(xpp);
31526    } else if (type.equals("Procedure")) {
31527      return parseProcedure(xpp);
31528    } else if (type.equals("Provenance")) {
31529      return parseProvenance(xpp);
31530    } else if (type.equals("Questionnaire")) {
31531      return parseQuestionnaire(xpp);
31532    } else if (type.equals("QuestionnaireResponse")) {
31533      return parseQuestionnaireResponse(xpp);
31534    } else if (type.equals("RegulatedAuthorization")) {
31535      return parseRegulatedAuthorization(xpp);
31536    } else if (type.equals("RelatedPerson")) {
31537      return parseRelatedPerson(xpp);
31538    } else if (type.equals("RequestOrchestration")) {
31539      return parseRequestOrchestration(xpp);
31540    } else if (type.equals("Requirements")) {
31541      return parseRequirements(xpp);
31542    } else if (type.equals("ResearchStudy")) {
31543      return parseResearchStudy(xpp);
31544    } else if (type.equals("ResearchSubject")) {
31545      return parseResearchSubject(xpp);
31546    } else if (type.equals("RiskAssessment")) {
31547      return parseRiskAssessment(xpp);
31548    } else if (type.equals("Schedule")) {
31549      return parseSchedule(xpp);
31550    } else if (type.equals("SearchParameter")) {
31551      return parseSearchParameter(xpp);
31552    } else if (type.equals("ServiceRequest")) {
31553      return parseServiceRequest(xpp);
31554    } else if (type.equals("Slot")) {
31555      return parseSlot(xpp);
31556    } else if (type.equals("Specimen")) {
31557      return parseSpecimen(xpp);
31558    } else if (type.equals("SpecimenDefinition")) {
31559      return parseSpecimenDefinition(xpp);
31560    } else if (type.equals("StructureDefinition")) {
31561      return parseStructureDefinition(xpp);
31562    } else if (type.equals("StructureMap")) {
31563      return parseStructureMap(xpp);
31564    } else if (type.equals("Subscription")) {
31565      return parseSubscription(xpp);
31566    } else if (type.equals("SubscriptionStatus")) {
31567      return parseSubscriptionStatus(xpp);
31568    } else if (type.equals("SubscriptionTopic")) {
31569      return parseSubscriptionTopic(xpp);
31570    } else if (type.equals("Substance")) {
31571      return parseSubstance(xpp);
31572    } else if (type.equals("SubstanceDefinition")) {
31573      return parseSubstanceDefinition(xpp);
31574    } else if (type.equals("SubstanceNucleicAcid")) {
31575      return parseSubstanceNucleicAcid(xpp);
31576    } else if (type.equals("SubstancePolymer")) {
31577      return parseSubstancePolymer(xpp);
31578    } else if (type.equals("SubstanceProtein")) {
31579      return parseSubstanceProtein(xpp);
31580    } else if (type.equals("SubstanceReferenceInformation")) {
31581      return parseSubstanceReferenceInformation(xpp);
31582    } else if (type.equals("SubstanceSourceMaterial")) {
31583      return parseSubstanceSourceMaterial(xpp);
31584    } else if (type.equals("SupplyDelivery")) {
31585      return parseSupplyDelivery(xpp);
31586    } else if (type.equals("SupplyRequest")) {
31587      return parseSupplyRequest(xpp);
31588    } else if (type.equals("Task")) {
31589      return parseTask(xpp);
31590    } else if (type.equals("TerminologyCapabilities")) {
31591      return parseTerminologyCapabilities(xpp);
31592    } else if (type.equals("TestPlan")) {
31593      return parseTestPlan(xpp);
31594    } else if (type.equals("TestReport")) {
31595      return parseTestReport(xpp);
31596    } else if (type.equals("TestScript")) {
31597      return parseTestScript(xpp);
31598    } else if (type.equals("Transport")) {
31599      return parseTransport(xpp);
31600    } else if (type.equals("ValueSet")) {
31601      return parseValueSet(xpp);
31602    } else if (type.equals("VerificationResult")) {
31603      return parseVerificationResult(xpp);
31604    } else if (type.equals("VisionPrescription")) {
31605      return parseVisionPrescription(xpp);
31606      
31607    } else if (type.equals("date")) {
31608      return parseDate(xpp);
31609    } else if (type.equals("dateTime")) {
31610      return parseDateTime(xpp);
31611    } else if (type.equals("code")) {
31612      return parseCode(xpp);
31613    } else if (type.equals("string")) {
31614      return parseString(xpp);
31615    } else if (type.equals("integer")) {
31616      return parseInteger(xpp);
31617    } else if (type.equals("integer64")) {
31618      return parseInteger64(xpp);
31619    } else if (type.equals("oid")) {
31620      return parseOid(xpp);
31621    } else if (type.equals("canonical")) {
31622      return parseCanonical(xpp);
31623    } else if (type.equals("uri")) {
31624      return parseUri(xpp);
31625    } else if (type.equals("uuid")) {
31626      return parseUuid(xpp);
31627    } else if (type.equals("url")) {
31628      return parseUrl(xpp);
31629    } else if (type.equals("instant")) {
31630      return parseInstant(xpp);
31631    } else if (type.equals("boolean")) {
31632      return parseBoolean(xpp);
31633    } else if (type.equals("base64Binary")) {
31634      return parseBase64Binary(xpp);
31635    } else if (type.equals("unsignedInt")) {
31636      return parseUnsignedInt(xpp);
31637    } else if (type.equals("markdown")) {
31638      return parseMarkdown(xpp);
31639    } else if (type.equals("time")) {
31640      return parseTime(xpp);
31641    } else if (type.equals("id")) {
31642      return parseId(xpp);
31643    } else if (type.equals("positiveInt")) {
31644      return parsePositiveInt(xpp);
31645    } else if (type.equals("decimal")) {
31646      return parseDecimal(xpp);
31647    } else {
31648      throw new FHIRFormatError("Unknown type "+type);
31649    }
31650  }
31651
31652  private boolean nameIsTypeName(XmlPullParser xpp, String prefix) throws IOException {  
31653    if (prefix == null) {
31654      throw new IOException("prefix == null!");
31655    } else if (xpp == null) {
31656      throw new IOException("xpp == null!");
31657    } else if (xpp.getName().equals(prefix+"Address")) {
31658      return true;
31659    } else if (xpp.getName().equals(prefix+"Age")) {
31660      return true;
31661    } else if (xpp.getName().equals(prefix+"Annotation")) {
31662      return true;
31663    } else if (xpp.getName().equals(prefix+"Attachment")) {
31664      return true;
31665    } else if (xpp.getName().equals(prefix+"Availability")) {
31666      return true;
31667    } else if (xpp.getName().equals(prefix+"CodeableConcept")) {
31668      return true;
31669    } else if (xpp.getName().equals(prefix+"CodeableReference")) {
31670      return true;
31671    } else if (xpp.getName().equals(prefix+"Coding")) {
31672      return true;
31673    } else if (xpp.getName().equals(prefix+"ContactDetail")) {
31674      return true;
31675    } else if (xpp.getName().equals(prefix+"ContactPoint")) {
31676      return true;
31677    } else if (xpp.getName().equals(prefix+"Contributor")) {
31678      return true;
31679    } else if (xpp.getName().equals(prefix+"Count")) {
31680      return true;
31681    } else if (xpp.getName().equals(prefix+"DataRequirement")) {
31682      return true;
31683    } else if (xpp.getName().equals(prefix+"Distance")) {
31684      return true;
31685    } else if (xpp.getName().equals(prefix+"Dosage")) {
31686      return true;
31687    } else if (xpp.getName().equals(prefix+"Duration")) {
31688      return true;
31689    } else if (xpp.getName().equals(prefix+"ElementDefinition")) {
31690      return true;
31691    } else if (xpp.getName().equals(prefix+"Expression")) {
31692      return true;
31693    } else if (xpp.getName().equals(prefix+"ExtendedContactDetail")) {
31694      return true;
31695    } else if (xpp.getName().equals(prefix+"Extension")) {
31696      return true;
31697    } else if (xpp.getName().equals(prefix+"HumanName")) {
31698      return true;
31699    } else if (xpp.getName().equals(prefix+"Identifier")) {
31700      return true;
31701    } else if (xpp.getName().equals(prefix+"MarketingStatus")) {
31702      return true;
31703    } else if (xpp.getName().equals(prefix+"Meta")) {
31704      return true;
31705    } else if (xpp.getName().equals(prefix+"MonetaryComponent")) {
31706      return true;
31707    } else if (xpp.getName().equals(prefix+"Money")) {
31708      return true;
31709    } else if (xpp.getName().equals(prefix+"Narrative")) {
31710      return true;
31711    } else if (xpp.getName().equals(prefix+"ParameterDefinition")) {
31712      return true;
31713    } else if (xpp.getName().equals(prefix+"Period")) {
31714      return true;
31715    } else if (xpp.getName().equals(prefix+"ProductShelfLife")) {
31716      return true;
31717    } else if (xpp.getName().equals(prefix+"Quantity")) {
31718      return true;
31719    } else if (xpp.getName().equals(prefix+"Range")) {
31720      return true;
31721    } else if (xpp.getName().equals(prefix+"Ratio")) {
31722      return true;
31723    } else if (xpp.getName().equals(prefix+"RatioRange")) {
31724      return true;
31725    } else if (xpp.getName().equals(prefix+"Reference")) {
31726      return true;
31727    } else if (xpp.getName().equals(prefix+"RelatedArtifact")) {
31728      return true;
31729    } else if (xpp.getName().equals(prefix+"SampledData")) {
31730      return true;
31731    } else if (xpp.getName().equals(prefix+"Signature")) {
31732      return true;
31733    } else if (xpp.getName().equals(prefix+"Timing")) {
31734      return true;
31735    } else if (xpp.getName().equals(prefix+"TriggerDefinition")) {
31736      return true;
31737    } else if (xpp.getName().equals(prefix+"UsageContext")) {
31738      return true;
31739    } else if (xpp.getName().equals(prefix+"VirtualServiceDetail")) {
31740      return true;
31741    } else if (xpp.getName().equals(prefix+"Account")) {
31742      return true;
31743    } else if (xpp.getName().equals(prefix+"ActivityDefinition")) {
31744      return true;
31745    } else if (xpp.getName().equals(prefix+"ActorDefinition")) {
31746      return true;
31747    } else if (xpp.getName().equals(prefix+"AdministrableProductDefinition")) {
31748      return true;
31749    } else if (xpp.getName().equals(prefix+"AdverseEvent")) {
31750      return true;
31751    } else if (xpp.getName().equals(prefix+"AllergyIntolerance")) {
31752      return true;
31753    } else if (xpp.getName().equals(prefix+"Appointment")) {
31754      return true;
31755    } else if (xpp.getName().equals(prefix+"AppointmentResponse")) {
31756      return true;
31757    } else if (xpp.getName().equals(prefix+"ArtifactAssessment")) {
31758      return true;
31759    } else if (xpp.getName().equals(prefix+"AuditEvent")) {
31760      return true;
31761    } else if (xpp.getName().equals(prefix+"Basic")) {
31762      return true;
31763    } else if (xpp.getName().equals(prefix+"Binary")) {
31764      return true;
31765    } else if (xpp.getName().equals(prefix+"BiologicallyDerivedProduct")) {
31766      return true;
31767    } else if (xpp.getName().equals(prefix+"BiologicallyDerivedProductDispense")) {
31768      return true;
31769    } else if (xpp.getName().equals(prefix+"BodyStructure")) {
31770      return true;
31771    } else if (xpp.getName().equals(prefix+"Bundle")) {
31772      return true;
31773    } else if (xpp.getName().equals(prefix+"CapabilityStatement")) {
31774      return true;
31775    } else if (xpp.getName().equals(prefix+"CarePlan")) {
31776      return true;
31777    } else if (xpp.getName().equals(prefix+"CareTeam")) {
31778      return true;
31779    } else if (xpp.getName().equals(prefix+"ChargeItem")) {
31780      return true;
31781    } else if (xpp.getName().equals(prefix+"ChargeItemDefinition")) {
31782      return true;
31783    } else if (xpp.getName().equals(prefix+"Citation")) {
31784      return true;
31785    } else if (xpp.getName().equals(prefix+"Claim")) {
31786      return true;
31787    } else if (xpp.getName().equals(prefix+"ClaimResponse")) {
31788      return true;
31789    } else if (xpp.getName().equals(prefix+"ClinicalImpression")) {
31790      return true;
31791    } else if (xpp.getName().equals(prefix+"ClinicalUseDefinition")) {
31792      return true;
31793    } else if (xpp.getName().equals(prefix+"CodeSystem")) {
31794      return true;
31795    } else if (xpp.getName().equals(prefix+"Communication")) {
31796      return true;
31797    } else if (xpp.getName().equals(prefix+"CommunicationRequest")) {
31798      return true;
31799    } else if (xpp.getName().equals(prefix+"CompartmentDefinition")) {
31800      return true;
31801    } else if (xpp.getName().equals(prefix+"Composition")) {
31802      return true;
31803    } else if (xpp.getName().equals(prefix+"ConceptMap")) {
31804      return true;
31805    } else if (xpp.getName().equals(prefix+"Condition")) {
31806      return true;
31807    } else if (xpp.getName().equals(prefix+"ConditionDefinition")) {
31808      return true;
31809    } else if (xpp.getName().equals(prefix+"Consent")) {
31810      return true;
31811    } else if (xpp.getName().equals(prefix+"Contract")) {
31812      return true;
31813    } else if (xpp.getName().equals(prefix+"Coverage")) {
31814      return true;
31815    } else if (xpp.getName().equals(prefix+"CoverageEligibilityRequest")) {
31816      return true;
31817    } else if (xpp.getName().equals(prefix+"CoverageEligibilityResponse")) {
31818      return true;
31819    } else if (xpp.getName().equals(prefix+"DetectedIssue")) {
31820      return true;
31821    } else if (xpp.getName().equals(prefix+"Device")) {
31822      return true;
31823    } else if (xpp.getName().equals(prefix+"DeviceAssociation")) {
31824      return true;
31825    } else if (xpp.getName().equals(prefix+"DeviceDefinition")) {
31826      return true;
31827    } else if (xpp.getName().equals(prefix+"DeviceDispense")) {
31828      return true;
31829    } else if (xpp.getName().equals(prefix+"DeviceMetric")) {
31830      return true;
31831    } else if (xpp.getName().equals(prefix+"DeviceRequest")) {
31832      return true;
31833    } else if (xpp.getName().equals(prefix+"DeviceUsage")) {
31834      return true;
31835    } else if (xpp.getName().equals(prefix+"DiagnosticReport")) {
31836      return true;
31837    } else if (xpp.getName().equals(prefix+"DocumentReference")) {
31838      return true;
31839    } else if (xpp.getName().equals(prefix+"Encounter")) {
31840      return true;
31841    } else if (xpp.getName().equals(prefix+"EncounterHistory")) {
31842      return true;
31843    } else if (xpp.getName().equals(prefix+"Endpoint")) {
31844      return true;
31845    } else if (xpp.getName().equals(prefix+"EnrollmentRequest")) {
31846      return true;
31847    } else if (xpp.getName().equals(prefix+"EnrollmentResponse")) {
31848      return true;
31849    } else if (xpp.getName().equals(prefix+"EpisodeOfCare")) {
31850      return true;
31851    } else if (xpp.getName().equals(prefix+"EventDefinition")) {
31852      return true;
31853    } else if (xpp.getName().equals(prefix+"Evidence")) {
31854      return true;
31855    } else if (xpp.getName().equals(prefix+"EvidenceReport")) {
31856      return true;
31857    } else if (xpp.getName().equals(prefix+"EvidenceVariable")) {
31858      return true;
31859    } else if (xpp.getName().equals(prefix+"ExampleScenario")) {
31860      return true;
31861    } else if (xpp.getName().equals(prefix+"ExplanationOfBenefit")) {
31862      return true;
31863    } else if (xpp.getName().equals(prefix+"FamilyMemberHistory")) {
31864      return true;
31865    } else if (xpp.getName().equals(prefix+"Flag")) {
31866      return true;
31867    } else if (xpp.getName().equals(prefix+"FormularyItem")) {
31868      return true;
31869    } else if (xpp.getName().equals(prefix+"GenomicStudy")) {
31870      return true;
31871    } else if (xpp.getName().equals(prefix+"Goal")) {
31872      return true;
31873    } else if (xpp.getName().equals(prefix+"GraphDefinition")) {
31874      return true;
31875    } else if (xpp.getName().equals(prefix+"Group")) {
31876      return true;
31877    } else if (xpp.getName().equals(prefix+"GuidanceResponse")) {
31878      return true;
31879    } else if (xpp.getName().equals(prefix+"HealthcareService")) {
31880      return true;
31881    } else if (xpp.getName().equals(prefix+"ImagingSelection")) {
31882      return true;
31883    } else if (xpp.getName().equals(prefix+"ImagingStudy")) {
31884      return true;
31885    } else if (xpp.getName().equals(prefix+"Immunization")) {
31886      return true;
31887    } else if (xpp.getName().equals(prefix+"ImmunizationEvaluation")) {
31888      return true;
31889    } else if (xpp.getName().equals(prefix+"ImmunizationRecommendation")) {
31890      return true;
31891    } else if (xpp.getName().equals(prefix+"ImplementationGuide")) {
31892      return true;
31893    } else if (xpp.getName().equals(prefix+"Ingredient")) {
31894      return true;
31895    } else if (xpp.getName().equals(prefix+"InsurancePlan")) {
31896      return true;
31897    } else if (xpp.getName().equals(prefix+"InventoryItem")) {
31898      return true;
31899    } else if (xpp.getName().equals(prefix+"InventoryReport")) {
31900      return true;
31901    } else if (xpp.getName().equals(prefix+"Invoice")) {
31902      return true;
31903    } else if (xpp.getName().equals(prefix+"Library")) {
31904      return true;
31905    } else if (xpp.getName().equals(prefix+"Linkage")) {
31906      return true;
31907    } else if (xpp.getName().equals(prefix+"List")) {
31908      return true;
31909    } else if (xpp.getName().equals(prefix+"Location")) {
31910      return true;
31911    } else if (xpp.getName().equals(prefix+"ManufacturedItemDefinition")) {
31912      return true;
31913    } else if (xpp.getName().equals(prefix+"Measure")) {
31914      return true;
31915    } else if (xpp.getName().equals(prefix+"MeasureReport")) {
31916      return true;
31917    } else if (xpp.getName().equals(prefix+"Medication")) {
31918      return true;
31919    } else if (xpp.getName().equals(prefix+"MedicationAdministration")) {
31920      return true;
31921    } else if (xpp.getName().equals(prefix+"MedicationDispense")) {
31922      return true;
31923    } else if (xpp.getName().equals(prefix+"MedicationKnowledge")) {
31924      return true;
31925    } else if (xpp.getName().equals(prefix+"MedicationRequest")) {
31926      return true;
31927    } else if (xpp.getName().equals(prefix+"MedicationStatement")) {
31928      return true;
31929    } else if (xpp.getName().equals(prefix+"MedicinalProductDefinition")) {
31930      return true;
31931    } else if (xpp.getName().equals(prefix+"MessageDefinition")) {
31932      return true;
31933    } else if (xpp.getName().equals(prefix+"MessageHeader")) {
31934      return true;
31935    } else if (xpp.getName().equals(prefix+"MolecularSequence")) {
31936      return true;
31937    } else if (xpp.getName().equals(prefix+"NamingSystem")) {
31938      return true;
31939    } else if (xpp.getName().equals(prefix+"NutritionIntake")) {
31940      return true;
31941    } else if (xpp.getName().equals(prefix+"NutritionOrder")) {
31942      return true;
31943    } else if (xpp.getName().equals(prefix+"NutritionProduct")) {
31944      return true;
31945    } else if (xpp.getName().equals(prefix+"Observation")) {
31946      return true;
31947    } else if (xpp.getName().equals(prefix+"ObservationDefinition")) {
31948      return true;
31949    } else if (xpp.getName().equals(prefix+"OperationDefinition")) {
31950      return true;
31951    } else if (xpp.getName().equals(prefix+"OperationOutcome")) {
31952      return true;
31953    } else if (xpp.getName().equals(prefix+"Organization")) {
31954      return true;
31955    } else if (xpp.getName().equals(prefix+"OrganizationAffiliation")) {
31956      return true;
31957    } else if (xpp.getName().equals(prefix+"PackagedProductDefinition")) {
31958      return true;
31959    } else if (xpp.getName().equals(prefix+"Parameters")) {
31960      return true;
31961    } else if (xpp.getName().equals(prefix+"Patient")) {
31962      return true;
31963    } else if (xpp.getName().equals(prefix+"PaymentNotice")) {
31964      return true;
31965    } else if (xpp.getName().equals(prefix+"PaymentReconciliation")) {
31966      return true;
31967    } else if (xpp.getName().equals(prefix+"Permission")) {
31968      return true;
31969    } else if (xpp.getName().equals(prefix+"Person")) {
31970      return true;
31971    } else if (xpp.getName().equals(prefix+"PlanDefinition")) {
31972      return true;
31973    } else if (xpp.getName().equals(prefix+"Practitioner")) {
31974      return true;
31975    } else if (xpp.getName().equals(prefix+"PractitionerRole")) {
31976      return true;
31977    } else if (xpp.getName().equals(prefix+"Procedure")) {
31978      return true;
31979    } else if (xpp.getName().equals(prefix+"Provenance")) {
31980      return true;
31981    } else if (xpp.getName().equals(prefix+"Questionnaire")) {
31982      return true;
31983    } else if (xpp.getName().equals(prefix+"QuestionnaireResponse")) {
31984      return true;
31985    } else if (xpp.getName().equals(prefix+"RegulatedAuthorization")) {
31986      return true;
31987    } else if (xpp.getName().equals(prefix+"RelatedPerson")) {
31988      return true;
31989    } else if (xpp.getName().equals(prefix+"RequestOrchestration")) {
31990      return true;
31991    } else if (xpp.getName().equals(prefix+"Requirements")) {
31992      return true;
31993    } else if (xpp.getName().equals(prefix+"ResearchStudy")) {
31994      return true;
31995    } else if (xpp.getName().equals(prefix+"ResearchSubject")) {
31996      return true;
31997    } else if (xpp.getName().equals(prefix+"RiskAssessment")) {
31998      return true;
31999    } else if (xpp.getName().equals(prefix+"Schedule")) {
32000      return true;
32001    } else if (xpp.getName().equals(prefix+"SearchParameter")) {
32002      return true;
32003    } else if (xpp.getName().equals(prefix+"ServiceRequest")) {
32004      return true;
32005    } else if (xpp.getName().equals(prefix+"Slot")) {
32006      return true;
32007    } else if (xpp.getName().equals(prefix+"Specimen")) {
32008      return true;
32009    } else if (xpp.getName().equals(prefix+"SpecimenDefinition")) {
32010      return true;
32011    } else if (xpp.getName().equals(prefix+"StructureDefinition")) {
32012      return true;
32013    } else if (xpp.getName().equals(prefix+"StructureMap")) {
32014      return true;
32015    } else if (xpp.getName().equals(prefix+"Subscription")) {
32016      return true;
32017    } else if (xpp.getName().equals(prefix+"SubscriptionStatus")) {
32018      return true;
32019    } else if (xpp.getName().equals(prefix+"SubscriptionTopic")) {
32020      return true;
32021    } else if (xpp.getName().equals(prefix+"Substance")) {
32022      return true;
32023    } else if (xpp.getName().equals(prefix+"SubstanceDefinition")) {
32024      return true;
32025    } else if (xpp.getName().equals(prefix+"SubstanceNucleicAcid")) {
32026      return true;
32027    } else if (xpp.getName().equals(prefix+"SubstancePolymer")) {
32028      return true;
32029    } else if (xpp.getName().equals(prefix+"SubstanceProtein")) {
32030      return true;
32031    } else if (xpp.getName().equals(prefix+"SubstanceReferenceInformation")) {
32032      return true;
32033    } else if (xpp.getName().equals(prefix+"SubstanceSourceMaterial")) {
32034      return true;
32035    } else if (xpp.getName().equals(prefix+"SupplyDelivery")) {
32036      return true;
32037    } else if (xpp.getName().equals(prefix+"SupplyRequest")) {
32038      return true;
32039    } else if (xpp.getName().equals(prefix+"Task")) {
32040      return true;
32041    } else if (xpp.getName().equals(prefix+"TerminologyCapabilities")) {
32042      return true;
32043    } else if (xpp.getName().equals(prefix+"TestPlan")) {
32044      return true;
32045    } else if (xpp.getName().equals(prefix+"TestReport")) {
32046      return true;
32047    } else if (xpp.getName().equals(prefix+"TestScript")) {
32048      return true;
32049    } else if (xpp.getName().equals(prefix+"Transport")) {
32050      return true;
32051    } else if (xpp.getName().equals(prefix+"ValueSet")) {
32052      return true;
32053    } else if (xpp.getName().equals(prefix+"VerificationResult")) {
32054      return true;
32055    } else if (xpp.getName().equals(prefix+"VisionPrescription")) {
32056      return true;
32057
32058    } else if (xpp.getName().equals(prefix+"Date")) {
32059      return true;
32060    } else if (xpp.getName().equals(prefix+"DateTime")) {
32061      return true;
32062    } else if (xpp.getName().equals(prefix+"Code")) {
32063      return true;
32064    } else if (xpp.getName().equals(prefix+"String")) {
32065      return true;
32066    } else if (xpp.getName().equals(prefix+"Integer")) {
32067      return true;
32068    } else if (xpp.getName().equals(prefix+"Integer64")) {
32069      return true;
32070    } else if (xpp.getName().equals(prefix+"Oid")) {
32071      return true;
32072    } else if (xpp.getName().equals(prefix+"Canonical")) {
32073      return true;
32074    } else if (xpp.getName().equals(prefix+"Uri")) {
32075      return true;
32076    } else if (xpp.getName().equals(prefix+"Uuid")) {
32077      return true;
32078    } else if (xpp.getName().equals(prefix+"Url")) {
32079      return true;
32080    } else if (xpp.getName().equals(prefix+"Instant")) {
32081      return true;
32082    } else if (xpp.getName().equals(prefix+"Boolean")) {
32083      return true;
32084    } else if (xpp.getName().equals(prefix+"Base64Binary")) {
32085      return true;
32086    } else if (xpp.getName().equals(prefix+"UnsignedInt")) {
32087      return true;
32088    } else if (xpp.getName().equals(prefix+"Markdown")) {
32089      return true;
32090    } else if (xpp.getName().equals(prefix+"Time")) {
32091      return true;
32092    } else if (xpp.getName().equals(prefix+"Id")) {
32093      return true;
32094    } else if (xpp.getName().equals(prefix+"PositiveInt")) {
32095      return true;
32096    } else if (xpp.getName().equals(prefix+"Decimal")) {
32097      return true;
32098    } else {
32099      return false;
32100    }
32101  }
32102
32103  @Override
32104  protected DataType parseAnyType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
32105    return parseType(xpp, type);
32106  }
32107
32108
32109//----------------- Composer -------------------------------------------------------------------------------------------
32110
32111  protected <E extends Enum<E>> void composeEnumeration(String name, Enumeration<E> value, EnumFactory e) throws IOException {
32112    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {
32113      composeElementAttributes(value);
32114      if (value.getValue() != null) 
32115        xml.attribute("value", e.toCode(value.getValue()));
32116        
32117      xml.enter(FHIR_NS, name);
32118      composeElementElements(value);
32119      composeElementClose(value);
32120      xml.exit(FHIR_NS, name);
32121    }    
32122  }    
32123
32124  protected void composeDate(String name, DateType value) throws IOException  {
32125    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// date
32126      composeElementAttributes(value);
32127      if (value.asStringValue() != null) 
32128        xml.attribute("value", value.asStringValue());
32129        
32130      xml.enter(FHIR_NS, name);
32131      composeElementElements(value);
32132      composeElementClose(value);
32133      xml.exit(FHIR_NS, name);
32134    }    
32135  }    
32136
32137  protected void composeDateTime(String name, DateTimeType value) throws IOException  {
32138    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// dateTime
32139      composeElementAttributes(value);
32140      if (value.asStringValue() != null) 
32141        xml.attribute("value", value.asStringValue());
32142        
32143      xml.enter(FHIR_NS, name);
32144      composeElementElements(value);
32145      composeElementClose(value);
32146      xml.exit(FHIR_NS, name);
32147    }    
32148  }    
32149
32150  protected void composeCode(String name, CodeType value) throws IOException  {
32151    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// code
32152      composeElementAttributes(value);
32153      if (value.asStringValue() != null) 
32154        xml.attribute("value", value.asStringValue());
32155        
32156      xml.enter(FHIR_NS, name);
32157      composeElementElements(value);
32158      composeElementClose(value);
32159      xml.exit(FHIR_NS, name);
32160    }    
32161  }    
32162
32163  protected void composeString(String name, StringType value) throws IOException  {
32164    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// string
32165      composeElementAttributes(value);
32166      if (value.asStringValue() != null) 
32167        xml.attribute("value", value.asStringValue());
32168        
32169      xml.enter(FHIR_NS, name);
32170      composeElementElements(value);
32171      composeElementClose(value);
32172      xml.exit(FHIR_NS, name);
32173    }    
32174  }    
32175
32176  protected void composeInteger(String name, IntegerType value) throws IOException  {
32177    if (value != null) { // integer
32178      composeElementAttributes(value);
32179      if (value.asStringValue() != null) 
32180        xml.attribute("value", value.asStringValue());
32181        
32182      xml.enter(FHIR_NS, name);
32183      composeElementElements(value);
32184      composeElementClose(value);
32185      xml.exit(FHIR_NS, name);
32186    }    
32187  }    
32188
32189  protected void composeInteger64(String name, Integer64Type value) throws IOException  {
32190    if (value != null) { // integer
32191      composeElementAttributes(value);
32192      if (value.asStringValue() != null) 
32193        xml.attribute("value", value.asStringValue());
32194        
32195      xml.enter(FHIR_NS, name);
32196      composeElementElements(value);
32197      composeElementClose(value);
32198      xml.exit(FHIR_NS, name);
32199    }    
32200  }    
32201
32202  protected void composeOid(String name, OidType value) throws IOException  {
32203    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// oid
32204      composeElementAttributes(value);
32205      if (value.asStringValue() != null) 
32206        xml.attribute("value", value.asStringValue());
32207        
32208      xml.enter(FHIR_NS, name);
32209      composeElementElements(value);
32210      composeElementClose(value);
32211      xml.exit(FHIR_NS, name);
32212    }    
32213  }    
32214
32215  protected void composeCanonical(String name, CanonicalType value) throws IOException  {
32216    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// canonical
32217      composeElementAttributes(value);
32218      if (value.asStringValue() != null) 
32219        xml.attribute("value", value.asStringValue());
32220        
32221      xml.enter(FHIR_NS, name);
32222      composeElementElements(value);
32223      composeElementClose(value);
32224      xml.exit(FHIR_NS, name);
32225    }    
32226  }    
32227
32228  protected void composeUri(String name, UriType value) throws IOException  {
32229    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// uri
32230      composeElementAttributes(value);
32231      if (value.asStringValue() != null) 
32232        xml.attribute("value", value.asStringValue());
32233        
32234      xml.enter(FHIR_NS, name);
32235      composeElementElements(value);
32236      composeElementClose(value);
32237      xml.exit(FHIR_NS, name);
32238    }    
32239  }    
32240
32241  protected void composeUuid(String name, UuidType value) throws IOException  {
32242    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// uuid
32243      composeElementAttributes(value);
32244      if (value.asStringValue() != null) 
32245        xml.attribute("value", value.asStringValue());
32246        
32247      xml.enter(FHIR_NS, name);
32248      composeElementElements(value);
32249      composeElementClose(value);
32250      xml.exit(FHIR_NS, name);
32251    }    
32252  }    
32253
32254  protected void composeUrl(String name, UrlType value) throws IOException  {
32255    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// url
32256      composeElementAttributes(value);
32257      if (value.asStringValue() != null) 
32258        xml.attribute("value", value.asStringValue());
32259        
32260      xml.enter(FHIR_NS, name);
32261      composeElementElements(value);
32262      composeElementClose(value);
32263      xml.exit(FHIR_NS, name);
32264    }    
32265  }    
32266
32267  protected void composeInstant(String name, InstantType value) throws IOException  {
32268    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// instant
32269      composeElementAttributes(value);
32270      if (value.asStringValue() != null) 
32271        xml.attribute("value", value.asStringValue());
32272        
32273      xml.enter(FHIR_NS, name);
32274      composeElementElements(value);
32275      composeElementClose(value);
32276      xml.exit(FHIR_NS, name);
32277    }    
32278  }    
32279
32280  protected void composeBoolean(String name, BooleanType value) throws IOException  {
32281    if (value != null) { // boolean
32282      composeElementAttributes(value);
32283      if (value.asStringValue() != null) 
32284        xml.attribute("value", value.asStringValue());
32285        
32286      xml.enter(FHIR_NS, name);
32287      composeElementElements(value);
32288      composeElementClose(value);
32289      xml.exit(FHIR_NS, name);
32290    }    
32291  }    
32292
32293  protected void composeBase64Binary(String name, Base64BinaryType value) throws IOException  {
32294    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// base64Binary
32295      composeElementAttributes(value);
32296      if (value.asStringValue() != null) 
32297        xml.attribute("value", value.asStringValue());
32298        
32299      xml.enter(FHIR_NS, name);
32300      composeElementElements(value);
32301      composeElementClose(value);
32302      xml.exit(FHIR_NS, name);
32303    }    
32304  }    
32305
32306  protected void composeUnsignedInt(String name, UnsignedIntType value) throws IOException  {
32307    if (value != null) { // unsignedInt
32308      composeElementAttributes(value);
32309      if (value.asStringValue() != null) 
32310        xml.attribute("value", value.asStringValue());
32311        
32312      xml.enter(FHIR_NS, name);
32313      composeElementElements(value);
32314      composeElementClose(value);
32315      xml.exit(FHIR_NS, name);
32316    }    
32317  }    
32318
32319  protected void composeMarkdown(String name, MarkdownType value) throws IOException  {
32320    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// markdown
32321      composeElementAttributes(value);
32322      if (value.asStringValue() != null) 
32323        xml.attribute("value", value.asStringValue());
32324        
32325      xml.enter(FHIR_NS, name);
32326      composeElementElements(value);
32327      composeElementClose(value);
32328      xml.exit(FHIR_NS, name);
32329    }    
32330  }    
32331
32332  protected void composeTime(String name, TimeType value) throws IOException  {
32333    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// time
32334      composeElementAttributes(value);
32335      if (value.asStringValue() != null) 
32336        xml.attribute("value", value.asStringValue());
32337        
32338      xml.enter(FHIR_NS, name);
32339      composeElementElements(value);
32340      composeElementClose(value);
32341      xml.exit(FHIR_NS, name);
32342    }    
32343  }    
32344
32345  protected void composeId(String name, IdType value) throws IOException  {
32346    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// id
32347      composeElementAttributes(value);
32348      if (value.asStringValue() != null) 
32349        xml.attribute("value", value.asStringValue());
32350        
32351      xml.enter(FHIR_NS, name);
32352      composeElementElements(value);
32353      composeElementClose(value);
32354      xml.exit(FHIR_NS, name);
32355    }    
32356  }    
32357
32358  protected void composePositiveInt(String name, PositiveIntType value) throws IOException  {
32359    if (value != null) { // positiveInt
32360      composeElementAttributes(value);
32361      if (value.asStringValue() != null) 
32362        xml.attribute("value", value.asStringValue());
32363        
32364      xml.enter(FHIR_NS, name);
32365      composeElementElements(value);
32366      composeElementClose(value);
32367      xml.exit(FHIR_NS, name);
32368    }    
32369  }    
32370
32371  protected void composeDecimal(String name, DecimalType value) throws IOException  {
32372    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// decimal
32373      composeElementAttributes(value);
32374      if (value.asStringValue() != null) 
32375        xml.attribute("value", value.asStringValue());
32376        
32377      xml.enter(FHIR_NS, name);
32378      composeElementElements(value);
32379      composeElementClose(value);
32380      xml.exit(FHIR_NS, name);
32381    }    
32382  }    
32383
32384  protected void composeBackboneElementElements(BackboneElement element) throws IOException {
32385    composeElementElements(element);
32386    if (element.hasModifierExtension()) { 
32387      for (Extension e : element.getModifierExtension()) 
32388          composeExtension("modifierExtension", e);
32389    }
32390  }
32391
32392  protected void composeBackboneTypeElements(BackboneType element) throws IOException {
32393    composeDataTypeElements(element);
32394    if (element.hasModifierExtension()) { 
32395      for (Extension e : element.getModifierExtension()) 
32396          composeExtension("modifierExtension", e);
32397    }
32398  }
32399
32400  protected void composeDataTypeElements(DataType element) throws IOException {
32401    composeElementElements(element);
32402  }
32403
32404  protected void composeElementElements(Element element) throws IOException {
32405    composeBaseElements(element);
32406    if (element.hasExtension()) { 
32407      for (Extension e : element.getExtension()) 
32408          composeExtension("extension", e);
32409    }
32410  }
32411
32412  protected void composeAddress(String name, Address element) throws IOException {
32413    if (element != null) {
32414    composeElementAttributes(element);
32415      xml.enter(FHIR_NS, name);
32416      composeAddressElements(element);
32417      composeElementClose(element);
32418      xml.exit(FHIR_NS, name);
32419    }
32420  }
32421
32422  protected void composeAddressElements(Address element) throws IOException {
32423    composeDataTypeElements(element);
32424    if (element.hasUseElement())
32425      composeEnumeration("use", element.getUseElement(), new Address.AddressUseEnumFactory());
32426    if (element.hasTypeElement())
32427      composeEnumeration("type", element.getTypeElement(), new Address.AddressTypeEnumFactory());
32428    if (element.hasTextElement()) {
32429      composeString("text", element.getTextElement());
32430    }
32431    if (element.hasLine()) { 
32432      for (StringType e : element.getLine()) 
32433          composeString("line", e);
32434    }
32435    if (element.hasCityElement()) {
32436      composeString("city", element.getCityElement());
32437    }
32438    if (element.hasDistrictElement()) {
32439      composeString("district", element.getDistrictElement());
32440    }
32441    if (element.hasStateElement()) {
32442      composeString("state", element.getStateElement());
32443    }
32444    if (element.hasPostalCodeElement()) {
32445      composeString("postalCode", element.getPostalCodeElement());
32446    }
32447    if (element.hasCountryElement()) {
32448      composeString("country", element.getCountryElement());
32449    }
32450    if (element.hasPeriod()) {
32451      composePeriod("period", element.getPeriod());
32452    }
32453  }
32454
32455  protected void composeAge(String name, Age element) throws IOException {
32456    if (element != null) {
32457    composeElementAttributes(element);
32458      xml.enter(FHIR_NS, name);
32459      composeAgeElements(element);
32460      composeElementClose(element);
32461      xml.exit(FHIR_NS, name);
32462    }
32463  }
32464
32465  protected void composeAgeElements(Age element) throws IOException {
32466    composeQuantityElements(element);
32467  }
32468
32469  protected void composeAnnotation(String name, Annotation element) throws IOException {
32470    if (element != null) {
32471    composeElementAttributes(element);
32472      xml.enter(FHIR_NS, name);
32473      composeAnnotationElements(element);
32474      composeElementClose(element);
32475      xml.exit(FHIR_NS, name);
32476    }
32477  }
32478
32479  protected void composeAnnotationElements(Annotation element) throws IOException {
32480    composeDataTypeElements(element);
32481    if (element.hasAuthor()) {
32482      composeType("author", element.getAuthor());
32483    }    if (element.hasTimeElement()) {
32484      composeDateTime("time", element.getTimeElement());
32485    }
32486    if (element.hasTextElement()) {
32487      composeMarkdown("text", element.getTextElement());
32488    }
32489  }
32490
32491  protected void composeAttachment(String name, Attachment element) throws IOException {
32492    if (element != null) {
32493    composeElementAttributes(element);
32494      xml.enter(FHIR_NS, name);
32495      composeAttachmentElements(element);
32496      composeElementClose(element);
32497      xml.exit(FHIR_NS, name);
32498    }
32499  }
32500
32501  protected void composeAttachmentElements(Attachment element) throws IOException {
32502    composeDataTypeElements(element);
32503    if (element.hasContentTypeElement()) {
32504      composeCode("contentType", element.getContentTypeElement());
32505    }
32506    if (element.hasLanguageElement()) {
32507      composeCode("language", element.getLanguageElement());
32508    }
32509    if (element.hasDataElement()) {
32510      composeBase64Binary("data", element.getDataElement());
32511    }
32512    if (element.hasUrlElement()) {
32513      composeUrl("url", element.getUrlElement());
32514    }
32515    if (element.hasSizeElement()) {
32516      composeInteger64("size", element.getSizeElement());
32517    }
32518    if (element.hasHashElement()) {
32519      composeBase64Binary("hash", element.getHashElement());
32520    }
32521    if (element.hasTitleElement()) {
32522      composeString("title", element.getTitleElement());
32523    }
32524    if (element.hasCreationElement()) {
32525      composeDateTime("creation", element.getCreationElement());
32526    }
32527    if (element.hasHeightElement()) {
32528      composePositiveInt("height", element.getHeightElement());
32529    }
32530    if (element.hasWidthElement()) {
32531      composePositiveInt("width", element.getWidthElement());
32532    }
32533    if (element.hasFramesElement()) {
32534      composePositiveInt("frames", element.getFramesElement());
32535    }
32536    if (element.hasDurationElement()) {
32537      composeDecimal("duration", element.getDurationElement());
32538    }
32539    if (element.hasPagesElement()) {
32540      composePositiveInt("pages", element.getPagesElement());
32541    }
32542  }
32543
32544  protected void composeAvailability(String name, Availability element) throws IOException {
32545    if (element != null) {
32546    composeElementAttributes(element);
32547      xml.enter(FHIR_NS, name);
32548      composeAvailabilityElements(element);
32549      composeElementClose(element);
32550      xml.exit(FHIR_NS, name);
32551    }
32552  }
32553
32554  protected void composeAvailabilityElements(Availability element) throws IOException {
32555    composeDataTypeElements(element);
32556    if (element.hasAvailableTime()) { 
32557      for (Availability.AvailabilityAvailableTimeComponent e : element.getAvailableTime()) 
32558          composeAvailabilityAvailableTimeComponent("availableTime", e);
32559    }
32560    if (element.hasNotAvailableTime()) { 
32561      for (Availability.AvailabilityNotAvailableTimeComponent e : element.getNotAvailableTime()) 
32562          composeAvailabilityNotAvailableTimeComponent("notAvailableTime", e);
32563    }
32564  }
32565
32566  protected void composeAvailabilityAvailableTimeComponent(String name, Availability.AvailabilityAvailableTimeComponent element) throws IOException {
32567    if (element != null) {
32568    composeElementAttributes(element);
32569      xml.enter(FHIR_NS, name);
32570      composeAvailabilityAvailableTimeComponentElements(element);
32571      composeElementClose(element);
32572      xml.exit(FHIR_NS, name);
32573    }
32574  }
32575
32576  protected void composeAvailabilityAvailableTimeComponentElements(Availability.AvailabilityAvailableTimeComponent element) throws IOException {
32577    composeElementElements(element);
32578      if (element.hasDaysOfWeek()) 
32579        for (Enumeration<Enumerations.DaysOfWeek> e : element.getDaysOfWeek()) 
32580          composeEnumeration("daysOfWeek", e, new Enumerations.DaysOfWeekEnumFactory());
32581    if (element.hasAllDayElement()) {
32582      composeBoolean("allDay", element.getAllDayElement());
32583    }
32584    if (element.hasAvailableStartTimeElement()) {
32585      composeTime("availableStartTime", element.getAvailableStartTimeElement());
32586    }
32587    if (element.hasAvailableEndTimeElement()) {
32588      composeTime("availableEndTime", element.getAvailableEndTimeElement());
32589    }
32590  }
32591
32592  protected void composeAvailabilityNotAvailableTimeComponent(String name, Availability.AvailabilityNotAvailableTimeComponent element) throws IOException {
32593    if (element != null) {
32594    composeElementAttributes(element);
32595      xml.enter(FHIR_NS, name);
32596      composeAvailabilityNotAvailableTimeComponentElements(element);
32597      composeElementClose(element);
32598      xml.exit(FHIR_NS, name);
32599    }
32600  }
32601
32602  protected void composeAvailabilityNotAvailableTimeComponentElements(Availability.AvailabilityNotAvailableTimeComponent element) throws IOException {
32603    composeElementElements(element);
32604    if (element.hasDescriptionElement()) {
32605      composeString("description", element.getDescriptionElement());
32606    }
32607    if (element.hasDuring()) {
32608      composePeriod("during", element.getDuring());
32609    }
32610  }
32611
32612  protected void composeCodeableConcept(String name, CodeableConcept element) throws IOException {
32613    if (element != null) {
32614    composeElementAttributes(element);
32615      xml.enter(FHIR_NS, name);
32616      composeCodeableConceptElements(element);
32617      composeElementClose(element);
32618      xml.exit(FHIR_NS, name);
32619    }
32620  }
32621
32622  protected void composeCodeableConceptElements(CodeableConcept element) throws IOException {
32623    composeDataTypeElements(element);
32624    if (element.hasCoding()) { 
32625      for (Coding e : element.getCoding()) 
32626          composeCoding("coding", e);
32627    }
32628    if (element.hasTextElement()) {
32629      composeString("text", element.getTextElement());
32630    }
32631  }
32632
32633  protected void composeCodeableReference(String name, CodeableReference element) throws IOException {
32634    if (element != null) {
32635    composeElementAttributes(element);
32636      xml.enter(FHIR_NS, name);
32637      composeCodeableReferenceElements(element);
32638      composeElementClose(element);
32639      xml.exit(FHIR_NS, name);
32640    }
32641  }
32642
32643  protected void composeCodeableReferenceElements(CodeableReference element) throws IOException {
32644    composeDataTypeElements(element);
32645    if (element.hasConcept()) {
32646      composeCodeableConcept("concept", element.getConcept());
32647    }
32648    if (element.hasReference()) {
32649      composeReference("reference", element.getReference());
32650    }
32651  }
32652
32653  protected void composeCoding(String name, Coding element) throws IOException {
32654    if (element != null) {
32655    composeElementAttributes(element);
32656      xml.enter(FHIR_NS, name);
32657      composeCodingElements(element);
32658      composeElementClose(element);
32659      xml.exit(FHIR_NS, name);
32660    }
32661  }
32662
32663  protected void composeCodingElements(Coding element) throws IOException {
32664    composeDataTypeElements(element);
32665    if (element.hasSystemElement()) {
32666      composeUri("system", element.getSystemElement());
32667    }
32668    if (element.hasVersionElement()) {
32669      composeString("version", element.getVersionElement());
32670    }
32671    if (element.hasCodeElement()) {
32672      composeCode("code", element.getCodeElement());
32673    }
32674    if (element.hasDisplayElement()) {
32675      composeString("display", element.getDisplayElement());
32676    }
32677    if (element.hasUserSelectedElement()) {
32678      composeBoolean("userSelected", element.getUserSelectedElement());
32679    }
32680  }
32681
32682  protected void composeContactDetail(String name, ContactDetail element) throws IOException {
32683    if (element != null) {
32684    composeElementAttributes(element);
32685      xml.enter(FHIR_NS, name);
32686      composeContactDetailElements(element);
32687      composeElementClose(element);
32688      xml.exit(FHIR_NS, name);
32689    }
32690  }
32691
32692  protected void composeContactDetailElements(ContactDetail element) throws IOException {
32693    composeDataTypeElements(element);
32694    if (element.hasNameElement()) {
32695      composeString("name", element.getNameElement());
32696    }
32697    if (element.hasTelecom()) { 
32698      for (ContactPoint e : element.getTelecom()) 
32699          composeContactPoint("telecom", e);
32700    }
32701  }
32702
32703  protected void composeContactPoint(String name, ContactPoint element) throws IOException {
32704    if (element != null) {
32705    composeElementAttributes(element);
32706      xml.enter(FHIR_NS, name);
32707      composeContactPointElements(element);
32708      composeElementClose(element);
32709      xml.exit(FHIR_NS, name);
32710    }
32711  }
32712
32713  protected void composeContactPointElements(ContactPoint element) throws IOException {
32714    composeDataTypeElements(element);
32715    if (element.hasSystemElement())
32716      composeEnumeration("system", element.getSystemElement(), new ContactPoint.ContactPointSystemEnumFactory());
32717    if (element.hasValueElement()) {
32718      composeString("value", element.getValueElement());
32719    }
32720    if (element.hasUseElement())
32721      composeEnumeration("use", element.getUseElement(), new ContactPoint.ContactPointUseEnumFactory());
32722    if (element.hasRankElement()) {
32723      composePositiveInt("rank", element.getRankElement());
32724    }
32725    if (element.hasPeriod()) {
32726      composePeriod("period", element.getPeriod());
32727    }
32728  }
32729
32730  protected void composeContributor(String name, Contributor element) throws IOException {
32731    if (element != null) {
32732    composeElementAttributes(element);
32733      xml.enter(FHIR_NS, name);
32734      composeContributorElements(element);
32735      composeElementClose(element);
32736      xml.exit(FHIR_NS, name);
32737    }
32738  }
32739
32740  protected void composeContributorElements(Contributor element) throws IOException {
32741    composeDataTypeElements(element);
32742    if (element.hasTypeElement())
32743      composeEnumeration("type", element.getTypeElement(), new Contributor.ContributorTypeEnumFactory());
32744    if (element.hasNameElement()) {
32745      composeString("name", element.getNameElement());
32746    }
32747    if (element.hasContact()) { 
32748      for (ContactDetail e : element.getContact()) 
32749          composeContactDetail("contact", e);
32750    }
32751  }
32752
32753  protected void composeCount(String name, Count element) throws IOException {
32754    if (element != null) {
32755    composeElementAttributes(element);
32756      xml.enter(FHIR_NS, name);
32757      composeCountElements(element);
32758      composeElementClose(element);
32759      xml.exit(FHIR_NS, name);
32760    }
32761  }
32762
32763  protected void composeCountElements(Count element) throws IOException {
32764    composeQuantityElements(element);
32765  }
32766
32767  protected void composeDataRequirement(String name, DataRequirement element) throws IOException {
32768    if (element != null) {
32769    composeElementAttributes(element);
32770      xml.enter(FHIR_NS, name);
32771      composeDataRequirementElements(element);
32772      composeElementClose(element);
32773      xml.exit(FHIR_NS, name);
32774    }
32775  }
32776
32777  protected void composeDataRequirementElements(DataRequirement element) throws IOException {
32778    composeDataTypeElements(element);
32779    if (element.hasTypeElement())
32780      composeEnumeration("type", element.getTypeElement(), new Enumerations.FHIRTypesEnumFactory());
32781    if (element.hasProfile()) { 
32782      for (CanonicalType e : element.getProfile()) 
32783          composeCanonical("profile", e);
32784    }
32785    if (element.hasSubject()) {
32786      composeType("subject", element.getSubject());
32787    }    if (element.hasMustSupport()) { 
32788      for (StringType e : element.getMustSupport()) 
32789          composeString("mustSupport", e);
32790    }
32791    if (element.hasCodeFilter()) { 
32792      for (DataRequirement.DataRequirementCodeFilterComponent e : element.getCodeFilter()) 
32793          composeDataRequirementCodeFilterComponent("codeFilter", e);
32794    }
32795    if (element.hasDateFilter()) { 
32796      for (DataRequirement.DataRequirementDateFilterComponent e : element.getDateFilter()) 
32797          composeDataRequirementDateFilterComponent("dateFilter", e);
32798    }
32799    if (element.hasValueFilter()) { 
32800      for (DataRequirement.DataRequirementValueFilterComponent e : element.getValueFilter()) 
32801          composeDataRequirementValueFilterComponent("valueFilter", e);
32802    }
32803    if (element.hasLimitElement()) {
32804      composePositiveInt("limit", element.getLimitElement());
32805    }
32806    if (element.hasSort()) { 
32807      for (DataRequirement.DataRequirementSortComponent e : element.getSort()) 
32808          composeDataRequirementSortComponent("sort", e);
32809    }
32810  }
32811
32812  protected void composeDataRequirementCodeFilterComponent(String name, DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
32813    if (element != null) {
32814    composeElementAttributes(element);
32815      xml.enter(FHIR_NS, name);
32816      composeDataRequirementCodeFilterComponentElements(element);
32817      composeElementClose(element);
32818      xml.exit(FHIR_NS, name);
32819    }
32820  }
32821
32822  protected void composeDataRequirementCodeFilterComponentElements(DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
32823    composeElementElements(element);
32824    if (element.hasPathElement()) {
32825      composeString("path", element.getPathElement());
32826    }
32827    if (element.hasSearchParamElement()) {
32828      composeString("searchParam", element.getSearchParamElement());
32829    }
32830    if (element.hasValueSetElement()) {
32831      composeCanonical("valueSet", element.getValueSetElement());
32832    }
32833    if (element.hasCode()) { 
32834      for (Coding e : element.getCode()) 
32835          composeCoding("code", e);
32836    }
32837  }
32838
32839  protected void composeDataRequirementDateFilterComponent(String name, DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
32840    if (element != null) {
32841    composeElementAttributes(element);
32842      xml.enter(FHIR_NS, name);
32843      composeDataRequirementDateFilterComponentElements(element);
32844      composeElementClose(element);
32845      xml.exit(FHIR_NS, name);
32846    }
32847  }
32848
32849  protected void composeDataRequirementDateFilterComponentElements(DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
32850    composeElementElements(element);
32851    if (element.hasPathElement()) {
32852      composeString("path", element.getPathElement());
32853    }
32854    if (element.hasSearchParamElement()) {
32855      composeString("searchParam", element.getSearchParamElement());
32856    }
32857    if (element.hasValue()) {
32858      composeType("value", element.getValue());
32859    }  }
32860
32861  protected void composeDataRequirementValueFilterComponent(String name, DataRequirement.DataRequirementValueFilterComponent element) throws IOException {
32862    if (element != null) {
32863    composeElementAttributes(element);
32864      xml.enter(FHIR_NS, name);
32865      composeDataRequirementValueFilterComponentElements(element);
32866      composeElementClose(element);
32867      xml.exit(FHIR_NS, name);
32868    }
32869  }
32870
32871  protected void composeDataRequirementValueFilterComponentElements(DataRequirement.DataRequirementValueFilterComponent element) throws IOException {
32872    composeElementElements(element);
32873    if (element.hasPathElement()) {
32874      composeString("path", element.getPathElement());
32875    }
32876    if (element.hasSearchParamElement()) {
32877      composeString("searchParam", element.getSearchParamElement());
32878    }
32879    if (element.hasComparatorElement())
32880      composeEnumeration("comparator", element.getComparatorElement(), new DataRequirement.ValueFilterComparatorEnumFactory());
32881    if (element.hasValue()) {
32882      composeType("value", element.getValue());
32883    }  }
32884
32885  protected void composeDataRequirementSortComponent(String name, DataRequirement.DataRequirementSortComponent element) throws IOException {
32886    if (element != null) {
32887    composeElementAttributes(element);
32888      xml.enter(FHIR_NS, name);
32889      composeDataRequirementSortComponentElements(element);
32890      composeElementClose(element);
32891      xml.exit(FHIR_NS, name);
32892    }
32893  }
32894
32895  protected void composeDataRequirementSortComponentElements(DataRequirement.DataRequirementSortComponent element) throws IOException {
32896    composeElementElements(element);
32897    if (element.hasPathElement()) {
32898      composeString("path", element.getPathElement());
32899    }
32900    if (element.hasDirectionElement())
32901      composeEnumeration("direction", element.getDirectionElement(), new DataRequirement.SortDirectionEnumFactory());
32902  }
32903
32904  protected void composeDistance(String name, Distance element) throws IOException {
32905    if (element != null) {
32906    composeElementAttributes(element);
32907      xml.enter(FHIR_NS, name);
32908      composeDistanceElements(element);
32909      composeElementClose(element);
32910      xml.exit(FHIR_NS, name);
32911    }
32912  }
32913
32914  protected void composeDistanceElements(Distance element) throws IOException {
32915    composeQuantityElements(element);
32916  }
32917
32918  protected void composeDosage(String name, Dosage element) throws IOException {
32919    if (element != null) {
32920    composeElementAttributes(element);
32921      xml.enter(FHIR_NS, name);
32922      composeDosageElements(element);
32923      composeElementClose(element);
32924      xml.exit(FHIR_NS, name);
32925    }
32926  }
32927
32928  protected void composeDosageElements(Dosage element) throws IOException {
32929    composeBackboneTypeElements(element);
32930    if (element.hasSequenceElement()) {
32931      composeInteger("sequence", element.getSequenceElement());
32932    }
32933    if (element.hasTextElement()) {
32934      composeString("text", element.getTextElement());
32935    }
32936    if (element.hasAdditionalInstruction()) { 
32937      for (CodeableConcept e : element.getAdditionalInstruction()) 
32938          composeCodeableConcept("additionalInstruction", e);
32939    }
32940    if (element.hasPatientInstructionElement()) {
32941      composeString("patientInstruction", element.getPatientInstructionElement());
32942    }
32943    if (element.hasTiming()) {
32944      composeTiming("timing", element.getTiming());
32945    }
32946    if (element.hasAsNeededElement()) {
32947      composeBoolean("asNeeded", element.getAsNeededElement());
32948    }
32949    if (element.hasAsNeededFor()) { 
32950      for (CodeableConcept e : element.getAsNeededFor()) 
32951          composeCodeableConcept("asNeededFor", e);
32952    }
32953    if (element.hasSite()) {
32954      composeCodeableConcept("site", element.getSite());
32955    }
32956    if (element.hasRoute()) {
32957      composeCodeableConcept("route", element.getRoute());
32958    }
32959    if (element.hasMethod()) {
32960      composeCodeableConcept("method", element.getMethod());
32961    }
32962    if (element.hasDoseAndRate()) { 
32963      for (Dosage.DosageDoseAndRateComponent e : element.getDoseAndRate()) 
32964          composeDosageDoseAndRateComponent("doseAndRate", e);
32965    }
32966    if (element.hasMaxDosePerPeriod()) { 
32967      for (Ratio e : element.getMaxDosePerPeriod()) 
32968          composeRatio("maxDosePerPeriod", e);
32969    }
32970    if (element.hasMaxDosePerAdministration()) {
32971      composeQuantity("maxDosePerAdministration", element.getMaxDosePerAdministration());
32972    }
32973    if (element.hasMaxDosePerLifetime()) {
32974      composeQuantity("maxDosePerLifetime", element.getMaxDosePerLifetime());
32975    }
32976  }
32977
32978  protected void composeDosageDoseAndRateComponent(String name, Dosage.DosageDoseAndRateComponent element) throws IOException {
32979    if (element != null) {
32980    composeElementAttributes(element);
32981      xml.enter(FHIR_NS, name);
32982      composeDosageDoseAndRateComponentElements(element);
32983      composeElementClose(element);
32984      xml.exit(FHIR_NS, name);
32985    }
32986  }
32987
32988  protected void composeDosageDoseAndRateComponentElements(Dosage.DosageDoseAndRateComponent element) throws IOException {
32989    composeElementElements(element);
32990    if (element.hasType()) {
32991      composeCodeableConcept("type", element.getType());
32992    }
32993    if (element.hasDose()) {
32994      composeType("dose", element.getDose());
32995    }    if (element.hasRate()) {
32996      composeType("rate", element.getRate());
32997    }  }
32998
32999  protected void composeDuration(String name, Duration element) throws IOException {
33000    if (element != null) {
33001    composeElementAttributes(element);
33002      xml.enter(FHIR_NS, name);
33003      composeDurationElements(element);
33004      composeElementClose(element);
33005      xml.exit(FHIR_NS, name);
33006    }
33007  }
33008
33009  protected void composeDurationElements(Duration element) throws IOException {
33010    composeQuantityElements(element);
33011  }
33012
33013  protected void composeElementDefinition(String name, ElementDefinition element) throws IOException {
33014    if (element != null) {
33015    composeElementAttributes(element);
33016      xml.enter(FHIR_NS, name);
33017      composeElementDefinitionElements(element);
33018      composeElementClose(element);
33019      xml.exit(FHIR_NS, name);
33020    }
33021  }
33022
33023  protected void composeElementDefinitionElements(ElementDefinition element) throws IOException {
33024    composeBackboneTypeElements(element);
33025    if (element.hasPathElement()) {
33026      composeString("path", element.getPathElement());
33027    }
33028      if (element.hasRepresentation()) 
33029        for (Enumeration<ElementDefinition.PropertyRepresentation> e : element.getRepresentation()) 
33030          composeEnumeration("representation", e, new ElementDefinition.PropertyRepresentationEnumFactory());
33031    if (element.hasSliceNameElement()) {
33032      composeString("sliceName", element.getSliceNameElement());
33033    }
33034    if (element.hasSliceIsConstrainingElement()) {
33035      composeBoolean("sliceIsConstraining", element.getSliceIsConstrainingElement());
33036    }
33037    if (element.hasLabelElement()) {
33038      composeString("label", element.getLabelElement());
33039    }
33040    if (element.hasCode()) { 
33041      for (Coding e : element.getCode()) 
33042          composeCoding("code", e);
33043    }
33044    if (element.hasSlicing()) {
33045      composeElementDefinitionSlicingComponent("slicing", element.getSlicing());
33046    }
33047    if (element.hasShortElement()) {
33048      composeString("short", element.getShortElement());
33049    }
33050    if (element.hasDefinitionElement()) {
33051      composeMarkdown("definition", element.getDefinitionElement());
33052    }
33053    if (element.hasCommentElement()) {
33054      composeMarkdown("comment", element.getCommentElement());
33055    }
33056    if (element.hasRequirementsElement()) {
33057      composeMarkdown("requirements", element.getRequirementsElement());
33058    }
33059    if (element.hasAlias()) { 
33060      for (StringType e : element.getAlias()) 
33061          composeString("alias", e);
33062    }
33063    if (element.hasMinElement()) {
33064      composeUnsignedInt("min", element.getMinElement());
33065    }
33066    if (element.hasMaxElement()) {
33067      composeString("max", element.getMaxElement());
33068    }
33069    if (element.hasBase()) {
33070      composeElementDefinitionBaseComponent("base", element.getBase());
33071    }
33072    if (element.hasContentReferenceElement()) {
33073      composeUri("contentReference", element.getContentReferenceElement());
33074    }
33075    if (element.hasType()) { 
33076      for (ElementDefinition.TypeRefComponent e : element.getType()) 
33077          composeElementDefinitionTypeRefComponent("type", e);
33078    }
33079    if (element.hasDefaultValue()) {
33080      composeType("defaultValue", element.getDefaultValue());
33081    }    if (element.hasMeaningWhenMissingElement()) {
33082      composeMarkdown("meaningWhenMissing", element.getMeaningWhenMissingElement());
33083    }
33084    if (element.hasOrderMeaningElement()) {
33085      composeString("orderMeaning", element.getOrderMeaningElement());
33086    }
33087    if (element.hasFixed()) {
33088      composeType("fixed", element.getFixed());
33089    }    if (element.hasPattern()) {
33090      composeType("pattern", element.getPattern());
33091    }    if (element.hasExample()) { 
33092      for (ElementDefinition.ElementDefinitionExampleComponent e : element.getExample()) 
33093          composeElementDefinitionExampleComponent("example", e);
33094    }
33095    if (element.hasMinValue()) {
33096      composeType("minValue", element.getMinValue());
33097    }    if (element.hasMaxValue()) {
33098      composeType("maxValue", element.getMaxValue());
33099    }    if (element.hasMaxLengthElement()) {
33100      composeInteger("maxLength", element.getMaxLengthElement());
33101    }
33102    if (element.hasCondition()) { 
33103      for (IdType e : element.getCondition()) 
33104          composeId("condition", e);
33105    }
33106    if (element.hasConstraint()) { 
33107      for (ElementDefinition.ElementDefinitionConstraintComponent e : element.getConstraint()) 
33108          composeElementDefinitionConstraintComponent("constraint", e);
33109    }
33110    if (element.hasMustHaveValueElement()) {
33111      composeBoolean("mustHaveValue", element.getMustHaveValueElement());
33112    }
33113    if (element.hasValueAlternatives()) { 
33114      for (CanonicalType e : element.getValueAlternatives()) 
33115          composeCanonical("valueAlternatives", e);
33116    }
33117    if (element.hasMustSupportElement()) {
33118      composeBoolean("mustSupport", element.getMustSupportElement());
33119    }
33120    if (element.hasIsModifierElement()) {
33121      composeBoolean("isModifier", element.getIsModifierElement());
33122    }
33123    if (element.hasIsModifierReasonElement()) {
33124      composeString("isModifierReason", element.getIsModifierReasonElement());
33125    }
33126    if (element.hasIsSummaryElement()) {
33127      composeBoolean("isSummary", element.getIsSummaryElement());
33128    }
33129    if (element.hasBinding()) {
33130      composeElementDefinitionBindingComponent("binding", element.getBinding());
33131    }
33132    if (element.hasMapping()) { 
33133      for (ElementDefinition.ElementDefinitionMappingComponent e : element.getMapping()) 
33134          composeElementDefinitionMappingComponent("mapping", e);
33135    }
33136  }
33137
33138  protected void composeElementDefinitionSlicingComponent(String name, ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
33139    if (element != null) {
33140    composeElementAttributes(element);
33141      xml.enter(FHIR_NS, name);
33142      composeElementDefinitionSlicingComponentElements(element);
33143      composeElementClose(element);
33144      xml.exit(FHIR_NS, name);
33145    }
33146  }
33147
33148  protected void composeElementDefinitionSlicingComponentElements(ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
33149    composeElementElements(element);
33150    if (element.hasDiscriminator()) { 
33151      for (ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent e : element.getDiscriminator()) 
33152          composeElementDefinitionSlicingDiscriminatorComponent("discriminator", e);
33153    }
33154    if (element.hasDescriptionElement()) {
33155      composeString("description", element.getDescriptionElement());
33156    }
33157    if (element.hasOrderedElement()) {
33158      composeBoolean("ordered", element.getOrderedElement());
33159    }
33160    if (element.hasRulesElement())
33161      composeEnumeration("rules", element.getRulesElement(), new ElementDefinition.SlicingRulesEnumFactory());
33162  }
33163
33164  protected void composeElementDefinitionSlicingDiscriminatorComponent(String name, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
33165    if (element != null) {
33166    composeElementAttributes(element);
33167      xml.enter(FHIR_NS, name);
33168      composeElementDefinitionSlicingDiscriminatorComponentElements(element);
33169      composeElementClose(element);
33170      xml.exit(FHIR_NS, name);
33171    }
33172  }
33173
33174  protected void composeElementDefinitionSlicingDiscriminatorComponentElements(ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
33175    composeElementElements(element);
33176    if (element.hasTypeElement())
33177      composeEnumeration("type", element.getTypeElement(), new ElementDefinition.DiscriminatorTypeEnumFactory());
33178    if (element.hasPathElement()) {
33179      composeString("path", element.getPathElement());
33180    }
33181  }
33182
33183  protected void composeElementDefinitionBaseComponent(String name, ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
33184    if (element != null) {
33185    composeElementAttributes(element);
33186      xml.enter(FHIR_NS, name);
33187      composeElementDefinitionBaseComponentElements(element);
33188      composeElementClose(element);
33189      xml.exit(FHIR_NS, name);
33190    }
33191  }
33192
33193  protected void composeElementDefinitionBaseComponentElements(ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
33194    composeElementElements(element);
33195    if (element.hasPathElement()) {
33196      composeString("path", element.getPathElement());
33197    }
33198    if (element.hasMinElement()) {
33199      composeUnsignedInt("min", element.getMinElement());
33200    }
33201    if (element.hasMaxElement()) {
33202      composeString("max", element.getMaxElement());
33203    }
33204  }
33205
33206  protected void composeElementDefinitionTypeRefComponent(String name, ElementDefinition.TypeRefComponent element) throws IOException {
33207    if (element != null) {
33208    composeElementAttributes(element);
33209      xml.enter(FHIR_NS, name);
33210      composeElementDefinitionTypeRefComponentElements(element);
33211      composeElementClose(element);
33212      xml.exit(FHIR_NS, name);
33213    }
33214  }
33215
33216  protected void composeElementDefinitionTypeRefComponentElements(ElementDefinition.TypeRefComponent element) throws IOException {
33217    composeElementElements(element);
33218    if (element.hasCodeElement()) {
33219      composeUri("code", element.getCodeElement());
33220    }
33221    if (element.hasProfile()) { 
33222      for (CanonicalType e : element.getProfile()) 
33223          composeCanonical("profile", e);
33224    }
33225    if (element.hasTargetProfile()) { 
33226      for (CanonicalType e : element.getTargetProfile()) 
33227          composeCanonical("targetProfile", e);
33228    }
33229      if (element.hasAggregation()) 
33230        for (Enumeration<ElementDefinition.AggregationMode> e : element.getAggregation()) 
33231          composeEnumeration("aggregation", e, new ElementDefinition.AggregationModeEnumFactory());
33232    if (element.hasVersioningElement())
33233      composeEnumeration("versioning", element.getVersioningElement(), new ElementDefinition.ReferenceVersionRulesEnumFactory());
33234  }
33235
33236  protected void composeElementDefinitionExampleComponent(String name, ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
33237    if (element != null) {
33238    composeElementAttributes(element);
33239      xml.enter(FHIR_NS, name);
33240      composeElementDefinitionExampleComponentElements(element);
33241      composeElementClose(element);
33242      xml.exit(FHIR_NS, name);
33243    }
33244  }
33245
33246  protected void composeElementDefinitionExampleComponentElements(ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
33247    composeElementElements(element);
33248    if (element.hasLabelElement()) {
33249      composeString("label", element.getLabelElement());
33250    }
33251    if (element.hasValue()) {
33252      composeType("value", element.getValue());
33253    }  }
33254
33255  protected void composeElementDefinitionConstraintComponent(String name, ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
33256    if (element != null) {
33257    composeElementAttributes(element);
33258      xml.enter(FHIR_NS, name);
33259      composeElementDefinitionConstraintComponentElements(element);
33260      composeElementClose(element);
33261      xml.exit(FHIR_NS, name);
33262    }
33263  }
33264
33265  protected void composeElementDefinitionConstraintComponentElements(ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
33266    composeElementElements(element);
33267    if (element.hasKeyElement()) {
33268      composeId("key", element.getKeyElement());
33269    }
33270    if (element.hasRequirementsElement()) {
33271      composeMarkdown("requirements", element.getRequirementsElement());
33272    }
33273    if (element.hasSeverityElement())
33274      composeEnumeration("severity", element.getSeverityElement(), new ElementDefinition.ConstraintSeverityEnumFactory());
33275    if (element.hasSuppressElement()) {
33276      composeBoolean("suppress", element.getSuppressElement());
33277    }
33278    if (element.hasHumanElement()) {
33279      composeString("human", element.getHumanElement());
33280    }
33281    if (element.hasExpressionElement()) {
33282      composeString("expression", element.getExpressionElement());
33283    }
33284    if (element.hasSourceElement()) {
33285      composeCanonical("source", element.getSourceElement());
33286    }
33287  }
33288
33289  protected void composeElementDefinitionBindingComponent(String name, ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
33290    if (element != null) {
33291    composeElementAttributes(element);
33292      xml.enter(FHIR_NS, name);
33293      composeElementDefinitionBindingComponentElements(element);
33294      composeElementClose(element);
33295      xml.exit(FHIR_NS, name);
33296    }
33297  }
33298
33299  protected void composeElementDefinitionBindingComponentElements(ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
33300    composeElementElements(element);
33301    if (element.hasStrengthElement())
33302      composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
33303    if (element.hasDescriptionElement()) {
33304      composeMarkdown("description", element.getDescriptionElement());
33305    }
33306    if (element.hasValueSetElement()) {
33307      composeCanonical("valueSet", element.getValueSetElement());
33308    }
33309    if (element.hasAdditional()) { 
33310      for (ElementDefinition.ElementDefinitionBindingAdditionalComponent e : element.getAdditional()) 
33311          composeElementDefinitionBindingAdditionalComponent("additional", e);
33312    }
33313  }
33314
33315  protected void composeElementDefinitionBindingAdditionalComponent(String name, ElementDefinition.ElementDefinitionBindingAdditionalComponent element) throws IOException {
33316    if (element != null) {
33317    composeElementAttributes(element);
33318      xml.enter(FHIR_NS, name);
33319      composeElementDefinitionBindingAdditionalComponentElements(element);
33320      composeElementClose(element);
33321      xml.exit(FHIR_NS, name);
33322    }
33323  }
33324
33325  protected void composeElementDefinitionBindingAdditionalComponentElements(ElementDefinition.ElementDefinitionBindingAdditionalComponent element) throws IOException {
33326    composeElementElements(element);
33327    if (element.hasPurposeElement())
33328      composeEnumeration("purpose", element.getPurposeElement(), new ElementDefinition.AdditionalBindingPurposeVSEnumFactory());
33329    if (element.hasValueSetElement()) {
33330      composeCanonical("valueSet", element.getValueSetElement());
33331    }
33332    if (element.hasDocumentationElement()) {
33333      composeMarkdown("documentation", element.getDocumentationElement());
33334    }
33335    if (element.hasShortDocoElement()) {
33336      composeString("shortDoco", element.getShortDocoElement());
33337    }
33338    if (element.hasUsage()) { 
33339      for (UsageContext e : element.getUsage()) 
33340          composeUsageContext("usage", e);
33341    }
33342    if (element.hasAnyElement()) {
33343      composeBoolean("any", element.getAnyElement());
33344    }
33345  }
33346
33347  protected void composeElementDefinitionMappingComponent(String name, ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
33348    if (element != null) {
33349    composeElementAttributes(element);
33350      xml.enter(FHIR_NS, name);
33351      composeElementDefinitionMappingComponentElements(element);
33352      composeElementClose(element);
33353      xml.exit(FHIR_NS, name);
33354    }
33355  }
33356
33357  protected void composeElementDefinitionMappingComponentElements(ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
33358    composeElementElements(element);
33359    if (element.hasIdentityElement()) {
33360      composeId("identity", element.getIdentityElement());
33361    }
33362    if (element.hasLanguageElement()) {
33363      composeCode("language", element.getLanguageElement());
33364    }
33365    if (element.hasMapElement()) {
33366      composeString("map", element.getMapElement());
33367    }
33368    if (element.hasCommentElement()) {
33369      composeMarkdown("comment", element.getCommentElement());
33370    }
33371  }
33372
33373  protected void composeExpression(String name, Expression element) throws IOException {
33374    if (element != null) {
33375    composeElementAttributes(element);
33376      xml.enter(FHIR_NS, name);
33377      composeExpressionElements(element);
33378      composeElementClose(element);
33379      xml.exit(FHIR_NS, name);
33380    }
33381  }
33382
33383  protected void composeExpressionElements(Expression element) throws IOException {
33384    composeDataTypeElements(element);
33385    if (element.hasDescriptionElement()) {
33386      composeString("description", element.getDescriptionElement());
33387    }
33388    if (element.hasNameElement()) {
33389      composeCode("name", element.getNameElement());
33390    }
33391    if (element.hasLanguageElement()) {
33392      composeCode("language", element.getLanguageElement());
33393    }
33394    if (element.hasExpressionElement()) {
33395      composeString("expression", element.getExpressionElement());
33396    }
33397    if (element.hasReferenceElement()) {
33398      composeUri("reference", element.getReferenceElement());
33399    }
33400  }
33401
33402  protected void composeExtendedContactDetail(String name, ExtendedContactDetail element) throws IOException {
33403    if (element != null) {
33404    composeElementAttributes(element);
33405      xml.enter(FHIR_NS, name);
33406      composeExtendedContactDetailElements(element);
33407      composeElementClose(element);
33408      xml.exit(FHIR_NS, name);
33409    }
33410  }
33411
33412  protected void composeExtendedContactDetailElements(ExtendedContactDetail element) throws IOException {
33413    composeDataTypeElements(element);
33414    if (element.hasPurpose()) {
33415      composeCodeableConcept("purpose", element.getPurpose());
33416    }
33417    if (element.hasName()) { 
33418      for (HumanName e : element.getName()) 
33419          composeHumanName("name", e);
33420    }
33421    if (element.hasTelecom()) { 
33422      for (ContactPoint e : element.getTelecom()) 
33423          composeContactPoint("telecom", e);
33424    }
33425    if (element.hasAddress()) {
33426      composeAddress("address", element.getAddress());
33427    }
33428    if (element.hasOrganization()) {
33429      composeReference("organization", element.getOrganization());
33430    }
33431    if (element.hasPeriod()) {
33432      composePeriod("period", element.getPeriod());
33433    }
33434  }
33435
33436  protected void composeExtension(String name, Extension element) throws IOException {
33437    if (element != null) {
33438    composeElementAttributes(element);
33439      if (element.hasUrlElement())
33440        xml.attribute("url", element.getUrlElement().getValue());
33441      xml.enter(FHIR_NS, name);
33442      composeExtensionElements(element);
33443      composeElementClose(element);
33444      xml.exit(FHIR_NS, name);
33445    }
33446  }
33447
33448  protected void composeExtensionElements(Extension element) throws IOException {
33449    composeDataTypeElements(element);
33450    if (element.hasValue()) {
33451      composeType("value", element.getValue());
33452    }  }
33453
33454  protected void composeHumanName(String name, HumanName element) throws IOException {
33455    if (element != null) {
33456    composeElementAttributes(element);
33457      xml.enter(FHIR_NS, name);
33458      composeHumanNameElements(element);
33459      composeElementClose(element);
33460      xml.exit(FHIR_NS, name);
33461    }
33462  }
33463
33464  protected void composeHumanNameElements(HumanName element) throws IOException {
33465    composeDataTypeElements(element);
33466    if (element.hasUseElement())
33467      composeEnumeration("use", element.getUseElement(), new HumanName.NameUseEnumFactory());
33468    if (element.hasTextElement()) {
33469      composeString("text", element.getTextElement());
33470    }
33471    if (element.hasFamilyElement()) {
33472      composeString("family", element.getFamilyElement());
33473    }
33474    if (element.hasGiven()) { 
33475      for (StringType e : element.getGiven()) 
33476          composeString("given", e);
33477    }
33478    if (element.hasPrefix()) { 
33479      for (StringType e : element.getPrefix()) 
33480          composeString("prefix", e);
33481    }
33482    if (element.hasSuffix()) { 
33483      for (StringType e : element.getSuffix()) 
33484          composeString("suffix", e);
33485    }
33486    if (element.hasPeriod()) {
33487      composePeriod("period", element.getPeriod());
33488    }
33489  }
33490
33491  protected void composeIdentifier(String name, Identifier element) throws IOException {
33492    if (element != null) {
33493    composeElementAttributes(element);
33494      xml.enter(FHIR_NS, name);
33495      composeIdentifierElements(element);
33496      composeElementClose(element);
33497      xml.exit(FHIR_NS, name);
33498    }
33499  }
33500
33501  protected void composeIdentifierElements(Identifier element) throws IOException {
33502    composeDataTypeElements(element);
33503    if (element.hasUseElement())
33504      composeEnumeration("use", element.getUseElement(), new Identifier.IdentifierUseEnumFactory());
33505    if (element.hasType()) {
33506      composeCodeableConcept("type", element.getType());
33507    }
33508    if (element.hasSystemElement()) {
33509      composeUri("system", element.getSystemElement());
33510    }
33511    if (element.hasValueElement()) {
33512      composeString("value", element.getValueElement());
33513    }
33514    if (element.hasPeriod()) {
33515      composePeriod("period", element.getPeriod());
33516    }
33517    if (element.hasAssigner()) {
33518      composeReference("assigner", element.getAssigner());
33519    }
33520  }
33521
33522  protected void composeMarketingStatus(String name, MarketingStatus element) throws IOException {
33523    if (element != null) {
33524    composeElementAttributes(element);
33525      xml.enter(FHIR_NS, name);
33526      composeMarketingStatusElements(element);
33527      composeElementClose(element);
33528      xml.exit(FHIR_NS, name);
33529    }
33530  }
33531
33532  protected void composeMarketingStatusElements(MarketingStatus element) throws IOException {
33533    composeBackboneTypeElements(element);
33534    if (element.hasCountry()) {
33535      composeCodeableConcept("country", element.getCountry());
33536    }
33537    if (element.hasJurisdiction()) {
33538      composeCodeableConcept("jurisdiction", element.getJurisdiction());
33539    }
33540    if (element.hasStatus()) {
33541      composeCodeableConcept("status", element.getStatus());
33542    }
33543    if (element.hasDateRange()) {
33544      composePeriod("dateRange", element.getDateRange());
33545    }
33546    if (element.hasRestoreDateElement()) {
33547      composeDateTime("restoreDate", element.getRestoreDateElement());
33548    }
33549  }
33550
33551  protected void composeMeta(String name, Meta element) throws IOException {
33552    if (element != null) {
33553    composeElementAttributes(element);
33554      xml.enter(FHIR_NS, name);
33555      composeMetaElements(element);
33556      composeElementClose(element);
33557      xml.exit(FHIR_NS, name);
33558    }
33559  }
33560
33561  protected void composeMetaElements(Meta element) throws IOException {
33562    composeDataTypeElements(element);
33563    if (element.hasVersionIdElement()) {
33564      composeId("versionId", element.getVersionIdElement());
33565    }
33566    if (element.hasLastUpdatedElement()) {
33567      composeInstant("lastUpdated", element.getLastUpdatedElement());
33568    }
33569    if (element.hasSourceElement()) {
33570      composeUri("source", element.getSourceElement());
33571    }
33572    if (element.hasProfile()) { 
33573      for (CanonicalType e : element.getProfile()) 
33574          composeCanonical("profile", e);
33575    }
33576    if (element.hasSecurity()) { 
33577      for (Coding e : element.getSecurity()) 
33578          composeCoding("security", e);
33579    }
33580    if (element.hasTag()) { 
33581      for (Coding e : element.getTag()) 
33582          composeCoding("tag", e);
33583    }
33584  }
33585
33586  protected void composeMonetaryComponent(String name, MonetaryComponent element) throws IOException {
33587    if (element != null) {
33588    composeElementAttributes(element);
33589      xml.enter(FHIR_NS, name);
33590      composeMonetaryComponentElements(element);
33591      composeElementClose(element);
33592      xml.exit(FHIR_NS, name);
33593    }
33594  }
33595
33596  protected void composeMonetaryComponentElements(MonetaryComponent element) throws IOException {
33597    composeDataTypeElements(element);
33598    if (element.hasTypeElement())
33599      composeEnumeration("type", element.getTypeElement(), new MonetaryComponent.PriceComponentTypeEnumFactory());
33600    if (element.hasCode()) {
33601      composeCodeableConcept("code", element.getCode());
33602    }
33603    if (element.hasFactorElement()) {
33604      composeDecimal("factor", element.getFactorElement());
33605    }
33606    if (element.hasAmount()) {
33607      composeMoney("amount", element.getAmount());
33608    }
33609  }
33610
33611  protected void composeMoney(String name, Money element) throws IOException {
33612    if (element != null) {
33613    composeElementAttributes(element);
33614      xml.enter(FHIR_NS, name);
33615      composeMoneyElements(element);
33616      composeElementClose(element);
33617      xml.exit(FHIR_NS, name);
33618    }
33619  }
33620
33621  protected void composeMoneyElements(Money element) throws IOException {
33622    composeDataTypeElements(element);
33623    if (element.hasValueElement()) {
33624      composeDecimal("value", element.getValueElement());
33625    }
33626    if (element.hasCurrencyElement()) {
33627      composeCode("currency", element.getCurrencyElement());
33628    }
33629  }
33630
33631  protected void composeNarrative(String name, Narrative element) throws IOException {
33632    if (element != null) {
33633    composeElementAttributes(element);
33634      xml.enter(FHIR_NS, name);
33635      composeNarrativeElements(element);
33636      composeElementClose(element);
33637      xml.exit(FHIR_NS, name);
33638    }
33639  }
33640
33641  protected void composeNarrativeElements(Narrative element) throws IOException {
33642    composeDataTypeElements(element);
33643    if (element.hasStatusElement())
33644      composeEnumeration("status", element.getStatusElement(), new Narrative.NarrativeStatusEnumFactory());
33645    if (element.hasDiv()) {
33646      composeXhtml("div", element.getDiv());
33647    }
33648  }
33649
33650  protected void composeParameterDefinition(String name, ParameterDefinition element) throws IOException {
33651    if (element != null) {
33652    composeElementAttributes(element);
33653      xml.enter(FHIR_NS, name);
33654      composeParameterDefinitionElements(element);
33655      composeElementClose(element);
33656      xml.exit(FHIR_NS, name);
33657    }
33658  }
33659
33660  protected void composeParameterDefinitionElements(ParameterDefinition element) throws IOException {
33661    composeDataTypeElements(element);
33662    if (element.hasNameElement()) {
33663      composeCode("name", element.getNameElement());
33664    }
33665    if (element.hasUseElement())
33666      composeEnumeration("use", element.getUseElement(), new Enumerations.OperationParameterUseEnumFactory());
33667    if (element.hasMinElement()) {
33668      composeInteger("min", element.getMinElement());
33669    }
33670    if (element.hasMaxElement()) {
33671      composeString("max", element.getMaxElement());
33672    }
33673    if (element.hasDocumentationElement()) {
33674      composeString("documentation", element.getDocumentationElement());
33675    }
33676    if (element.hasTypeElement())
33677      composeEnumeration("type", element.getTypeElement(), new Enumerations.FHIRTypesEnumFactory());
33678    if (element.hasProfileElement()) {
33679      composeCanonical("profile", element.getProfileElement());
33680    }
33681  }
33682
33683  protected void composePeriod(String name, Period element) throws IOException {
33684    if (element != null) {
33685    composeElementAttributes(element);
33686      xml.enter(FHIR_NS, name);
33687      composePeriodElements(element);
33688      composeElementClose(element);
33689      xml.exit(FHIR_NS, name);
33690    }
33691  }
33692
33693  protected void composePeriodElements(Period element) throws IOException {
33694    composeDataTypeElements(element);
33695    if (element.hasStartElement()) {
33696      composeDateTime("start", element.getStartElement());
33697    }
33698    if (element.hasEndElement()) {
33699      composeDateTime("end", element.getEndElement());
33700    }
33701  }
33702
33703  protected void composeProductShelfLife(String name, ProductShelfLife element) throws IOException {
33704    if (element != null) {
33705    composeElementAttributes(element);
33706      xml.enter(FHIR_NS, name);
33707      composeProductShelfLifeElements(element);
33708      composeElementClose(element);
33709      xml.exit(FHIR_NS, name);
33710    }
33711  }
33712
33713  protected void composeProductShelfLifeElements(ProductShelfLife element) throws IOException {
33714    composeBackboneTypeElements(element);
33715    if (element.hasType()) {
33716      composeCodeableConcept("type", element.getType());
33717    }
33718    if (element.hasPeriod()) {
33719      composeType("period", element.getPeriod());
33720    }    if (element.hasSpecialPrecautionsForStorage()) { 
33721      for (CodeableConcept e : element.getSpecialPrecautionsForStorage()) 
33722          composeCodeableConcept("specialPrecautionsForStorage", e);
33723    }
33724  }
33725
33726  protected void composeQuantity(String name, Quantity element) throws IOException {
33727    if (element != null) {
33728    composeElementAttributes(element);
33729      xml.enter(FHIR_NS, name);
33730      composeQuantityElements(element);
33731      composeElementClose(element);
33732      xml.exit(FHIR_NS, name);
33733    }
33734  }
33735
33736  protected void composeQuantityElements(Quantity element) throws IOException {
33737    composeDataTypeElements(element);
33738    if (element.hasValueElement()) {
33739      composeDecimal("value", element.getValueElement());
33740    }
33741    if (element.hasComparatorElement())
33742      composeEnumeration("comparator", element.getComparatorElement(), new Enumerations.QuantityComparatorEnumFactory());
33743    if (element.hasUnitElement()) {
33744      composeString("unit", element.getUnitElement());
33745    }
33746    if (element.hasSystemElement()) {
33747      composeUri("system", element.getSystemElement());
33748    }
33749    if (element.hasCodeElement()) {
33750      composeCode("code", element.getCodeElement());
33751    }
33752  }
33753
33754  protected void composeRange(String name, Range element) throws IOException {
33755    if (element != null) {
33756    composeElementAttributes(element);
33757      xml.enter(FHIR_NS, name);
33758      composeRangeElements(element);
33759      composeElementClose(element);
33760      xml.exit(FHIR_NS, name);
33761    }
33762  }
33763
33764  protected void composeRangeElements(Range element) throws IOException {
33765    composeDataTypeElements(element);
33766    if (element.hasLow()) {
33767      composeQuantity("low", element.getLow());
33768    }
33769    if (element.hasHigh()) {
33770      composeQuantity("high", element.getHigh());
33771    }
33772  }
33773
33774  protected void composeRatio(String name, Ratio element) throws IOException {
33775    if (element != null) {
33776    composeElementAttributes(element);
33777      xml.enter(FHIR_NS, name);
33778      composeRatioElements(element);
33779      composeElementClose(element);
33780      xml.exit(FHIR_NS, name);
33781    }
33782  }
33783
33784  protected void composeRatioElements(Ratio element) throws IOException {
33785    composeDataTypeElements(element);
33786    if (element.hasNumerator()) {
33787      composeQuantity("numerator", element.getNumerator());
33788    }
33789    if (element.hasDenominator()) {
33790      composeQuantity("denominator", element.getDenominator());
33791    }
33792  }
33793
33794  protected void composeRatioRange(String name, RatioRange element) throws IOException {
33795    if (element != null) {
33796    composeElementAttributes(element);
33797      xml.enter(FHIR_NS, name);
33798      composeRatioRangeElements(element);
33799      composeElementClose(element);
33800      xml.exit(FHIR_NS, name);
33801    }
33802  }
33803
33804  protected void composeRatioRangeElements(RatioRange element) throws IOException {
33805    composeDataTypeElements(element);
33806    if (element.hasLowNumerator()) {
33807      composeQuantity("lowNumerator", element.getLowNumerator());
33808    }
33809    if (element.hasHighNumerator()) {
33810      composeQuantity("highNumerator", element.getHighNumerator());
33811    }
33812    if (element.hasDenominator()) {
33813      composeQuantity("denominator", element.getDenominator());
33814    }
33815  }
33816
33817  protected void composeReference(String name, Reference element) throws IOException {
33818    if (element != null) {
33819    composeElementAttributes(element);
33820      xml.enter(FHIR_NS, name);
33821      composeReferenceElements(element);
33822      composeElementClose(element);
33823      xml.exit(FHIR_NS, name);
33824    }
33825  }
33826
33827  protected void composeReferenceElements(Reference element) throws IOException {
33828    composeDataTypeElements(element);
33829    if (element.hasReferenceElement()) {
33830      composeString("reference", element.getReferenceElement());
33831    }
33832    if (element.hasTypeElement()) {
33833      composeUri("type", element.getTypeElement());
33834    }
33835    if (element.hasIdentifier()) {
33836      composeIdentifier("identifier", element.getIdentifier());
33837    }
33838    if (element.hasDisplayElement()) {
33839      composeString("display", element.getDisplayElement());
33840    }
33841  }
33842
33843  protected void composeRelatedArtifact(String name, RelatedArtifact element) throws IOException {
33844    if (element != null) {
33845    composeElementAttributes(element);
33846      xml.enter(FHIR_NS, name);
33847      composeRelatedArtifactElements(element);
33848      composeElementClose(element);
33849      xml.exit(FHIR_NS, name);
33850    }
33851  }
33852
33853  protected void composeRelatedArtifactElements(RelatedArtifact element) throws IOException {
33854    composeDataTypeElements(element);
33855    if (element.hasTypeElement())
33856      composeEnumeration("type", element.getTypeElement(), new RelatedArtifact.RelatedArtifactTypeEnumFactory());
33857    if (element.hasClassifier()) { 
33858      for (CodeableConcept e : element.getClassifier()) 
33859          composeCodeableConcept("classifier", e);
33860    }
33861    if (element.hasLabelElement()) {
33862      composeString("label", element.getLabelElement());
33863    }
33864    if (element.hasDisplayElement()) {
33865      composeString("display", element.getDisplayElement());
33866    }
33867    if (element.hasCitationElement()) {
33868      composeMarkdown("citation", element.getCitationElement());
33869    }
33870    if (element.hasDocument()) {
33871      composeAttachment("document", element.getDocument());
33872    }
33873    if (element.hasResourceElement()) {
33874      composeCanonical("resource", element.getResourceElement());
33875    }
33876    if (element.hasResourceReference()) {
33877      composeReference("resourceReference", element.getResourceReference());
33878    }
33879    if (element.hasPublicationStatusElement())
33880      composeEnumeration("publicationStatus", element.getPublicationStatusElement(), new Enumerations.PublicationStatusEnumFactory());
33881    if (element.hasPublicationDateElement()) {
33882      composeDate("publicationDate", element.getPublicationDateElement());
33883    }
33884  }
33885
33886  protected void composeSampledData(String name, SampledData element) throws IOException {
33887    if (element != null) {
33888    composeElementAttributes(element);
33889      xml.enter(FHIR_NS, name);
33890      composeSampledDataElements(element);
33891      composeElementClose(element);
33892      xml.exit(FHIR_NS, name);
33893    }
33894  }
33895
33896  protected void composeSampledDataElements(SampledData element) throws IOException {
33897    composeDataTypeElements(element);
33898    if (element.hasOrigin()) {
33899      composeQuantity("origin", element.getOrigin());
33900    }
33901    if (element.hasIntervalElement()) {
33902      composeDecimal("interval", element.getIntervalElement());
33903    }
33904    if (element.hasIntervalUnitElement()) {
33905      composeCode("intervalUnit", element.getIntervalUnitElement());
33906    }
33907    if (element.hasFactorElement()) {
33908      composeDecimal("factor", element.getFactorElement());
33909    }
33910    if (element.hasLowerLimitElement()) {
33911      composeDecimal("lowerLimit", element.getLowerLimitElement());
33912    }
33913    if (element.hasUpperLimitElement()) {
33914      composeDecimal("upperLimit", element.getUpperLimitElement());
33915    }
33916    if (element.hasDimensionsElement()) {
33917      composePositiveInt("dimensions", element.getDimensionsElement());
33918    }
33919    if (element.hasCodeMapElement()) {
33920      composeCanonical("codeMap", element.getCodeMapElement());
33921    }
33922    if (element.hasOffsetsElement()) {
33923      composeString("offsets", element.getOffsetsElement());
33924    }
33925    if (element.hasDataElement()) {
33926      composeString("data", element.getDataElement());
33927    }
33928  }
33929
33930  protected void composeSignature(String name, Signature element) throws IOException {
33931    if (element != null) {
33932    composeElementAttributes(element);
33933      xml.enter(FHIR_NS, name);
33934      composeSignatureElements(element);
33935      composeElementClose(element);
33936      xml.exit(FHIR_NS, name);
33937    }
33938  }
33939
33940  protected void composeSignatureElements(Signature element) throws IOException {
33941    composeDataTypeElements(element);
33942    if (element.hasType()) { 
33943      for (Coding e : element.getType()) 
33944          composeCoding("type", e);
33945    }
33946    if (element.hasWhenElement()) {
33947      composeInstant("when", element.getWhenElement());
33948    }
33949    if (element.hasWho()) {
33950      composeReference("who", element.getWho());
33951    }
33952    if (element.hasOnBehalfOf()) {
33953      composeReference("onBehalfOf", element.getOnBehalfOf());
33954    }
33955    if (element.hasTargetFormatElement()) {
33956      composeCode("targetFormat", element.getTargetFormatElement());
33957    }
33958    if (element.hasSigFormatElement()) {
33959      composeCode("sigFormat", element.getSigFormatElement());
33960    }
33961    if (element.hasDataElement()) {
33962      composeBase64Binary("data", element.getDataElement());
33963    }
33964  }
33965
33966  protected void composeTiming(String name, Timing element) throws IOException {
33967    if (element != null) {
33968    composeElementAttributes(element);
33969      xml.enter(FHIR_NS, name);
33970      composeTimingElements(element);
33971      composeElementClose(element);
33972      xml.exit(FHIR_NS, name);
33973    }
33974  }
33975
33976  protected void composeTimingElements(Timing element) throws IOException {
33977    composeBackboneTypeElements(element);
33978    if (element.hasEvent()) { 
33979      for (DateTimeType e : element.getEvent()) 
33980          composeDateTime("event", e);
33981    }
33982    if (element.hasRepeat()) {
33983      composeTimingRepeatComponent("repeat", element.getRepeat());
33984    }
33985    if (element.hasCode()) {
33986      composeCodeableConcept("code", element.getCode());
33987    }
33988  }
33989
33990  protected void composeTimingRepeatComponent(String name, Timing.TimingRepeatComponent element) throws IOException {
33991    if (element != null) {
33992    composeElementAttributes(element);
33993      xml.enter(FHIR_NS, name);
33994      composeTimingRepeatComponentElements(element);
33995      composeElementClose(element);
33996      xml.exit(FHIR_NS, name);
33997    }
33998  }
33999
34000  protected void composeTimingRepeatComponentElements(Timing.TimingRepeatComponent element) throws IOException {
34001    composeElementElements(element);
34002    if (element.hasBounds()) {
34003      composeType("bounds", element.getBounds());
34004    }    if (element.hasCountElement()) {
34005      composePositiveInt("count", element.getCountElement());
34006    }
34007    if (element.hasCountMaxElement()) {
34008      composePositiveInt("countMax", element.getCountMaxElement());
34009    }
34010    if (element.hasDurationElement()) {
34011      composeDecimal("duration", element.getDurationElement());
34012    }
34013    if (element.hasDurationMaxElement()) {
34014      composeDecimal("durationMax", element.getDurationMaxElement());
34015    }
34016    if (element.hasDurationUnitElement())
34017      composeEnumeration("durationUnit", element.getDurationUnitElement(), new Timing.UnitsOfTimeEnumFactory());
34018    if (element.hasFrequencyElement()) {
34019      composePositiveInt("frequency", element.getFrequencyElement());
34020    }
34021    if (element.hasFrequencyMaxElement()) {
34022      composePositiveInt("frequencyMax", element.getFrequencyMaxElement());
34023    }
34024    if (element.hasPeriodElement()) {
34025      composeDecimal("period", element.getPeriodElement());
34026    }
34027    if (element.hasPeriodMaxElement()) {
34028      composeDecimal("periodMax", element.getPeriodMaxElement());
34029    }
34030    if (element.hasPeriodUnitElement())
34031      composeEnumeration("periodUnit", element.getPeriodUnitElement(), new Timing.UnitsOfTimeEnumFactory());
34032      if (element.hasDayOfWeek()) 
34033        for (Enumeration<Enumerations.DaysOfWeek> e : element.getDayOfWeek()) 
34034          composeEnumeration("dayOfWeek", e, new Enumerations.DaysOfWeekEnumFactory());
34035    if (element.hasTimeOfDay()) { 
34036      for (TimeType e : element.getTimeOfDay()) 
34037          composeTime("timeOfDay", e);
34038    }
34039      if (element.hasWhen()) 
34040        for (Enumeration<Timing.EventTiming> e : element.getWhen()) 
34041          composeEnumeration("when", e, new Timing.EventTimingEnumFactory());
34042    if (element.hasOffsetElement()) {
34043      composeUnsignedInt("offset", element.getOffsetElement());
34044    }
34045  }
34046
34047  protected void composeTriggerDefinition(String name, TriggerDefinition element) throws IOException {
34048    if (element != null) {
34049    composeElementAttributes(element);
34050      xml.enter(FHIR_NS, name);
34051      composeTriggerDefinitionElements(element);
34052      composeElementClose(element);
34053      xml.exit(FHIR_NS, name);
34054    }
34055  }
34056
34057  protected void composeTriggerDefinitionElements(TriggerDefinition element) throws IOException {
34058    composeDataTypeElements(element);
34059    if (element.hasTypeElement())
34060      composeEnumeration("type", element.getTypeElement(), new TriggerDefinition.TriggerTypeEnumFactory());
34061    if (element.hasNameElement()) {
34062      composeString("name", element.getNameElement());
34063    }
34064    if (element.hasCode()) {
34065      composeCodeableConcept("code", element.getCode());
34066    }
34067    if (element.hasSubscriptionTopicElement()) {
34068      composeCanonical("subscriptionTopic", element.getSubscriptionTopicElement());
34069    }
34070    if (element.hasTiming()) {
34071      composeType("timing", element.getTiming());
34072    }    if (element.hasData()) { 
34073      for (DataRequirement e : element.getData()) 
34074          composeDataRequirement("data", e);
34075    }
34076    if (element.hasCondition()) {
34077      composeExpression("condition", element.getCondition());
34078    }
34079  }
34080
34081  protected void composeUsageContext(String name, UsageContext element) throws IOException {
34082    if (element != null) {
34083    composeElementAttributes(element);
34084      xml.enter(FHIR_NS, name);
34085      composeUsageContextElements(element);
34086      composeElementClose(element);
34087      xml.exit(FHIR_NS, name);
34088    }
34089  }
34090
34091  protected void composeUsageContextElements(UsageContext element) throws IOException {
34092    composeDataTypeElements(element);
34093    if (element.hasCode()) {
34094      composeCoding("code", element.getCode());
34095    }
34096    if (element.hasValue()) {
34097      composeType("value", element.getValue());
34098    }  }
34099
34100  protected void composeVirtualServiceDetail(String name, VirtualServiceDetail element) throws IOException {
34101    if (element != null) {
34102    composeElementAttributes(element);
34103      xml.enter(FHIR_NS, name);
34104      composeVirtualServiceDetailElements(element);
34105      composeElementClose(element);
34106      xml.exit(FHIR_NS, name);
34107    }
34108  }
34109
34110  protected void composeVirtualServiceDetailElements(VirtualServiceDetail element) throws IOException {
34111    composeDataTypeElements(element);
34112    if (element.hasChannelType()) {
34113      composeCoding("channelType", element.getChannelType());
34114    }
34115    if (element.hasAddress()) {
34116      composeType("address", element.getAddress());
34117    }    if (element.hasAdditionalInfo()) { 
34118      for (UrlType e : element.getAdditionalInfo()) 
34119          composeUrl("additionalInfo", e);
34120    }
34121    if (element.hasMaxParticipantsElement()) {
34122      composePositiveInt("maxParticipants", element.getMaxParticipantsElement());
34123    }
34124    if (element.hasSessionKeyElement()) {
34125      composeString("sessionKey", element.getSessionKeyElement());
34126    }
34127  }
34128
34129  protected void composeCanonicalResourceElements(CanonicalResource element) throws IOException {
34130    composeDomainResourceElements(element);
34131  }
34132
34133  protected void composeDomainResourceElements(DomainResource element) throws IOException {
34134    composeResourceElements(element);
34135    if (element.hasText()) {
34136      composeNarrative("text", element.getText());
34137    }
34138    if (element.hasContained()) { 
34139      for (Resource e : element.getContained()) 
34140        {
34141          xml.enter(FHIR_NS, "contained");
34142          composeResource(e);
34143          xml.exit(FHIR_NS, "contained");
34144        }
34145    }
34146    if (element.hasExtension()) { 
34147      for (Extension e : element.getExtension()) 
34148          composeExtension("extension", e);
34149    }
34150    if (element.hasModifierExtension()) { 
34151      for (Extension e : element.getModifierExtension()) 
34152          composeExtension("modifierExtension", e);
34153    }
34154  }
34155
34156  protected void composeMetadataResourceElements(MetadataResource element) throws IOException {
34157    composeCanonicalResourceElements(element);
34158  }
34159
34160  protected void composeResourceElements(Resource element) throws IOException {
34161    composeBaseElements(element);
34162    if (element.hasIdElement()) {
34163      composeId("id", element.getIdElement());
34164    }
34165    if (element.hasMeta()) {
34166      composeMeta("meta", element.getMeta());
34167    }
34168    if (element.hasImplicitRulesElement()) {
34169      composeUri("implicitRules", element.getImplicitRulesElement());
34170    }
34171    if (element.hasLanguageElement()) {
34172      composeCode("language", element.getLanguageElement());
34173    }
34174  }
34175
34176  protected void composeAccount(String name, Account element) throws IOException {
34177    if (element != null) {
34178    composeResourceAttributes(element);
34179      xml.enter(FHIR_NS, name);
34180      composeAccountElements(element);
34181      composeElementClose(element);
34182      xml.exit(FHIR_NS, name);
34183    }
34184  }
34185
34186  protected void composeAccountElements(Account element) throws IOException {
34187    composeDomainResourceElements(element);
34188    if (element.hasIdentifier()) { 
34189      for (Identifier e : element.getIdentifier()) 
34190          composeIdentifier("identifier", e);
34191    }
34192    if (element.hasStatusElement())
34193      composeEnumeration("status", element.getStatusElement(), new Account.AccountStatusEnumFactory());
34194    if (element.hasBillingStatus()) {
34195      composeCodeableConcept("billingStatus", element.getBillingStatus());
34196    }
34197    if (element.hasType()) {
34198      composeCodeableConcept("type", element.getType());
34199    }
34200    if (element.hasNameElement()) {
34201      composeString("name", element.getNameElement());
34202    }
34203    if (element.hasSubject()) { 
34204      for (Reference e : element.getSubject()) 
34205          composeReference("subject", e);
34206    }
34207    if (element.hasServicePeriod()) {
34208      composePeriod("servicePeriod", element.getServicePeriod());
34209    }
34210    if (element.hasCoverage()) { 
34211      for (Account.CoverageComponent e : element.getCoverage()) 
34212          composeAccountCoverageComponent("coverage", e);
34213    }
34214    if (element.hasOwner()) {
34215      composeReference("owner", element.getOwner());
34216    }
34217    if (element.hasDescriptionElement()) {
34218      composeMarkdown("description", element.getDescriptionElement());
34219    }
34220    if (element.hasGuarantor()) { 
34221      for (Account.GuarantorComponent e : element.getGuarantor()) 
34222          composeAccountGuarantorComponent("guarantor", e);
34223    }
34224    if (element.hasDiagnosis()) { 
34225      for (Account.AccountDiagnosisComponent e : element.getDiagnosis()) 
34226          composeAccountDiagnosisComponent("diagnosis", e);
34227    }
34228    if (element.hasProcedure()) { 
34229      for (Account.AccountProcedureComponent e : element.getProcedure()) 
34230          composeAccountProcedureComponent("procedure", e);
34231    }
34232    if (element.hasRelatedAccount()) { 
34233      for (Account.AccountRelatedAccountComponent e : element.getRelatedAccount()) 
34234          composeAccountRelatedAccountComponent("relatedAccount", e);
34235    }
34236    if (element.hasCurrency()) {
34237      composeCodeableConcept("currency", element.getCurrency());
34238    }
34239    if (element.hasBalance()) { 
34240      for (Account.AccountBalanceComponent e : element.getBalance()) 
34241          composeAccountBalanceComponent("balance", e);
34242    }
34243    if (element.hasCalculatedAtElement()) {
34244      composeInstant("calculatedAt", element.getCalculatedAtElement());
34245    }
34246  }
34247
34248  protected void composeAccountCoverageComponent(String name, Account.CoverageComponent element) throws IOException {
34249    if (element != null) {
34250    composeElementAttributes(element);
34251      xml.enter(FHIR_NS, name);
34252      composeAccountCoverageComponentElements(element);
34253      composeElementClose(element);
34254      xml.exit(FHIR_NS, name);
34255    }
34256  }
34257
34258  protected void composeAccountCoverageComponentElements(Account.CoverageComponent element) throws IOException {
34259    composeBackboneElementElements(element);
34260    if (element.hasCoverage()) {
34261      composeReference("coverage", element.getCoverage());
34262    }
34263    if (element.hasPriorityElement()) {
34264      composePositiveInt("priority", element.getPriorityElement());
34265    }
34266  }
34267
34268  protected void composeAccountGuarantorComponent(String name, Account.GuarantorComponent element) throws IOException {
34269    if (element != null) {
34270    composeElementAttributes(element);
34271      xml.enter(FHIR_NS, name);
34272      composeAccountGuarantorComponentElements(element);
34273      composeElementClose(element);
34274      xml.exit(FHIR_NS, name);
34275    }
34276  }
34277
34278  protected void composeAccountGuarantorComponentElements(Account.GuarantorComponent element) throws IOException {
34279    composeBackboneElementElements(element);
34280    if (element.hasParty()) {
34281      composeReference("party", element.getParty());
34282    }
34283    if (element.hasOnHoldElement()) {
34284      composeBoolean("onHold", element.getOnHoldElement());
34285    }
34286    if (element.hasPeriod()) {
34287      composePeriod("period", element.getPeriod());
34288    }
34289  }
34290
34291  protected void composeAccountDiagnosisComponent(String name, Account.AccountDiagnosisComponent element) throws IOException {
34292    if (element != null) {
34293    composeElementAttributes(element);
34294      xml.enter(FHIR_NS, name);
34295      composeAccountDiagnosisComponentElements(element);
34296      composeElementClose(element);
34297      xml.exit(FHIR_NS, name);
34298    }
34299  }
34300
34301  protected void composeAccountDiagnosisComponentElements(Account.AccountDiagnosisComponent element) throws IOException {
34302    composeBackboneElementElements(element);
34303    if (element.hasSequenceElement()) {
34304      composePositiveInt("sequence", element.getSequenceElement());
34305    }
34306    if (element.hasCondition()) {
34307      composeCodeableReference("condition", element.getCondition());
34308    }
34309    if (element.hasDateOfDiagnosisElement()) {
34310      composeDateTime("dateOfDiagnosis", element.getDateOfDiagnosisElement());
34311    }
34312    if (element.hasType()) { 
34313      for (CodeableConcept e : element.getType()) 
34314          composeCodeableConcept("type", e);
34315    }
34316    if (element.hasOnAdmissionElement()) {
34317      composeBoolean("onAdmission", element.getOnAdmissionElement());
34318    }
34319    if (element.hasPackageCode()) { 
34320      for (CodeableConcept e : element.getPackageCode()) 
34321          composeCodeableConcept("packageCode", e);
34322    }
34323  }
34324
34325  protected void composeAccountProcedureComponent(String name, Account.AccountProcedureComponent element) throws IOException {
34326    if (element != null) {
34327    composeElementAttributes(element);
34328      xml.enter(FHIR_NS, name);
34329      composeAccountProcedureComponentElements(element);
34330      composeElementClose(element);
34331      xml.exit(FHIR_NS, name);
34332    }
34333  }
34334
34335  protected void composeAccountProcedureComponentElements(Account.AccountProcedureComponent element) throws IOException {
34336    composeBackboneElementElements(element);
34337    if (element.hasSequenceElement()) {
34338      composePositiveInt("sequence", element.getSequenceElement());
34339    }
34340    if (element.hasCode()) {
34341      composeCodeableReference("code", element.getCode());
34342    }
34343    if (element.hasDateOfServiceElement()) {
34344      composeDateTime("dateOfService", element.getDateOfServiceElement());
34345    }
34346    if (element.hasType()) { 
34347      for (CodeableConcept e : element.getType()) 
34348          composeCodeableConcept("type", e);
34349    }
34350    if (element.hasPackageCode()) { 
34351      for (CodeableConcept e : element.getPackageCode()) 
34352          composeCodeableConcept("packageCode", e);
34353    }
34354    if (element.hasDevice()) { 
34355      for (Reference e : element.getDevice()) 
34356          composeReference("device", e);
34357    }
34358  }
34359
34360  protected void composeAccountRelatedAccountComponent(String name, Account.AccountRelatedAccountComponent element) throws IOException {
34361    if (element != null) {
34362    composeElementAttributes(element);
34363      xml.enter(FHIR_NS, name);
34364      composeAccountRelatedAccountComponentElements(element);
34365      composeElementClose(element);
34366      xml.exit(FHIR_NS, name);
34367    }
34368  }
34369
34370  protected void composeAccountRelatedAccountComponentElements(Account.AccountRelatedAccountComponent element) throws IOException {
34371    composeBackboneElementElements(element);
34372    if (element.hasRelationship()) {
34373      composeCodeableConcept("relationship", element.getRelationship());
34374    }
34375    if (element.hasAccount()) {
34376      composeReference("account", element.getAccount());
34377    }
34378  }
34379
34380  protected void composeAccountBalanceComponent(String name, Account.AccountBalanceComponent element) throws IOException {
34381    if (element != null) {
34382    composeElementAttributes(element);
34383      xml.enter(FHIR_NS, name);
34384      composeAccountBalanceComponentElements(element);
34385      composeElementClose(element);
34386      xml.exit(FHIR_NS, name);
34387    }
34388  }
34389
34390  protected void composeAccountBalanceComponentElements(Account.AccountBalanceComponent element) throws IOException {
34391    composeBackboneElementElements(element);
34392    if (element.hasAggregate()) {
34393      composeCodeableConcept("aggregate", element.getAggregate());
34394    }
34395    if (element.hasTerm()) {
34396      composeCodeableConcept("term", element.getTerm());
34397    }
34398    if (element.hasEstimateElement()) {
34399      composeBoolean("estimate", element.getEstimateElement());
34400    }
34401    if (element.hasAmount()) {
34402      composeMoney("amount", element.getAmount());
34403    }
34404  }
34405
34406  protected void composeActivityDefinition(String name, ActivityDefinition element) throws IOException {
34407    if (element != null) {
34408    composeResourceAttributes(element);
34409      xml.enter(FHIR_NS, name);
34410      composeActivityDefinitionElements(element);
34411      composeElementClose(element);
34412      xml.exit(FHIR_NS, name);
34413    }
34414  }
34415
34416  protected void composeActivityDefinitionElements(ActivityDefinition element) throws IOException {
34417    composeMetadataResourceElements(element);
34418    if (element.hasUrlElement()) {
34419      composeUri("url", element.getUrlElement());
34420    }
34421    if (element.hasIdentifier()) { 
34422      for (Identifier e : element.getIdentifier()) 
34423          composeIdentifier("identifier", e);
34424    }
34425    if (element.hasVersionElement()) {
34426      composeString("version", element.getVersionElement());
34427    }
34428    if (element.hasVersionAlgorithm()) {
34429      composeType("versionAlgorithm", element.getVersionAlgorithm());
34430    }    if (element.hasNameElement()) {
34431      composeString("name", element.getNameElement());
34432    }
34433    if (element.hasTitleElement()) {
34434      composeString("title", element.getTitleElement());
34435    }
34436    if (element.hasSubtitleElement()) {
34437      composeString("subtitle", element.getSubtitleElement());
34438    }
34439    if (element.hasStatusElement())
34440      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34441    if (element.hasExperimentalElement()) {
34442      composeBoolean("experimental", element.getExperimentalElement());
34443    }
34444    if (element.hasSubject()) {
34445      composeType("subject", element.getSubject());
34446    }    if (element.hasDateElement()) {
34447      composeDateTime("date", element.getDateElement());
34448    }
34449    if (element.hasPublisherElement()) {
34450      composeString("publisher", element.getPublisherElement());
34451    }
34452    if (element.hasContact()) { 
34453      for (ContactDetail e : element.getContact()) 
34454          composeContactDetail("contact", e);
34455    }
34456    if (element.hasDescriptionElement()) {
34457      composeMarkdown("description", element.getDescriptionElement());
34458    }
34459    if (element.hasUseContext()) { 
34460      for (UsageContext e : element.getUseContext()) 
34461          composeUsageContext("useContext", e);
34462    }
34463    if (element.hasJurisdiction()) { 
34464      for (CodeableConcept e : element.getJurisdiction()) 
34465          composeCodeableConcept("jurisdiction", e);
34466    }
34467    if (element.hasPurposeElement()) {
34468      composeMarkdown("purpose", element.getPurposeElement());
34469    }
34470    if (element.hasUsageElement()) {
34471      composeMarkdown("usage", element.getUsageElement());
34472    }
34473    if (element.hasCopyrightElement()) {
34474      composeMarkdown("copyright", element.getCopyrightElement());
34475    }
34476    if (element.hasCopyrightLabelElement()) {
34477      composeString("copyrightLabel", element.getCopyrightLabelElement());
34478    }
34479    if (element.hasApprovalDateElement()) {
34480      composeDate("approvalDate", element.getApprovalDateElement());
34481    }
34482    if (element.hasLastReviewDateElement()) {
34483      composeDate("lastReviewDate", element.getLastReviewDateElement());
34484    }
34485    if (element.hasEffectivePeriod()) {
34486      composePeriod("effectivePeriod", element.getEffectivePeriod());
34487    }
34488    if (element.hasTopic()) { 
34489      for (CodeableConcept e : element.getTopic()) 
34490          composeCodeableConcept("topic", e);
34491    }
34492    if (element.hasAuthor()) { 
34493      for (ContactDetail e : element.getAuthor()) 
34494          composeContactDetail("author", e);
34495    }
34496    if (element.hasEditor()) { 
34497      for (ContactDetail e : element.getEditor()) 
34498          composeContactDetail("editor", e);
34499    }
34500    if (element.hasReviewer()) { 
34501      for (ContactDetail e : element.getReviewer()) 
34502          composeContactDetail("reviewer", e);
34503    }
34504    if (element.hasEndorser()) { 
34505      for (ContactDetail e : element.getEndorser()) 
34506          composeContactDetail("endorser", e);
34507    }
34508    if (element.hasRelatedArtifact()) { 
34509      for (RelatedArtifact e : element.getRelatedArtifact()) 
34510          composeRelatedArtifact("relatedArtifact", e);
34511    }
34512    if (element.hasLibrary()) { 
34513      for (CanonicalType e : element.getLibrary()) 
34514          composeCanonical("library", e);
34515    }
34516    if (element.hasKindElement())
34517      composeEnumeration("kind", element.getKindElement(), new ActivityDefinition.RequestResourceTypesEnumFactory());
34518    if (element.hasProfileElement()) {
34519      composeCanonical("profile", element.getProfileElement());
34520    }
34521    if (element.hasCode()) {
34522      composeCodeableConcept("code", element.getCode());
34523    }
34524    if (element.hasIntentElement())
34525      composeEnumeration("intent", element.getIntentElement(), new Enumerations.RequestIntentEnumFactory());
34526    if (element.hasPriorityElement())
34527      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
34528    if (element.hasDoNotPerformElement()) {
34529      composeBoolean("doNotPerform", element.getDoNotPerformElement());
34530    }
34531    if (element.hasTiming()) {
34532      composeType("timing", element.getTiming());
34533    }    if (element.hasAsNeeded()) {
34534      composeType("asNeeded", element.getAsNeeded());
34535    }    if (element.hasLocation()) {
34536      composeCodeableReference("location", element.getLocation());
34537    }
34538    if (element.hasParticipant()) { 
34539      for (ActivityDefinition.ActivityDefinitionParticipantComponent e : element.getParticipant()) 
34540          composeActivityDefinitionParticipantComponent("participant", e);
34541    }
34542    if (element.hasProduct()) {
34543      composeType("product", element.getProduct());
34544    }    if (element.hasQuantity()) {
34545      composeQuantity("quantity", element.getQuantity());
34546    }
34547    if (element.hasDosage()) { 
34548      for (Dosage e : element.getDosage()) 
34549          composeDosage("dosage", e);
34550    }
34551    if (element.hasBodySite()) { 
34552      for (CodeableConcept e : element.getBodySite()) 
34553          composeCodeableConcept("bodySite", e);
34554    }
34555    if (element.hasSpecimenRequirement()) { 
34556      for (CanonicalType e : element.getSpecimenRequirement()) 
34557          composeCanonical("specimenRequirement", e);
34558    }
34559    if (element.hasObservationRequirement()) { 
34560      for (CanonicalType e : element.getObservationRequirement()) 
34561          composeCanonical("observationRequirement", e);
34562    }
34563    if (element.hasObservationResultRequirement()) { 
34564      for (CanonicalType e : element.getObservationResultRequirement()) 
34565          composeCanonical("observationResultRequirement", e);
34566    }
34567    if (element.hasTransformElement()) {
34568      composeCanonical("transform", element.getTransformElement());
34569    }
34570    if (element.hasDynamicValue()) { 
34571      for (ActivityDefinition.ActivityDefinitionDynamicValueComponent e : element.getDynamicValue()) 
34572          composeActivityDefinitionDynamicValueComponent("dynamicValue", e);
34573    }
34574  }
34575
34576  protected void composeActivityDefinitionParticipantComponent(String name, ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
34577    if (element != null) {
34578    composeElementAttributes(element);
34579      xml.enter(FHIR_NS, name);
34580      composeActivityDefinitionParticipantComponentElements(element);
34581      composeElementClose(element);
34582      xml.exit(FHIR_NS, name);
34583    }
34584  }
34585
34586  protected void composeActivityDefinitionParticipantComponentElements(ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
34587    composeBackboneElementElements(element);
34588    if (element.hasTypeElement())
34589      composeEnumeration("type", element.getTypeElement(), new Enumerations.ActionParticipantTypeEnumFactory());
34590    if (element.hasTypeCanonicalElement()) {
34591      composeCanonical("typeCanonical", element.getTypeCanonicalElement());
34592    }
34593    if (element.hasTypeReference()) {
34594      composeReference("typeReference", element.getTypeReference());
34595    }
34596    if (element.hasRole()) {
34597      composeCodeableConcept("role", element.getRole());
34598    }
34599    if (element.hasFunction()) {
34600      composeCodeableConcept("function", element.getFunction());
34601    }
34602  }
34603
34604  protected void composeActivityDefinitionDynamicValueComponent(String name, ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
34605    if (element != null) {
34606    composeElementAttributes(element);
34607      xml.enter(FHIR_NS, name);
34608      composeActivityDefinitionDynamicValueComponentElements(element);
34609      composeElementClose(element);
34610      xml.exit(FHIR_NS, name);
34611    }
34612  }
34613
34614  protected void composeActivityDefinitionDynamicValueComponentElements(ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
34615    composeBackboneElementElements(element);
34616    if (element.hasPathElement()) {
34617      composeString("path", element.getPathElement());
34618    }
34619    if (element.hasExpression()) {
34620      composeExpression("expression", element.getExpression());
34621    }
34622  }
34623
34624  protected void composeActorDefinition(String name, ActorDefinition element) throws IOException {
34625    if (element != null) {
34626    composeResourceAttributes(element);
34627      xml.enter(FHIR_NS, name);
34628      composeActorDefinitionElements(element);
34629      composeElementClose(element);
34630      xml.exit(FHIR_NS, name);
34631    }
34632  }
34633
34634  protected void composeActorDefinitionElements(ActorDefinition element) throws IOException {
34635    composeCanonicalResourceElements(element);
34636    if (element.hasUrlElement()) {
34637      composeUri("url", element.getUrlElement());
34638    }
34639    if (element.hasIdentifier()) { 
34640      for (Identifier e : element.getIdentifier()) 
34641          composeIdentifier("identifier", e);
34642    }
34643    if (element.hasVersionElement()) {
34644      composeString("version", element.getVersionElement());
34645    }
34646    if (element.hasVersionAlgorithm()) {
34647      composeType("versionAlgorithm", element.getVersionAlgorithm());
34648    }    if (element.hasNameElement()) {
34649      composeString("name", element.getNameElement());
34650    }
34651    if (element.hasTitleElement()) {
34652      composeString("title", element.getTitleElement());
34653    }
34654    if (element.hasStatusElement())
34655      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34656    if (element.hasExperimentalElement()) {
34657      composeBoolean("experimental", element.getExperimentalElement());
34658    }
34659    if (element.hasDateElement()) {
34660      composeDateTime("date", element.getDateElement());
34661    }
34662    if (element.hasPublisherElement()) {
34663      composeString("publisher", element.getPublisherElement());
34664    }
34665    if (element.hasContact()) { 
34666      for (ContactDetail e : element.getContact()) 
34667          composeContactDetail("contact", e);
34668    }
34669    if (element.hasDescriptionElement()) {
34670      composeMarkdown("description", element.getDescriptionElement());
34671    }
34672    if (element.hasUseContext()) { 
34673      for (UsageContext e : element.getUseContext()) 
34674          composeUsageContext("useContext", e);
34675    }
34676    if (element.hasJurisdiction()) { 
34677      for (CodeableConcept e : element.getJurisdiction()) 
34678          composeCodeableConcept("jurisdiction", e);
34679    }
34680    if (element.hasPurposeElement()) {
34681      composeMarkdown("purpose", element.getPurposeElement());
34682    }
34683    if (element.hasCopyrightElement()) {
34684      composeMarkdown("copyright", element.getCopyrightElement());
34685    }
34686    if (element.hasCopyrightLabelElement()) {
34687      composeString("copyrightLabel", element.getCopyrightLabelElement());
34688    }
34689    if (element.hasTypeElement())
34690      composeEnumeration("type", element.getTypeElement(), new Enumerations.ExampleScenarioActorTypeEnumFactory());
34691    if (element.hasDocumentationElement()) {
34692      composeMarkdown("documentation", element.getDocumentationElement());
34693    }
34694    if (element.hasReference()) { 
34695      for (UrlType e : element.getReference()) 
34696          composeUrl("reference", e);
34697    }
34698    if (element.hasCapabilitiesElement()) {
34699      composeCanonical("capabilities", element.getCapabilitiesElement());
34700    }
34701    if (element.hasDerivedFrom()) { 
34702      for (CanonicalType e : element.getDerivedFrom()) 
34703          composeCanonical("derivedFrom", e);
34704    }
34705  }
34706
34707  protected void composeAdministrableProductDefinition(String name, AdministrableProductDefinition element) throws IOException {
34708    if (element != null) {
34709    composeResourceAttributes(element);
34710      xml.enter(FHIR_NS, name);
34711      composeAdministrableProductDefinitionElements(element);
34712      composeElementClose(element);
34713      xml.exit(FHIR_NS, name);
34714    }
34715  }
34716
34717  protected void composeAdministrableProductDefinitionElements(AdministrableProductDefinition element) throws IOException {
34718    composeDomainResourceElements(element);
34719    if (element.hasIdentifier()) { 
34720      for (Identifier e : element.getIdentifier()) 
34721          composeIdentifier("identifier", e);
34722    }
34723    if (element.hasStatusElement())
34724      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34725    if (element.hasFormOf()) { 
34726      for (Reference e : element.getFormOf()) 
34727          composeReference("formOf", e);
34728    }
34729    if (element.hasAdministrableDoseForm()) {
34730      composeCodeableConcept("administrableDoseForm", element.getAdministrableDoseForm());
34731    }
34732    if (element.hasUnitOfPresentation()) {
34733      composeCodeableConcept("unitOfPresentation", element.getUnitOfPresentation());
34734    }
34735    if (element.hasProducedFrom()) { 
34736      for (Reference e : element.getProducedFrom()) 
34737          composeReference("producedFrom", e);
34738    }
34739    if (element.hasIngredient()) { 
34740      for (CodeableConcept e : element.getIngredient()) 
34741          composeCodeableConcept("ingredient", e);
34742    }
34743    if (element.hasDevice()) {
34744      composeReference("device", element.getDevice());
34745    }
34746    if (element.hasDescriptionElement()) {
34747      composeMarkdown("description", element.getDescriptionElement());
34748    }
34749    if (element.hasProperty()) { 
34750      for (AdministrableProductDefinition.AdministrableProductDefinitionPropertyComponent e : element.getProperty()) 
34751          composeAdministrableProductDefinitionPropertyComponent("property", e);
34752    }
34753    if (element.hasRouteOfAdministration()) { 
34754      for (AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationComponent e : element.getRouteOfAdministration()) 
34755          composeAdministrableProductDefinitionRouteOfAdministrationComponent("routeOfAdministration", e);
34756    }
34757  }
34758
34759  protected void composeAdministrableProductDefinitionPropertyComponent(String name, AdministrableProductDefinition.AdministrableProductDefinitionPropertyComponent element) throws IOException {
34760    if (element != null) {
34761    composeElementAttributes(element);
34762      xml.enter(FHIR_NS, name);
34763      composeAdministrableProductDefinitionPropertyComponentElements(element);
34764      composeElementClose(element);
34765      xml.exit(FHIR_NS, name);
34766    }
34767  }
34768
34769  protected void composeAdministrableProductDefinitionPropertyComponentElements(AdministrableProductDefinition.AdministrableProductDefinitionPropertyComponent element) throws IOException {
34770    composeBackboneElementElements(element);
34771    if (element.hasType()) {
34772      composeCodeableConcept("type", element.getType());
34773    }
34774    if (element.hasValue()) {
34775      composeType("value", element.getValue());
34776    }    if (element.hasStatus()) {
34777      composeCodeableConcept("status", element.getStatus());
34778    }
34779  }
34780
34781  protected void composeAdministrableProductDefinitionRouteOfAdministrationComponent(String name, AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationComponent element) throws IOException {
34782    if (element != null) {
34783    composeElementAttributes(element);
34784      xml.enter(FHIR_NS, name);
34785      composeAdministrableProductDefinitionRouteOfAdministrationComponentElements(element);
34786      composeElementClose(element);
34787      xml.exit(FHIR_NS, name);
34788    }
34789  }
34790
34791  protected void composeAdministrableProductDefinitionRouteOfAdministrationComponentElements(AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationComponent element) throws IOException {
34792    composeBackboneElementElements(element);
34793    if (element.hasCode()) {
34794      composeCodeableConcept("code", element.getCode());
34795    }
34796    if (element.hasFirstDose()) {
34797      composeQuantity("firstDose", element.getFirstDose());
34798    }
34799    if (element.hasMaxSingleDose()) {
34800      composeQuantity("maxSingleDose", element.getMaxSingleDose());
34801    }
34802    if (element.hasMaxDosePerDay()) {
34803      composeQuantity("maxDosePerDay", element.getMaxDosePerDay());
34804    }
34805    if (element.hasMaxDosePerTreatmentPeriod()) {
34806      composeRatio("maxDosePerTreatmentPeriod", element.getMaxDosePerTreatmentPeriod());
34807    }
34808    if (element.hasMaxTreatmentPeriod()) {
34809      composeDuration("maxTreatmentPeriod", element.getMaxTreatmentPeriod());
34810    }
34811    if (element.hasTargetSpecies()) { 
34812      for (AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent e : element.getTargetSpecies()) 
34813          composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent("targetSpecies", e);
34814    }
34815  }
34816
34817  protected void composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent(String name, AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent element) throws IOException {
34818    if (element != null) {
34819    composeElementAttributes(element);
34820      xml.enter(FHIR_NS, name);
34821      composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponentElements(element);
34822      composeElementClose(element);
34823      xml.exit(FHIR_NS, name);
34824    }
34825  }
34826
34827  protected void composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponentElements(AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesComponent element) throws IOException {
34828    composeBackboneElementElements(element);
34829    if (element.hasCode()) {
34830      composeCodeableConcept("code", element.getCode());
34831    }
34832    if (element.hasWithdrawalPeriod()) { 
34833      for (AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent e : element.getWithdrawalPeriod()) 
34834          composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent("withdrawalPeriod", e);
34835    }
34836  }
34837
34838  protected void composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(String name, AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent element) throws IOException {
34839    if (element != null) {
34840    composeElementAttributes(element);
34841      xml.enter(FHIR_NS, name);
34842      composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentElements(element);
34843      composeElementClose(element);
34844      xml.exit(FHIR_NS, name);
34845    }
34846  }
34847
34848  protected void composeAdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentElements(AdministrableProductDefinition.AdministrableProductDefinitionRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent element) throws IOException {
34849    composeBackboneElementElements(element);
34850    if (element.hasTissue()) {
34851      composeCodeableConcept("tissue", element.getTissue());
34852    }
34853    if (element.hasValue()) {
34854      composeQuantity("value", element.getValue());
34855    }
34856    if (element.hasSupportingInformationElement()) {
34857      composeString("supportingInformation", element.getSupportingInformationElement());
34858    }
34859  }
34860
34861  protected void composeAdverseEvent(String name, AdverseEvent element) throws IOException {
34862    if (element != null) {
34863    composeResourceAttributes(element);
34864      xml.enter(FHIR_NS, name);
34865      composeAdverseEventElements(element);
34866      composeElementClose(element);
34867      xml.exit(FHIR_NS, name);
34868    }
34869  }
34870
34871  protected void composeAdverseEventElements(AdverseEvent element) throws IOException {
34872    composeDomainResourceElements(element);
34873    if (element.hasIdentifier()) { 
34874      for (Identifier e : element.getIdentifier()) 
34875          composeIdentifier("identifier", e);
34876    }
34877    if (element.hasStatusElement())
34878      composeEnumeration("status", element.getStatusElement(), new AdverseEvent.AdverseEventStatusEnumFactory());
34879    if (element.hasActualityElement())
34880      composeEnumeration("actuality", element.getActualityElement(), new AdverseEvent.AdverseEventActualityEnumFactory());
34881    if (element.hasCategory()) { 
34882      for (CodeableConcept e : element.getCategory()) 
34883          composeCodeableConcept("category", e);
34884    }
34885    if (element.hasCode()) {
34886      composeCodeableConcept("code", element.getCode());
34887    }
34888    if (element.hasSubject()) {
34889      composeReference("subject", element.getSubject());
34890    }
34891    if (element.hasEncounter()) {
34892      composeReference("encounter", element.getEncounter());
34893    }
34894    if (element.hasOccurrence()) {
34895      composeType("occurrence", element.getOccurrence());
34896    }    if (element.hasDetectedElement()) {
34897      composeDateTime("detected", element.getDetectedElement());
34898    }
34899    if (element.hasRecordedDateElement()) {
34900      composeDateTime("recordedDate", element.getRecordedDateElement());
34901    }
34902    if (element.hasResultingEffect()) { 
34903      for (Reference e : element.getResultingEffect()) 
34904          composeReference("resultingEffect", e);
34905    }
34906    if (element.hasLocation()) {
34907      composeReference("location", element.getLocation());
34908    }
34909    if (element.hasSeriousness()) {
34910      composeCodeableConcept("seriousness", element.getSeriousness());
34911    }
34912    if (element.hasOutcome()) { 
34913      for (CodeableConcept e : element.getOutcome()) 
34914          composeCodeableConcept("outcome", e);
34915    }
34916    if (element.hasRecorder()) {
34917      composeReference("recorder", element.getRecorder());
34918    }
34919    if (element.hasParticipant()) { 
34920      for (AdverseEvent.AdverseEventParticipantComponent e : element.getParticipant()) 
34921          composeAdverseEventParticipantComponent("participant", e);
34922    }
34923    if (element.hasStudy()) { 
34924      for (Reference e : element.getStudy()) 
34925          composeReference("study", e);
34926    }
34927    if (element.hasExpectedInResearchStudyElement()) {
34928      composeBoolean("expectedInResearchStudy", element.getExpectedInResearchStudyElement());
34929    }
34930    if (element.hasSuspectEntity()) { 
34931      for (AdverseEvent.AdverseEventSuspectEntityComponent e : element.getSuspectEntity()) 
34932          composeAdverseEventSuspectEntityComponent("suspectEntity", e);
34933    }
34934    if (element.hasContributingFactor()) { 
34935      for (AdverseEvent.AdverseEventContributingFactorComponent e : element.getContributingFactor()) 
34936          composeAdverseEventContributingFactorComponent("contributingFactor", e);
34937    }
34938    if (element.hasPreventiveAction()) { 
34939      for (AdverseEvent.AdverseEventPreventiveActionComponent e : element.getPreventiveAction()) 
34940          composeAdverseEventPreventiveActionComponent("preventiveAction", e);
34941    }
34942    if (element.hasMitigatingAction()) { 
34943      for (AdverseEvent.AdverseEventMitigatingActionComponent e : element.getMitigatingAction()) 
34944          composeAdverseEventMitigatingActionComponent("mitigatingAction", e);
34945    }
34946    if (element.hasSupportingInfo()) { 
34947      for (AdverseEvent.AdverseEventSupportingInfoComponent e : element.getSupportingInfo()) 
34948          composeAdverseEventSupportingInfoComponent("supportingInfo", e);
34949    }
34950    if (element.hasNote()) { 
34951      for (Annotation e : element.getNote()) 
34952          composeAnnotation("note", e);
34953    }
34954  }
34955
34956  protected void composeAdverseEventParticipantComponent(String name, AdverseEvent.AdverseEventParticipantComponent element) throws IOException {
34957    if (element != null) {
34958    composeElementAttributes(element);
34959      xml.enter(FHIR_NS, name);
34960      composeAdverseEventParticipantComponentElements(element);
34961      composeElementClose(element);
34962      xml.exit(FHIR_NS, name);
34963    }
34964  }
34965
34966  protected void composeAdverseEventParticipantComponentElements(AdverseEvent.AdverseEventParticipantComponent element) throws IOException {
34967    composeBackboneElementElements(element);
34968    if (element.hasFunction()) {
34969      composeCodeableConcept("function", element.getFunction());
34970    }
34971    if (element.hasActor()) {
34972      composeReference("actor", element.getActor());
34973    }
34974  }
34975
34976  protected void composeAdverseEventSuspectEntityComponent(String name, AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
34977    if (element != null) {
34978    composeElementAttributes(element);
34979      xml.enter(FHIR_NS, name);
34980      composeAdverseEventSuspectEntityComponentElements(element);
34981      composeElementClose(element);
34982      xml.exit(FHIR_NS, name);
34983    }
34984  }
34985
34986  protected void composeAdverseEventSuspectEntityComponentElements(AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
34987    composeBackboneElementElements(element);
34988    if (element.hasInstance()) {
34989      composeType("instance", element.getInstance());
34990    }    if (element.hasCausality()) {
34991      composeAdverseEventSuspectEntityCausalityComponent("causality", element.getCausality());
34992    }
34993  }
34994
34995  protected void composeAdverseEventSuspectEntityCausalityComponent(String name, AdverseEvent.AdverseEventSuspectEntityCausalityComponent element) throws IOException {
34996    if (element != null) {
34997    composeElementAttributes(element);
34998      xml.enter(FHIR_NS, name);
34999      composeAdverseEventSuspectEntityCausalityComponentElements(element);
35000      composeElementClose(element);
35001      xml.exit(FHIR_NS, name);
35002    }
35003  }
35004
35005  protected void composeAdverseEventSuspectEntityCausalityComponentElements(AdverseEvent.AdverseEventSuspectEntityCausalityComponent element) throws IOException {
35006    composeBackboneElementElements(element);
35007    if (element.hasAssessmentMethod()) {
35008      composeCodeableConcept("assessmentMethod", element.getAssessmentMethod());
35009    }
35010    if (element.hasEntityRelatedness()) {
35011      composeCodeableConcept("entityRelatedness", element.getEntityRelatedness());
35012    }
35013    if (element.hasAuthor()) {
35014      composeReference("author", element.getAuthor());
35015    }
35016  }
35017
35018  protected void composeAdverseEventContributingFactorComponent(String name, AdverseEvent.AdverseEventContributingFactorComponent element) throws IOException {
35019    if (element != null) {
35020    composeElementAttributes(element);
35021      xml.enter(FHIR_NS, name);
35022      composeAdverseEventContributingFactorComponentElements(element);
35023      composeElementClose(element);
35024      xml.exit(FHIR_NS, name);
35025    }
35026  }
35027
35028  protected void composeAdverseEventContributingFactorComponentElements(AdverseEvent.AdverseEventContributingFactorComponent element) throws IOException {
35029    composeBackboneElementElements(element);
35030    if (element.hasItem()) {
35031      composeType("item", element.getItem());
35032    }  }
35033
35034  protected void composeAdverseEventPreventiveActionComponent(String name, AdverseEvent.AdverseEventPreventiveActionComponent element) throws IOException {
35035    if (element != null) {
35036    composeElementAttributes(element);
35037      xml.enter(FHIR_NS, name);
35038      composeAdverseEventPreventiveActionComponentElements(element);
35039      composeElementClose(element);
35040      xml.exit(FHIR_NS, name);
35041    }
35042  }
35043
35044  protected void composeAdverseEventPreventiveActionComponentElements(AdverseEvent.AdverseEventPreventiveActionComponent element) throws IOException {
35045    composeBackboneElementElements(element);
35046    if (element.hasItem()) {
35047      composeType("item", element.getItem());
35048    }  }
35049
35050  protected void composeAdverseEventMitigatingActionComponent(String name, AdverseEvent.AdverseEventMitigatingActionComponent element) throws IOException {
35051    if (element != null) {
35052    composeElementAttributes(element);
35053      xml.enter(FHIR_NS, name);
35054      composeAdverseEventMitigatingActionComponentElements(element);
35055      composeElementClose(element);
35056      xml.exit(FHIR_NS, name);
35057    }
35058  }
35059
35060  protected void composeAdverseEventMitigatingActionComponentElements(AdverseEvent.AdverseEventMitigatingActionComponent element) throws IOException {
35061    composeBackboneElementElements(element);
35062    if (element.hasItem()) {
35063      composeType("item", element.getItem());
35064    }  }
35065
35066  protected void composeAdverseEventSupportingInfoComponent(String name, AdverseEvent.AdverseEventSupportingInfoComponent element) throws IOException {
35067    if (element != null) {
35068    composeElementAttributes(element);
35069      xml.enter(FHIR_NS, name);
35070      composeAdverseEventSupportingInfoComponentElements(element);
35071      composeElementClose(element);
35072      xml.exit(FHIR_NS, name);
35073    }
35074  }
35075
35076  protected void composeAdverseEventSupportingInfoComponentElements(AdverseEvent.AdverseEventSupportingInfoComponent element) throws IOException {
35077    composeBackboneElementElements(element);
35078    if (element.hasItem()) {
35079      composeType("item", element.getItem());
35080    }  }
35081
35082  protected void composeAllergyIntolerance(String name, AllergyIntolerance element) throws IOException {
35083    if (element != null) {
35084    composeResourceAttributes(element);
35085      xml.enter(FHIR_NS, name);
35086      composeAllergyIntoleranceElements(element);
35087      composeElementClose(element);
35088      xml.exit(FHIR_NS, name);
35089    }
35090  }
35091
35092  protected void composeAllergyIntoleranceElements(AllergyIntolerance element) throws IOException {
35093    composeDomainResourceElements(element);
35094    if (element.hasIdentifier()) { 
35095      for (Identifier e : element.getIdentifier()) 
35096          composeIdentifier("identifier", e);
35097    }
35098    if (element.hasClinicalStatus()) {
35099      composeCodeableConcept("clinicalStatus", element.getClinicalStatus());
35100    }
35101    if (element.hasVerificationStatus()) {
35102      composeCodeableConcept("verificationStatus", element.getVerificationStatus());
35103    }
35104    if (element.hasType()) {
35105      composeCodeableConcept("type", element.getType());
35106    }
35107      if (element.hasCategory()) 
35108        for (Enumeration<AllergyIntolerance.AllergyIntoleranceCategory> e : element.getCategory()) 
35109          composeEnumeration("category", e, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory());
35110    if (element.hasCriticalityElement())
35111      composeEnumeration("criticality", element.getCriticalityElement(), new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory());
35112    if (element.hasCode()) {
35113      composeCodeableConcept("code", element.getCode());
35114    }
35115    if (element.hasPatient()) {
35116      composeReference("patient", element.getPatient());
35117    }
35118    if (element.hasEncounter()) {
35119      composeReference("encounter", element.getEncounter());
35120    }
35121    if (element.hasOnset()) {
35122      composeType("onset", element.getOnset());
35123    }    if (element.hasRecordedDateElement()) {
35124      composeDateTime("recordedDate", element.getRecordedDateElement());
35125    }
35126    if (element.hasParticipant()) { 
35127      for (AllergyIntolerance.AllergyIntoleranceParticipantComponent e : element.getParticipant()) 
35128          composeAllergyIntoleranceParticipantComponent("participant", e);
35129    }
35130    if (element.hasLastOccurrenceElement()) {
35131      composeDateTime("lastOccurrence", element.getLastOccurrenceElement());
35132    }
35133    if (element.hasNote()) { 
35134      for (Annotation e : element.getNote()) 
35135          composeAnnotation("note", e);
35136    }
35137    if (element.hasReaction()) { 
35138      for (AllergyIntolerance.AllergyIntoleranceReactionComponent e : element.getReaction()) 
35139          composeAllergyIntoleranceReactionComponent("reaction", e);
35140    }
35141  }
35142
35143  protected void composeAllergyIntoleranceParticipantComponent(String name, AllergyIntolerance.AllergyIntoleranceParticipantComponent element) throws IOException {
35144    if (element != null) {
35145    composeElementAttributes(element);
35146      xml.enter(FHIR_NS, name);
35147      composeAllergyIntoleranceParticipantComponentElements(element);
35148      composeElementClose(element);
35149      xml.exit(FHIR_NS, name);
35150    }
35151  }
35152
35153  protected void composeAllergyIntoleranceParticipantComponentElements(AllergyIntolerance.AllergyIntoleranceParticipantComponent element) throws IOException {
35154    composeBackboneElementElements(element);
35155    if (element.hasFunction()) {
35156      composeCodeableConcept("function", element.getFunction());
35157    }
35158    if (element.hasActor()) {
35159      composeReference("actor", element.getActor());
35160    }
35161  }
35162
35163  protected void composeAllergyIntoleranceReactionComponent(String name, AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
35164    if (element != null) {
35165    composeElementAttributes(element);
35166      xml.enter(FHIR_NS, name);
35167      composeAllergyIntoleranceReactionComponentElements(element);
35168      composeElementClose(element);
35169      xml.exit(FHIR_NS, name);
35170    }
35171  }
35172
35173  protected void composeAllergyIntoleranceReactionComponentElements(AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
35174    composeBackboneElementElements(element);
35175    if (element.hasSubstance()) {
35176      composeCodeableConcept("substance", element.getSubstance());
35177    }
35178    if (element.hasManifestation()) { 
35179      for (CodeableReference e : element.getManifestation()) 
35180          composeCodeableReference("manifestation", e);
35181    }
35182    if (element.hasDescriptionElement()) {
35183      composeString("description", element.getDescriptionElement());
35184    }
35185    if (element.hasOnsetElement()) {
35186      composeDateTime("onset", element.getOnsetElement());
35187    }
35188    if (element.hasSeverityElement())
35189      composeEnumeration("severity", element.getSeverityElement(), new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory());
35190    if (element.hasExposureRoute()) {
35191      composeCodeableConcept("exposureRoute", element.getExposureRoute());
35192    }
35193    if (element.hasNote()) { 
35194      for (Annotation e : element.getNote()) 
35195          composeAnnotation("note", e);
35196    }
35197  }
35198
35199  protected void composeAppointment(String name, Appointment element) throws IOException {
35200    if (element != null) {
35201    composeResourceAttributes(element);
35202      xml.enter(FHIR_NS, name);
35203      composeAppointmentElements(element);
35204      composeElementClose(element);
35205      xml.exit(FHIR_NS, name);
35206    }
35207  }
35208
35209  protected void composeAppointmentElements(Appointment element) throws IOException {
35210    composeDomainResourceElements(element);
35211    if (element.hasIdentifier()) { 
35212      for (Identifier e : element.getIdentifier()) 
35213          composeIdentifier("identifier", e);
35214    }
35215    if (element.hasStatusElement())
35216      composeEnumeration("status", element.getStatusElement(), new Appointment.AppointmentStatusEnumFactory());
35217    if (element.hasCancellationReason()) {
35218      composeCodeableConcept("cancellationReason", element.getCancellationReason());
35219    }
35220    if (element.hasClass_()) { 
35221      for (CodeableConcept e : element.getClass_()) 
35222          composeCodeableConcept("class", e);
35223    }
35224    if (element.hasServiceCategory()) { 
35225      for (CodeableConcept e : element.getServiceCategory()) 
35226          composeCodeableConcept("serviceCategory", e);
35227    }
35228    if (element.hasServiceType()) { 
35229      for (CodeableReference e : element.getServiceType()) 
35230          composeCodeableReference("serviceType", e);
35231    }
35232    if (element.hasSpecialty()) { 
35233      for (CodeableConcept e : element.getSpecialty()) 
35234          composeCodeableConcept("specialty", e);
35235    }
35236    if (element.hasAppointmentType()) {
35237      composeCodeableConcept("appointmentType", element.getAppointmentType());
35238    }
35239    if (element.hasReason()) { 
35240      for (CodeableReference e : element.getReason()) 
35241          composeCodeableReference("reason", e);
35242    }
35243    if (element.hasPriority()) {
35244      composeCodeableConcept("priority", element.getPriority());
35245    }
35246    if (element.hasDescriptionElement()) {
35247      composeString("description", element.getDescriptionElement());
35248    }
35249    if (element.hasReplaces()) { 
35250      for (Reference e : element.getReplaces()) 
35251          composeReference("replaces", e);
35252    }
35253    if (element.hasVirtualService()) { 
35254      for (VirtualServiceDetail e : element.getVirtualService()) 
35255          composeVirtualServiceDetail("virtualService", e);
35256    }
35257    if (element.hasSupportingInformation()) { 
35258      for (Reference e : element.getSupportingInformation()) 
35259          composeReference("supportingInformation", e);
35260    }
35261    if (element.hasPreviousAppointment()) {
35262      composeReference("previousAppointment", element.getPreviousAppointment());
35263    }
35264    if (element.hasOriginatingAppointment()) {
35265      composeReference("originatingAppointment", element.getOriginatingAppointment());
35266    }
35267    if (element.hasStartElement()) {
35268      composeInstant("start", element.getStartElement());
35269    }
35270    if (element.hasEndElement()) {
35271      composeInstant("end", element.getEndElement());
35272    }
35273    if (element.hasMinutesDurationElement()) {
35274      composePositiveInt("minutesDuration", element.getMinutesDurationElement());
35275    }
35276    if (element.hasRequestedPeriod()) { 
35277      for (Period e : element.getRequestedPeriod()) 
35278          composePeriod("requestedPeriod", e);
35279    }
35280    if (element.hasSlot()) { 
35281      for (Reference e : element.getSlot()) 
35282          composeReference("slot", e);
35283    }
35284    if (element.hasAccount()) { 
35285      for (Reference e : element.getAccount()) 
35286          composeReference("account", e);
35287    }
35288    if (element.hasCreatedElement()) {
35289      composeDateTime("created", element.getCreatedElement());
35290    }
35291    if (element.hasCancellationDateElement()) {
35292      composeDateTime("cancellationDate", element.getCancellationDateElement());
35293    }
35294    if (element.hasNote()) { 
35295      for (Annotation e : element.getNote()) 
35296          composeAnnotation("note", e);
35297    }
35298    if (element.hasPatientInstruction()) { 
35299      for (CodeableReference e : element.getPatientInstruction()) 
35300          composeCodeableReference("patientInstruction", e);
35301    }
35302    if (element.hasBasedOn()) { 
35303      for (Reference e : element.getBasedOn()) 
35304          composeReference("basedOn", e);
35305    }
35306    if (element.hasSubject()) {
35307      composeReference("subject", element.getSubject());
35308    }
35309    if (element.hasParticipant()) { 
35310      for (Appointment.AppointmentParticipantComponent e : element.getParticipant()) 
35311          composeAppointmentParticipantComponent("participant", e);
35312    }
35313    if (element.hasRecurrenceIdElement()) {
35314      composePositiveInt("recurrenceId", element.getRecurrenceIdElement());
35315    }
35316    if (element.hasOccurrenceChangedElement()) {
35317      composeBoolean("occurrenceChanged", element.getOccurrenceChangedElement());
35318    }
35319    if (element.hasRecurrenceTemplate()) { 
35320      for (Appointment.AppointmentRecurrenceTemplateComponent e : element.getRecurrenceTemplate()) 
35321          composeAppointmentRecurrenceTemplateComponent("recurrenceTemplate", e);
35322    }
35323  }
35324
35325  protected void composeAppointmentParticipantComponent(String name, Appointment.AppointmentParticipantComponent element) throws IOException {
35326    if (element != null) {
35327    composeElementAttributes(element);
35328      xml.enter(FHIR_NS, name);
35329      composeAppointmentParticipantComponentElements(element);
35330      composeElementClose(element);
35331      xml.exit(FHIR_NS, name);
35332    }
35333  }
35334
35335  protected void composeAppointmentParticipantComponentElements(Appointment.AppointmentParticipantComponent element) throws IOException {
35336    composeBackboneElementElements(element);
35337    if (element.hasType()) { 
35338      for (CodeableConcept e : element.getType()) 
35339          composeCodeableConcept("type", e);
35340    }
35341    if (element.hasPeriod()) {
35342      composePeriod("period", element.getPeriod());
35343    }
35344    if (element.hasActor()) {
35345      composeReference("actor", element.getActor());
35346    }
35347    if (element.hasRequiredElement()) {
35348      composeBoolean("required", element.getRequiredElement());
35349    }
35350    if (element.hasStatusElement())
35351      composeEnumeration("status", element.getStatusElement(), new Appointment.ParticipationStatusEnumFactory());
35352  }
35353
35354  protected void composeAppointmentRecurrenceTemplateComponent(String name, Appointment.AppointmentRecurrenceTemplateComponent element) throws IOException {
35355    if (element != null) {
35356    composeElementAttributes(element);
35357      xml.enter(FHIR_NS, name);
35358      composeAppointmentRecurrenceTemplateComponentElements(element);
35359      composeElementClose(element);
35360      xml.exit(FHIR_NS, name);
35361    }
35362  }
35363
35364  protected void composeAppointmentRecurrenceTemplateComponentElements(Appointment.AppointmentRecurrenceTemplateComponent element) throws IOException {
35365    composeBackboneElementElements(element);
35366    if (element.hasTimezone()) {
35367      composeCodeableConcept("timezone", element.getTimezone());
35368    }
35369    if (element.hasRecurrenceType()) {
35370      composeCodeableConcept("recurrenceType", element.getRecurrenceType());
35371    }
35372    if (element.hasLastOccurrenceDateElement()) {
35373      composeDate("lastOccurrenceDate", element.getLastOccurrenceDateElement());
35374    }
35375    if (element.hasOccurrenceCountElement()) {
35376      composePositiveInt("occurrenceCount", element.getOccurrenceCountElement());
35377    }
35378    if (element.hasOccurrenceDate()) { 
35379      for (DateType e : element.getOccurrenceDate()) 
35380          composeDate("occurrenceDate", e);
35381    }
35382    if (element.hasWeeklyTemplate()) {
35383      composeAppointmentRecurrenceTemplateWeeklyTemplateComponent("weeklyTemplate", element.getWeeklyTemplate());
35384    }
35385    if (element.hasMonthlyTemplate()) {
35386      composeAppointmentRecurrenceTemplateMonthlyTemplateComponent("monthlyTemplate", element.getMonthlyTemplate());
35387    }
35388    if (element.hasYearlyTemplate()) {
35389      composeAppointmentRecurrenceTemplateYearlyTemplateComponent("yearlyTemplate", element.getYearlyTemplate());
35390    }
35391    if (element.hasExcludingDate()) { 
35392      for (DateType e : element.getExcludingDate()) 
35393          composeDate("excludingDate", e);
35394    }
35395    if (element.hasExcludingRecurrenceId()) { 
35396      for (PositiveIntType e : element.getExcludingRecurrenceId()) 
35397          composePositiveInt("excludingRecurrenceId", e);
35398    }
35399  }
35400
35401  protected void composeAppointmentRecurrenceTemplateWeeklyTemplateComponent(String name, Appointment.AppointmentRecurrenceTemplateWeeklyTemplateComponent element) throws IOException {
35402    if (element != null) {
35403    composeElementAttributes(element);
35404      xml.enter(FHIR_NS, name);
35405      composeAppointmentRecurrenceTemplateWeeklyTemplateComponentElements(element);
35406      composeElementClose(element);
35407      xml.exit(FHIR_NS, name);
35408    }
35409  }
35410
35411  protected void composeAppointmentRecurrenceTemplateWeeklyTemplateComponentElements(Appointment.AppointmentRecurrenceTemplateWeeklyTemplateComponent element) throws IOException {
35412    composeBackboneElementElements(element);
35413    if (element.hasMondayElement()) {
35414      composeBoolean("monday", element.getMondayElement());
35415    }
35416    if (element.hasTuesdayElement()) {
35417      composeBoolean("tuesday", element.getTuesdayElement());
35418    }
35419    if (element.hasWednesdayElement()) {
35420      composeBoolean("wednesday", element.getWednesdayElement());
35421    }
35422    if (element.hasThursdayElement()) {
35423      composeBoolean("thursday", element.getThursdayElement());
35424    }
35425    if (element.hasFridayElement()) {
35426      composeBoolean("friday", element.getFridayElement());
35427    }
35428    if (element.hasSaturdayElement()) {
35429      composeBoolean("saturday", element.getSaturdayElement());
35430    }
35431    if (element.hasSundayElement()) {
35432      composeBoolean("sunday", element.getSundayElement());
35433    }
35434    if (element.hasWeekIntervalElement()) {
35435      composePositiveInt("weekInterval", element.getWeekIntervalElement());
35436    }
35437  }
35438
35439  protected void composeAppointmentRecurrenceTemplateMonthlyTemplateComponent(String name, Appointment.AppointmentRecurrenceTemplateMonthlyTemplateComponent element) throws IOException {
35440    if (element != null) {
35441    composeElementAttributes(element);
35442      xml.enter(FHIR_NS, name);
35443      composeAppointmentRecurrenceTemplateMonthlyTemplateComponentElements(element);
35444      composeElementClose(element);
35445      xml.exit(FHIR_NS, name);
35446    }
35447  }
35448
35449  protected void composeAppointmentRecurrenceTemplateMonthlyTemplateComponentElements(Appointment.AppointmentRecurrenceTemplateMonthlyTemplateComponent element) throws IOException {
35450    composeBackboneElementElements(element);
35451    if (element.hasDayOfMonthElement()) {
35452      composePositiveInt("dayOfMonth", element.getDayOfMonthElement());
35453    }
35454    if (element.hasNthWeekOfMonth()) {
35455      composeCoding("nthWeekOfMonth", element.getNthWeekOfMonth());
35456    }
35457    if (element.hasDayOfWeek()) {
35458      composeCoding("dayOfWeek", element.getDayOfWeek());
35459    }
35460    if (element.hasMonthIntervalElement()) {
35461      composePositiveInt("monthInterval", element.getMonthIntervalElement());
35462    }
35463  }
35464
35465  protected void composeAppointmentRecurrenceTemplateYearlyTemplateComponent(String name, Appointment.AppointmentRecurrenceTemplateYearlyTemplateComponent element) throws IOException {
35466    if (element != null) {
35467    composeElementAttributes(element);
35468      xml.enter(FHIR_NS, name);
35469      composeAppointmentRecurrenceTemplateYearlyTemplateComponentElements(element);
35470      composeElementClose(element);
35471      xml.exit(FHIR_NS, name);
35472    }
35473  }
35474
35475  protected void composeAppointmentRecurrenceTemplateYearlyTemplateComponentElements(Appointment.AppointmentRecurrenceTemplateYearlyTemplateComponent element) throws IOException {
35476    composeBackboneElementElements(element);
35477    if (element.hasYearIntervalElement()) {
35478      composePositiveInt("yearInterval", element.getYearIntervalElement());
35479    }
35480  }
35481
35482  protected void composeAppointmentResponse(String name, AppointmentResponse element) throws IOException {
35483    if (element != null) {
35484    composeResourceAttributes(element);
35485      xml.enter(FHIR_NS, name);
35486      composeAppointmentResponseElements(element);
35487      composeElementClose(element);
35488      xml.exit(FHIR_NS, name);
35489    }
35490  }
35491
35492  protected void composeAppointmentResponseElements(AppointmentResponse element) throws IOException {
35493    composeDomainResourceElements(element);
35494    if (element.hasIdentifier()) { 
35495      for (Identifier e : element.getIdentifier()) 
35496          composeIdentifier("identifier", e);
35497    }
35498    if (element.hasAppointment()) {
35499      composeReference("appointment", element.getAppointment());
35500    }
35501    if (element.hasProposedNewTimeElement()) {
35502      composeBoolean("proposedNewTime", element.getProposedNewTimeElement());
35503    }
35504    if (element.hasStartElement()) {
35505      composeInstant("start", element.getStartElement());
35506    }
35507    if (element.hasEndElement()) {
35508      composeInstant("end", element.getEndElement());
35509    }
35510    if (element.hasParticipantType()) { 
35511      for (CodeableConcept e : element.getParticipantType()) 
35512          composeCodeableConcept("participantType", e);
35513    }
35514    if (element.hasActor()) {
35515      composeReference("actor", element.getActor());
35516    }
35517    if (element.hasParticipantStatusElement())
35518      composeEnumeration("participantStatus", element.getParticipantStatusElement(), new AppointmentResponse.AppointmentResponseStatusEnumFactory());
35519    if (element.hasCommentElement()) {
35520      composeMarkdown("comment", element.getCommentElement());
35521    }
35522    if (element.hasRecurringElement()) {
35523      composeBoolean("recurring", element.getRecurringElement());
35524    }
35525    if (element.hasOccurrenceDateElement()) {
35526      composeDate("occurrenceDate", element.getOccurrenceDateElement());
35527    }
35528    if (element.hasRecurrenceIdElement()) {
35529      composePositiveInt("recurrenceId", element.getRecurrenceIdElement());
35530    }
35531  }
35532
35533  protected void composeArtifactAssessment(String name, ArtifactAssessment element) throws IOException {
35534    if (element != null) {
35535    composeResourceAttributes(element);
35536      xml.enter(FHIR_NS, name);
35537      composeArtifactAssessmentElements(element);
35538      composeElementClose(element);
35539      xml.exit(FHIR_NS, name);
35540    }
35541  }
35542
35543  protected void composeArtifactAssessmentElements(ArtifactAssessment element) throws IOException {
35544    composeDomainResourceElements(element);
35545    if (element.hasIdentifier()) { 
35546      for (Identifier e : element.getIdentifier()) 
35547          composeIdentifier("identifier", e);
35548    }
35549    if (element.hasTitleElement()) {
35550      composeString("title", element.getTitleElement());
35551    }
35552    if (element.hasCiteAs()) {
35553      composeType("citeAs", element.getCiteAs());
35554    }    if (element.hasDateElement()) {
35555      composeDateTime("date", element.getDateElement());
35556    }
35557    if (element.hasCopyrightElement()) {
35558      composeMarkdown("copyright", element.getCopyrightElement());
35559    }
35560    if (element.hasApprovalDateElement()) {
35561      composeDate("approvalDate", element.getApprovalDateElement());
35562    }
35563    if (element.hasLastReviewDateElement()) {
35564      composeDate("lastReviewDate", element.getLastReviewDateElement());
35565    }
35566    if (element.hasArtifact()) {
35567      composeType("artifact", element.getArtifact());
35568    }    if (element.hasContent()) { 
35569      for (ArtifactAssessment.ArtifactAssessmentContentComponent e : element.getContent()) 
35570          composeArtifactAssessmentContentComponent("content", e);
35571    }
35572    if (element.hasWorkflowStatusElement())
35573      composeEnumeration("workflowStatus", element.getWorkflowStatusElement(), new ArtifactAssessment.ArtifactAssessmentWorkflowStatusEnumFactory());
35574    if (element.hasDispositionElement())
35575      composeEnumeration("disposition", element.getDispositionElement(), new ArtifactAssessment.ArtifactAssessmentDispositionEnumFactory());
35576  }
35577
35578  protected void composeArtifactAssessmentContentComponent(String name, ArtifactAssessment.ArtifactAssessmentContentComponent element) throws IOException {
35579    if (element != null) {
35580    composeElementAttributes(element);
35581      xml.enter(FHIR_NS, name);
35582      composeArtifactAssessmentContentComponentElements(element);
35583      composeElementClose(element);
35584      xml.exit(FHIR_NS, name);
35585    }
35586  }
35587
35588  protected void composeArtifactAssessmentContentComponentElements(ArtifactAssessment.ArtifactAssessmentContentComponent element) throws IOException {
35589    composeBackboneElementElements(element);
35590    if (element.hasInformationTypeElement())
35591      composeEnumeration("informationType", element.getInformationTypeElement(), new ArtifactAssessment.ArtifactAssessmentInformationTypeEnumFactory());
35592    if (element.hasSummaryElement()) {
35593      composeMarkdown("summary", element.getSummaryElement());
35594    }
35595    if (element.hasType()) {
35596      composeCodeableConcept("type", element.getType());
35597    }
35598    if (element.hasClassifier()) { 
35599      for (CodeableConcept e : element.getClassifier()) 
35600          composeCodeableConcept("classifier", e);
35601    }
35602    if (element.hasQuantity()) {
35603      composeQuantity("quantity", element.getQuantity());
35604    }
35605    if (element.hasAuthor()) {
35606      composeReference("author", element.getAuthor());
35607    }
35608    if (element.hasPath()) { 
35609      for (UriType e : element.getPath()) 
35610          composeUri("path", e);
35611    }
35612    if (element.hasRelatedArtifact()) { 
35613      for (RelatedArtifact e : element.getRelatedArtifact()) 
35614          composeRelatedArtifact("relatedArtifact", e);
35615    }
35616    if (element.hasFreeToShareElement()) {
35617      composeBoolean("freeToShare", element.getFreeToShareElement());
35618    }
35619    if (element.hasComponent()) { 
35620      for (ArtifactAssessment.ArtifactAssessmentContentComponent e : element.getComponent()) 
35621          composeArtifactAssessmentContentComponent("component", e);
35622    }
35623  }
35624
35625  protected void composeAuditEvent(String name, AuditEvent element) throws IOException {
35626    if (element != null) {
35627    composeResourceAttributes(element);
35628      xml.enter(FHIR_NS, name);
35629      composeAuditEventElements(element);
35630      composeElementClose(element);
35631      xml.exit(FHIR_NS, name);
35632    }
35633  }
35634
35635  protected void composeAuditEventElements(AuditEvent element) throws IOException {
35636    composeDomainResourceElements(element);
35637    if (element.hasCategory()) { 
35638      for (CodeableConcept e : element.getCategory()) 
35639          composeCodeableConcept("category", e);
35640    }
35641    if (element.hasCode()) {
35642      composeCodeableConcept("code", element.getCode());
35643    }
35644    if (element.hasActionElement())
35645      composeEnumeration("action", element.getActionElement(), new AuditEvent.AuditEventActionEnumFactory());
35646    if (element.hasSeverityElement())
35647      composeEnumeration("severity", element.getSeverityElement(), new AuditEvent.AuditEventSeverityEnumFactory());
35648    if (element.hasOccurred()) {
35649      composeType("occurred", element.getOccurred());
35650    }    if (element.hasRecordedElement()) {
35651      composeInstant("recorded", element.getRecordedElement());
35652    }
35653    if (element.hasOutcome()) {
35654      composeAuditEventOutcomeComponent("outcome", element.getOutcome());
35655    }
35656    if (element.hasAuthorization()) { 
35657      for (CodeableConcept e : element.getAuthorization()) 
35658          composeCodeableConcept("authorization", e);
35659    }
35660    if (element.hasBasedOn()) { 
35661      for (Reference e : element.getBasedOn()) 
35662          composeReference("basedOn", e);
35663    }
35664    if (element.hasPatient()) {
35665      composeReference("patient", element.getPatient());
35666    }
35667    if (element.hasEncounter()) {
35668      composeReference("encounter", element.getEncounter());
35669    }
35670    if (element.hasAgent()) { 
35671      for (AuditEvent.AuditEventAgentComponent e : element.getAgent()) 
35672          composeAuditEventAgentComponent("agent", e);
35673    }
35674    if (element.hasSource()) {
35675      composeAuditEventSourceComponent("source", element.getSource());
35676    }
35677    if (element.hasEntity()) { 
35678      for (AuditEvent.AuditEventEntityComponent e : element.getEntity()) 
35679          composeAuditEventEntityComponent("entity", e);
35680    }
35681  }
35682
35683  protected void composeAuditEventOutcomeComponent(String name, AuditEvent.AuditEventOutcomeComponent element) throws IOException {
35684    if (element != null) {
35685    composeElementAttributes(element);
35686      xml.enter(FHIR_NS, name);
35687      composeAuditEventOutcomeComponentElements(element);
35688      composeElementClose(element);
35689      xml.exit(FHIR_NS, name);
35690    }
35691  }
35692
35693  protected void composeAuditEventOutcomeComponentElements(AuditEvent.AuditEventOutcomeComponent element) throws IOException {
35694    composeBackboneElementElements(element);
35695    if (element.hasCode()) {
35696      composeCoding("code", element.getCode());
35697    }
35698    if (element.hasDetail()) { 
35699      for (CodeableConcept e : element.getDetail()) 
35700          composeCodeableConcept("detail", e);
35701    }
35702  }
35703
35704  protected void composeAuditEventAgentComponent(String name, AuditEvent.AuditEventAgentComponent element) throws IOException {
35705    if (element != null) {
35706    composeElementAttributes(element);
35707      xml.enter(FHIR_NS, name);
35708      composeAuditEventAgentComponentElements(element);
35709      composeElementClose(element);
35710      xml.exit(FHIR_NS, name);
35711    }
35712  }
35713
35714  protected void composeAuditEventAgentComponentElements(AuditEvent.AuditEventAgentComponent element) throws IOException {
35715    composeBackboneElementElements(element);
35716    if (element.hasType()) {
35717      composeCodeableConcept("type", element.getType());
35718    }
35719    if (element.hasRole()) { 
35720      for (CodeableConcept e : element.getRole()) 
35721          composeCodeableConcept("role", e);
35722    }
35723    if (element.hasWho()) {
35724      composeReference("who", element.getWho());
35725    }
35726    if (element.hasRequestorElement()) {
35727      composeBoolean("requestor", element.getRequestorElement());
35728    }
35729    if (element.hasLocation()) {
35730      composeReference("location", element.getLocation());
35731    }
35732    if (element.hasPolicy()) { 
35733      for (UriType e : element.getPolicy()) 
35734          composeUri("policy", e);
35735    }
35736    if (element.hasNetwork()) {
35737      composeType("network", element.getNetwork());
35738    }    if (element.hasAuthorization()) { 
35739      for (CodeableConcept e : element.getAuthorization()) 
35740          composeCodeableConcept("authorization", e);
35741    }
35742  }
35743
35744  protected void composeAuditEventSourceComponent(String name, AuditEvent.AuditEventSourceComponent element) throws IOException {
35745    if (element != null) {
35746    composeElementAttributes(element);
35747      xml.enter(FHIR_NS, name);
35748      composeAuditEventSourceComponentElements(element);
35749      composeElementClose(element);
35750      xml.exit(FHIR_NS, name);
35751    }
35752  }
35753
35754  protected void composeAuditEventSourceComponentElements(AuditEvent.AuditEventSourceComponent element) throws IOException {
35755    composeBackboneElementElements(element);
35756    if (element.hasSite()) {
35757      composeReference("site", element.getSite());
35758    }
35759    if (element.hasObserver()) {
35760      composeReference("observer", element.getObserver());
35761    }
35762    if (element.hasType()) { 
35763      for (CodeableConcept e : element.getType()) 
35764          composeCodeableConcept("type", e);
35765    }
35766  }
35767
35768  protected void composeAuditEventEntityComponent(String name, AuditEvent.AuditEventEntityComponent element) throws IOException {
35769    if (element != null) {
35770    composeElementAttributes(element);
35771      xml.enter(FHIR_NS, name);
35772      composeAuditEventEntityComponentElements(element);
35773      composeElementClose(element);
35774      xml.exit(FHIR_NS, name);
35775    }
35776  }
35777
35778  protected void composeAuditEventEntityComponentElements(AuditEvent.AuditEventEntityComponent element) throws IOException {
35779    composeBackboneElementElements(element);
35780    if (element.hasWhat()) {
35781      composeReference("what", element.getWhat());
35782    }
35783    if (element.hasRole()) {
35784      composeCodeableConcept("role", element.getRole());
35785    }
35786    if (element.hasSecurityLabel()) { 
35787      for (CodeableConcept e : element.getSecurityLabel()) 
35788          composeCodeableConcept("securityLabel", e);
35789    }
35790    if (element.hasQueryElement()) {
35791      composeBase64Binary("query", element.getQueryElement());
35792    }
35793    if (element.hasDetail()) { 
35794      for (AuditEvent.AuditEventEntityDetailComponent e : element.getDetail()) 
35795          composeAuditEventEntityDetailComponent("detail", e);
35796    }
35797    if (element.hasAgent()) { 
35798      for (AuditEvent.AuditEventAgentComponent e : element.getAgent()) 
35799          composeAuditEventAgentComponent("agent", e);
35800    }
35801  }
35802
35803  protected void composeAuditEventEntityDetailComponent(String name, AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
35804    if (element != null) {
35805    composeElementAttributes(element);
35806      xml.enter(FHIR_NS, name);
35807      composeAuditEventEntityDetailComponentElements(element);
35808      composeElementClose(element);
35809      xml.exit(FHIR_NS, name);
35810    }
35811  }
35812
35813  protected void composeAuditEventEntityDetailComponentElements(AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
35814    composeBackboneElementElements(element);
35815    if (element.hasType()) {
35816      composeCodeableConcept("type", element.getType());
35817    }
35818    if (element.hasValue()) {
35819      composeType("value", element.getValue());
35820    }  }
35821
35822  protected void composeBasic(String name, Basic element) throws IOException {
35823    if (element != null) {
35824    composeResourceAttributes(element);
35825      xml.enter(FHIR_NS, name);
35826      composeBasicElements(element);
35827      composeElementClose(element);
35828      xml.exit(FHIR_NS, name);
35829    }
35830  }
35831
35832  protected void composeBasicElements(Basic element) throws IOException {
35833    composeDomainResourceElements(element);
35834    if (element.hasIdentifier()) { 
35835      for (Identifier e : element.getIdentifier()) 
35836          composeIdentifier("identifier", e);
35837    }
35838    if (element.hasCode()) {
35839      composeCodeableConcept("code", element.getCode());
35840    }
35841    if (element.hasSubject()) {
35842      composeReference("subject", element.getSubject());
35843    }
35844    if (element.hasCreatedElement()) {
35845      composeDateTime("created", element.getCreatedElement());
35846    }
35847    if (element.hasAuthor()) {
35848      composeReference("author", element.getAuthor());
35849    }
35850  }
35851
35852  protected void composeBinary(String name, Binary element) throws IOException {
35853    if (element != null) {
35854    composeResourceAttributes(element);
35855      xml.enter(FHIR_NS, name);
35856      composeBinaryElements(element);
35857      composeElementClose(element);
35858      xml.exit(FHIR_NS, name);
35859    }
35860  }
35861
35862  protected void composeBinaryElements(Binary element) throws IOException {
35863    composeResourceElements(element);
35864    if (element.hasContentTypeElement()) {
35865      composeCode("contentType", element.getContentTypeElement());
35866    }
35867    if (element.hasSecurityContext()) {
35868      composeReference("securityContext", element.getSecurityContext());
35869    }
35870    if (element.hasDataElement()) {
35871      composeBase64Binary("data", element.getDataElement());
35872    }
35873  }
35874
35875  protected void composeBiologicallyDerivedProduct(String name, BiologicallyDerivedProduct element) throws IOException {
35876    if (element != null) {
35877    composeResourceAttributes(element);
35878      xml.enter(FHIR_NS, name);
35879      composeBiologicallyDerivedProductElements(element);
35880      composeElementClose(element);
35881      xml.exit(FHIR_NS, name);
35882    }
35883  }
35884
35885  protected void composeBiologicallyDerivedProductElements(BiologicallyDerivedProduct element) throws IOException {
35886    composeDomainResourceElements(element);
35887    if (element.hasProductCategory()) {
35888      composeCoding("productCategory", element.getProductCategory());
35889    }
35890    if (element.hasProductCode()) {
35891      composeCodeableConcept("productCode", element.getProductCode());
35892    }
35893    if (element.hasParent()) { 
35894      for (Reference e : element.getParent()) 
35895          composeReference("parent", e);
35896    }
35897    if (element.hasRequest()) { 
35898      for (Reference e : element.getRequest()) 
35899          composeReference("request", e);
35900    }
35901    if (element.hasIdentifier()) { 
35902      for (Identifier e : element.getIdentifier()) 
35903          composeIdentifier("identifier", e);
35904    }
35905    if (element.hasBiologicalSourceEvent()) {
35906      composeIdentifier("biologicalSourceEvent", element.getBiologicalSourceEvent());
35907    }
35908    if (element.hasProcessingFacility()) { 
35909      for (Reference e : element.getProcessingFacility()) 
35910          composeReference("processingFacility", e);
35911    }
35912    if (element.hasDivisionElement()) {
35913      composeString("division", element.getDivisionElement());
35914    }
35915    if (element.hasProductStatus()) {
35916      composeCoding("productStatus", element.getProductStatus());
35917    }
35918    if (element.hasExpirationDateElement()) {
35919      composeDateTime("expirationDate", element.getExpirationDateElement());
35920    }
35921    if (element.hasCollection()) {
35922      composeBiologicallyDerivedProductCollectionComponent("collection", element.getCollection());
35923    }
35924    if (element.hasStorageTempRequirements()) {
35925      composeRange("storageTempRequirements", element.getStorageTempRequirements());
35926    }
35927    if (element.hasProperty()) { 
35928      for (BiologicallyDerivedProduct.BiologicallyDerivedProductPropertyComponent e : element.getProperty()) 
35929          composeBiologicallyDerivedProductPropertyComponent("property", e);
35930    }
35931  }
35932
35933  protected void composeBiologicallyDerivedProductCollectionComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent element) throws IOException {
35934    if (element != null) {
35935    composeElementAttributes(element);
35936      xml.enter(FHIR_NS, name);
35937      composeBiologicallyDerivedProductCollectionComponentElements(element);
35938      composeElementClose(element);
35939      xml.exit(FHIR_NS, name);
35940    }
35941  }
35942
35943  protected void composeBiologicallyDerivedProductCollectionComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent element) throws IOException {
35944    composeBackboneElementElements(element);
35945    if (element.hasCollector()) {
35946      composeReference("collector", element.getCollector());
35947    }
35948    if (element.hasSource()) {
35949      composeReference("source", element.getSource());
35950    }
35951    if (element.hasCollected()) {
35952      composeType("collected", element.getCollected());
35953    }  }
35954
35955  protected void composeBiologicallyDerivedProductPropertyComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductPropertyComponent element) throws IOException {
35956    if (element != null) {
35957    composeElementAttributes(element);
35958      xml.enter(FHIR_NS, name);
35959      composeBiologicallyDerivedProductPropertyComponentElements(element);
35960      composeElementClose(element);
35961      xml.exit(FHIR_NS, name);
35962    }
35963  }
35964
35965  protected void composeBiologicallyDerivedProductPropertyComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductPropertyComponent element) throws IOException {
35966    composeBackboneElementElements(element);
35967    if (element.hasType()) {
35968      composeCodeableConcept("type", element.getType());
35969    }
35970    if (element.hasValue()) {
35971      composeType("value", element.getValue());
35972    }  }
35973
35974  protected void composeBiologicallyDerivedProductDispense(String name, BiologicallyDerivedProductDispense element) throws IOException {
35975    if (element != null) {
35976    composeResourceAttributes(element);
35977      xml.enter(FHIR_NS, name);
35978      composeBiologicallyDerivedProductDispenseElements(element);
35979      composeElementClose(element);
35980      xml.exit(FHIR_NS, name);
35981    }
35982  }
35983
35984  protected void composeBiologicallyDerivedProductDispenseElements(BiologicallyDerivedProductDispense element) throws IOException {
35985    composeDomainResourceElements(element);
35986    if (element.hasIdentifier()) { 
35987      for (Identifier e : element.getIdentifier()) 
35988          composeIdentifier("identifier", e);
35989    }
35990    if (element.hasBasedOn()) { 
35991      for (Reference e : element.getBasedOn()) 
35992          composeReference("basedOn", e);
35993    }
35994    if (element.hasPartOf()) { 
35995      for (Reference e : element.getPartOf()) 
35996          composeReference("partOf", e);
35997    }
35998    if (element.hasStatusElement())
35999      composeEnumeration("status", element.getStatusElement(), new BiologicallyDerivedProductDispense.BiologicallyDerivedProductDispenseCodesEnumFactory());
36000    if (element.hasOriginRelationshipType()) {
36001      composeCodeableConcept("originRelationshipType", element.getOriginRelationshipType());
36002    }
36003    if (element.hasProduct()) {
36004      composeReference("product", element.getProduct());
36005    }
36006    if (element.hasPatient()) {
36007      composeReference("patient", element.getPatient());
36008    }
36009    if (element.hasMatchStatus()) {
36010      composeCodeableConcept("matchStatus", element.getMatchStatus());
36011    }
36012    if (element.hasPerformer()) { 
36013      for (BiologicallyDerivedProductDispense.BiologicallyDerivedProductDispensePerformerComponent e : element.getPerformer()) 
36014          composeBiologicallyDerivedProductDispensePerformerComponent("performer", e);
36015    }
36016    if (element.hasLocation()) {
36017      composeReference("location", element.getLocation());
36018    }
36019    if (element.hasQuantity()) {
36020      composeQuantity("quantity", element.getQuantity());
36021    }
36022    if (element.hasPreparedDateElement()) {
36023      composeDateTime("preparedDate", element.getPreparedDateElement());
36024    }
36025    if (element.hasWhenHandedOverElement()) {
36026      composeDateTime("whenHandedOver", element.getWhenHandedOverElement());
36027    }
36028    if (element.hasDestination()) {
36029      composeReference("destination", element.getDestination());
36030    }
36031    if (element.hasNote()) { 
36032      for (Annotation e : element.getNote()) 
36033          composeAnnotation("note", e);
36034    }
36035    if (element.hasUsageInstructionElement()) {
36036      composeString("usageInstruction", element.getUsageInstructionElement());
36037    }
36038  }
36039
36040  protected void composeBiologicallyDerivedProductDispensePerformerComponent(String name, BiologicallyDerivedProductDispense.BiologicallyDerivedProductDispensePerformerComponent element) throws IOException {
36041    if (element != null) {
36042    composeElementAttributes(element);
36043      xml.enter(FHIR_NS, name);
36044      composeBiologicallyDerivedProductDispensePerformerComponentElements(element);
36045      composeElementClose(element);
36046      xml.exit(FHIR_NS, name);
36047    }
36048  }
36049
36050  protected void composeBiologicallyDerivedProductDispensePerformerComponentElements(BiologicallyDerivedProductDispense.BiologicallyDerivedProductDispensePerformerComponent element) throws IOException {
36051    composeBackboneElementElements(element);
36052    if (element.hasFunction()) {
36053      composeCodeableConcept("function", element.getFunction());
36054    }
36055    if (element.hasActor()) {
36056      composeReference("actor", element.getActor());
36057    }
36058  }
36059
36060  protected void composeBodyStructure(String name, BodyStructure element) throws IOException {
36061    if (element != null) {
36062    composeResourceAttributes(element);
36063      xml.enter(FHIR_NS, name);
36064      composeBodyStructureElements(element);
36065      composeElementClose(element);
36066      xml.exit(FHIR_NS, name);
36067    }
36068  }
36069
36070  protected void composeBodyStructureElements(BodyStructure element) throws IOException {
36071    composeDomainResourceElements(element);
36072    if (element.hasIdentifier()) { 
36073      for (Identifier e : element.getIdentifier()) 
36074          composeIdentifier("identifier", e);
36075    }
36076    if (element.hasActiveElement()) {
36077      composeBoolean("active", element.getActiveElement());
36078    }
36079    if (element.hasMorphology()) {
36080      composeCodeableConcept("morphology", element.getMorphology());
36081    }
36082    if (element.hasIncludedStructure()) { 
36083      for (BodyStructure.BodyStructureIncludedStructureComponent e : element.getIncludedStructure()) 
36084          composeBodyStructureIncludedStructureComponent("includedStructure", e);
36085    }
36086    if (element.hasExcludedStructure()) { 
36087      for (BodyStructure.BodyStructureIncludedStructureComponent e : element.getExcludedStructure()) 
36088          composeBodyStructureIncludedStructureComponent("excludedStructure", e);
36089    }
36090    if (element.hasDescriptionElement()) {
36091      composeMarkdown("description", element.getDescriptionElement());
36092    }
36093    if (element.hasImage()) { 
36094      for (Attachment e : element.getImage()) 
36095          composeAttachment("image", e);
36096    }
36097    if (element.hasPatient()) {
36098      composeReference("patient", element.getPatient());
36099    }
36100  }
36101
36102  protected void composeBodyStructureIncludedStructureComponent(String name, BodyStructure.BodyStructureIncludedStructureComponent element) throws IOException {
36103    if (element != null) {
36104    composeElementAttributes(element);
36105      xml.enter(FHIR_NS, name);
36106      composeBodyStructureIncludedStructureComponentElements(element);
36107      composeElementClose(element);
36108      xml.exit(FHIR_NS, name);
36109    }
36110  }
36111
36112  protected void composeBodyStructureIncludedStructureComponentElements(BodyStructure.BodyStructureIncludedStructureComponent element) throws IOException {
36113    composeBackboneElementElements(element);
36114    if (element.hasStructure()) {
36115      composeCodeableConcept("structure", element.getStructure());
36116    }
36117    if (element.hasLaterality()) {
36118      composeCodeableConcept("laterality", element.getLaterality());
36119    }
36120    if (element.hasBodyLandmarkOrientation()) { 
36121      for (BodyStructure.BodyStructureIncludedStructureBodyLandmarkOrientationComponent e : element.getBodyLandmarkOrientation()) 
36122          composeBodyStructureIncludedStructureBodyLandmarkOrientationComponent("bodyLandmarkOrientation", e);
36123    }
36124    if (element.hasSpatialReference()) { 
36125      for (Reference e : element.getSpatialReference()) 
36126          composeReference("spatialReference", e);
36127    }
36128    if (element.hasQualifier()) { 
36129      for (CodeableConcept e : element.getQualifier()) 
36130          composeCodeableConcept("qualifier", e);
36131    }
36132  }
36133
36134  protected void composeBodyStructureIncludedStructureBodyLandmarkOrientationComponent(String name, BodyStructure.BodyStructureIncludedStructureBodyLandmarkOrientationComponent element) throws IOException {
36135    if (element != null) {
36136    composeElementAttributes(element);
36137      xml.enter(FHIR_NS, name);
36138      composeBodyStructureIncludedStructureBodyLandmarkOrientationComponentElements(element);
36139      composeElementClose(element);
36140      xml.exit(FHIR_NS, name);
36141    }
36142  }
36143
36144  protected void composeBodyStructureIncludedStructureBodyLandmarkOrientationComponentElements(BodyStructure.BodyStructureIncludedStructureBodyLandmarkOrientationComponent element) throws IOException {
36145    composeBackboneElementElements(element);
36146    if (element.hasLandmarkDescription()) { 
36147      for (CodeableConcept e : element.getLandmarkDescription()) 
36148          composeCodeableConcept("landmarkDescription", e);
36149    }
36150    if (element.hasClockFacePosition()) { 
36151      for (CodeableConcept e : element.getClockFacePosition()) 
36152          composeCodeableConcept("clockFacePosition", e);
36153    }
36154    if (element.hasDistanceFromLandmark()) { 
36155      for (BodyStructure.BodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponent e : element.getDistanceFromLandmark()) 
36156          composeBodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponent("distanceFromLandmark", e);
36157    }
36158    if (element.hasSurfaceOrientation()) { 
36159      for (CodeableConcept e : element.getSurfaceOrientation()) 
36160          composeCodeableConcept("surfaceOrientation", e);
36161    }
36162  }
36163
36164  protected void composeBodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponent(String name, BodyStructure.BodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponent element) throws IOException {
36165    if (element != null) {
36166    composeElementAttributes(element);
36167      xml.enter(FHIR_NS, name);
36168      composeBodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponentElements(element);
36169      composeElementClose(element);
36170      xml.exit(FHIR_NS, name);
36171    }
36172  }
36173
36174  protected void composeBodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponentElements(BodyStructure.BodyStructureIncludedStructureBodyLandmarkOrientationDistanceFromLandmarkComponent element) throws IOException {
36175    composeBackboneElementElements(element);
36176    if (element.hasDevice()) { 
36177      for (CodeableReference e : element.getDevice()) 
36178          composeCodeableReference("device", e);
36179    }
36180    if (element.hasValue()) { 
36181      for (Quantity e : element.getValue()) 
36182          composeQuantity("value", e);
36183    }
36184  }
36185
36186  protected void composeBundle(String name, Bundle element) throws IOException {
36187    if (element != null) {
36188    composeResourceAttributes(element);
36189      xml.enter(FHIR_NS, name);
36190      composeBundleElements(element);
36191      composeElementClose(element);
36192      xml.exit(FHIR_NS, name);
36193    }
36194  }
36195
36196  protected void composeBundleElements(Bundle element) throws IOException {
36197    composeResourceElements(element);
36198    if (element.hasIdentifier()) {
36199      composeIdentifier("identifier", element.getIdentifier());
36200    }
36201    if (element.hasTypeElement())
36202      composeEnumeration("type", element.getTypeElement(), new Bundle.BundleTypeEnumFactory());
36203    if (element.hasTimestampElement()) {
36204      composeInstant("timestamp", element.getTimestampElement());
36205    }
36206    if (element.hasTotalElement()) {
36207      composeUnsignedInt("total", element.getTotalElement());
36208    }
36209    if (element.hasLink()) { 
36210      for (Bundle.BundleLinkComponent e : element.getLink()) 
36211          composeBundleLinkComponent("link", e);
36212    }
36213    if (element.hasEntry()) { 
36214      for (Bundle.BundleEntryComponent e : element.getEntry()) 
36215          composeBundleEntryComponent("entry", e);
36216    }
36217    if (element.hasSignature()) {
36218      composeSignature("signature", element.getSignature());
36219    }
36220    if (element.hasIssues()) {
36221      xml.enter(FHIR_NS, "issues");
36222      composeResource(element.getIssues());
36223      xml.exit(FHIR_NS, "issues");
36224    }
36225  }
36226
36227  protected void composeBundleLinkComponent(String name, Bundle.BundleLinkComponent element) throws IOException {
36228    if (element != null) {
36229    composeElementAttributes(element);
36230      xml.enter(FHIR_NS, name);
36231      composeBundleLinkComponentElements(element);
36232      composeElementClose(element);
36233      xml.exit(FHIR_NS, name);
36234    }
36235  }
36236
36237  protected void composeBundleLinkComponentElements(Bundle.BundleLinkComponent element) throws IOException {
36238    composeBackboneElementElements(element);
36239    if (element.hasRelationElement())
36240      composeEnumeration("relation", element.getRelationElement(), new Bundle.LinkRelationTypesEnumFactory());
36241    if (element.hasUrlElement()) {
36242      composeUri("url", element.getUrlElement());
36243    }
36244  }
36245
36246  protected void composeBundleEntryComponent(String name, Bundle.BundleEntryComponent element) throws IOException {
36247    if (element != null) {
36248    composeElementAttributes(element);
36249      xml.enter(FHIR_NS, name);
36250      composeBundleEntryComponentElements(element);
36251      composeElementClose(element);
36252      xml.exit(FHIR_NS, name);
36253    }
36254  }
36255
36256  protected void composeBundleEntryComponentElements(Bundle.BundleEntryComponent element) throws IOException {
36257    composeBackboneElementElements(element);
36258    if (element.hasLink()) { 
36259      for (Bundle.BundleLinkComponent e : element.getLink()) 
36260          composeBundleLinkComponent("link", e);
36261    }
36262    if (element.hasFullUrlElement()) {
36263      composeUri("fullUrl", element.getFullUrlElement());
36264    }
36265    if (element.hasResource()) {
36266      xml.enter(FHIR_NS, "resource");
36267      composeResource(element.getResource());
36268      xml.exit(FHIR_NS, "resource");
36269    }
36270    if (element.hasSearch()) {
36271      composeBundleEntrySearchComponent("search", element.getSearch());
36272    }
36273    if (element.hasRequest()) {
36274      composeBundleEntryRequestComponent("request", element.getRequest());
36275    }
36276    if (element.hasResponse()) {
36277      composeBundleEntryResponseComponent("response", element.getResponse());
36278    }
36279  }
36280
36281  protected void composeBundleEntrySearchComponent(String name, Bundle.BundleEntrySearchComponent element) throws IOException {
36282    if (element != null) {
36283    composeElementAttributes(element);
36284      xml.enter(FHIR_NS, name);
36285      composeBundleEntrySearchComponentElements(element);
36286      composeElementClose(element);
36287      xml.exit(FHIR_NS, name);
36288    }
36289  }
36290
36291  protected void composeBundleEntrySearchComponentElements(Bundle.BundleEntrySearchComponent element) throws IOException {
36292    composeBackboneElementElements(element);
36293    if (element.hasModeElement())
36294      composeEnumeration("mode", element.getModeElement(), new Bundle.SearchEntryModeEnumFactory());
36295    if (element.hasScoreElement()) {
36296      composeDecimal("score", element.getScoreElement());
36297    }
36298  }
36299
36300  protected void composeBundleEntryRequestComponent(String name, Bundle.BundleEntryRequestComponent element) throws IOException {
36301    if (element != null) {
36302    composeElementAttributes(element);
36303      xml.enter(FHIR_NS, name);
36304      composeBundleEntryRequestComponentElements(element);
36305      composeElementClose(element);
36306      xml.exit(FHIR_NS, name);
36307    }
36308  }
36309
36310  protected void composeBundleEntryRequestComponentElements(Bundle.BundleEntryRequestComponent element) throws IOException {
36311    composeBackboneElementElements(element);
36312    if (element.hasMethodElement())
36313      composeEnumeration("method", element.getMethodElement(), new Bundle.HTTPVerbEnumFactory());
36314    if (element.hasUrlElement()) {
36315      composeUri("url", element.getUrlElement());
36316    }
36317    if (element.hasIfNoneMatchElement()) {
36318      composeString("ifNoneMatch", element.getIfNoneMatchElement());
36319    }
36320    if (element.hasIfModifiedSinceElement()) {
36321      composeInstant("ifModifiedSince", element.getIfModifiedSinceElement());
36322    }
36323    if (element.hasIfMatchElement()) {
36324      composeString("ifMatch", element.getIfMatchElement());
36325    }
36326    if (element.hasIfNoneExistElement()) {
36327      composeString("ifNoneExist", element.getIfNoneExistElement());
36328    }
36329  }
36330
36331  protected void composeBundleEntryResponseComponent(String name, Bundle.BundleEntryResponseComponent element) throws IOException {
36332    if (element != null) {
36333    composeElementAttributes(element);
36334      xml.enter(FHIR_NS, name);
36335      composeBundleEntryResponseComponentElements(element);
36336      composeElementClose(element);
36337      xml.exit(FHIR_NS, name);
36338    }
36339  }
36340
36341  protected void composeBundleEntryResponseComponentElements(Bundle.BundleEntryResponseComponent element) throws IOException {
36342    composeBackboneElementElements(element);
36343    if (element.hasStatusElement()) {
36344      composeString("status", element.getStatusElement());
36345    }
36346    if (element.hasLocationElement()) {
36347      composeUri("location", element.getLocationElement());
36348    }
36349    if (element.hasEtagElement()) {
36350      composeString("etag", element.getEtagElement());
36351    }
36352    if (element.hasLastModifiedElement()) {
36353      composeInstant("lastModified", element.getLastModifiedElement());
36354    }
36355    if (element.hasOutcome()) {
36356      xml.enter(FHIR_NS, "outcome");
36357      composeResource(element.getOutcome());
36358      xml.exit(FHIR_NS, "outcome");
36359    }
36360  }
36361
36362  protected void composeCapabilityStatement(String name, CapabilityStatement element) throws IOException {
36363    if (element != null) {
36364    composeResourceAttributes(element);
36365      xml.enter(FHIR_NS, name);
36366      composeCapabilityStatementElements(element);
36367      composeElementClose(element);
36368      xml.exit(FHIR_NS, name);
36369    }
36370  }
36371
36372  protected void composeCapabilityStatementElements(CapabilityStatement element) throws IOException {
36373    composeCanonicalResourceElements(element);
36374    if (element.hasUrlElement()) {
36375      composeUri("url", element.getUrlElement());
36376    }
36377    if (element.hasIdentifier()) { 
36378      for (Identifier e : element.getIdentifier()) 
36379          composeIdentifier("identifier", e);
36380    }
36381    if (element.hasVersionElement()) {
36382      composeString("version", element.getVersionElement());
36383    }
36384    if (element.hasVersionAlgorithm()) {
36385      composeType("versionAlgorithm", element.getVersionAlgorithm());
36386    }    if (element.hasNameElement()) {
36387      composeString("name", element.getNameElement());
36388    }
36389    if (element.hasTitleElement()) {
36390      composeString("title", element.getTitleElement());
36391    }
36392    if (element.hasStatusElement())
36393      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
36394    if (element.hasExperimentalElement()) {
36395      composeBoolean("experimental", element.getExperimentalElement());
36396    }
36397    if (element.hasDateElement()) {
36398      composeDateTime("date", element.getDateElement());
36399    }
36400    if (element.hasPublisherElement()) {
36401      composeString("publisher", element.getPublisherElement());
36402    }
36403    if (element.hasContact()) { 
36404      for (ContactDetail e : element.getContact()) 
36405          composeContactDetail("contact", e);
36406    }
36407    if (element.hasDescriptionElement()) {
36408      composeMarkdown("description", element.getDescriptionElement());
36409    }
36410    if (element.hasUseContext()) { 
36411      for (UsageContext e : element.getUseContext()) 
36412          composeUsageContext("useContext", e);
36413    }
36414    if (element.hasJurisdiction()) { 
36415      for (CodeableConcept e : element.getJurisdiction()) 
36416          composeCodeableConcept("jurisdiction", e);
36417    }
36418    if (element.hasPurposeElement()) {
36419      composeMarkdown("purpose", element.getPurposeElement());
36420    }
36421    if (element.hasCopyrightElement()) {
36422      composeMarkdown("copyright", element.getCopyrightElement());
36423    }
36424    if (element.hasCopyrightLabelElement()) {
36425      composeString("copyrightLabel", element.getCopyrightLabelElement());
36426    }
36427    if (element.hasKindElement())
36428      composeEnumeration("kind", element.getKindElement(), new Enumerations.CapabilityStatementKindEnumFactory());
36429    if (element.hasInstantiates()) { 
36430      for (CanonicalType e : element.getInstantiates()) 
36431          composeCanonical("instantiates", e);
36432    }
36433    if (element.hasImports()) { 
36434      for (CanonicalType e : element.getImports()) 
36435          composeCanonical("imports", e);
36436    }
36437    if (element.hasSoftware()) {
36438      composeCapabilityStatementSoftwareComponent("software", element.getSoftware());
36439    }
36440    if (element.hasImplementation()) {
36441      composeCapabilityStatementImplementationComponent("implementation", element.getImplementation());
36442    }
36443    if (element.hasFhirVersionElement())
36444      composeEnumeration("fhirVersion", element.getFhirVersionElement(), new Enumerations.FHIRVersionEnumFactory());
36445    if (element.hasFormat()) { 
36446      for (CodeType e : element.getFormat()) 
36447          composeCode("format", e);
36448    }
36449    if (element.hasPatchFormat()) { 
36450      for (CodeType e : element.getPatchFormat()) 
36451          composeCode("patchFormat", e);
36452    }
36453    if (element.hasAcceptLanguage()) { 
36454      for (CodeType e : element.getAcceptLanguage()) 
36455          composeCode("acceptLanguage", e);
36456    }
36457    if (element.hasImplementationGuide()) { 
36458      for (CanonicalType e : element.getImplementationGuide()) 
36459          composeCanonical("implementationGuide", e);
36460    }
36461    if (element.hasRest()) { 
36462      for (CapabilityStatement.CapabilityStatementRestComponent e : element.getRest()) 
36463          composeCapabilityStatementRestComponent("rest", e);
36464    }
36465    if (element.hasMessaging()) { 
36466      for (CapabilityStatement.CapabilityStatementMessagingComponent e : element.getMessaging()) 
36467          composeCapabilityStatementMessagingComponent("messaging", e);
36468    }
36469    if (element.hasDocument()) { 
36470      for (CapabilityStatement.CapabilityStatementDocumentComponent e : element.getDocument()) 
36471          composeCapabilityStatementDocumentComponent("document", e);
36472    }
36473  }
36474
36475  protected void composeCapabilityStatementSoftwareComponent(String name, CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
36476    if (element != null) {
36477    composeElementAttributes(element);
36478      xml.enter(FHIR_NS, name);
36479      composeCapabilityStatementSoftwareComponentElements(element);
36480      composeElementClose(element);
36481      xml.exit(FHIR_NS, name);
36482    }
36483  }
36484
36485  protected void composeCapabilityStatementSoftwareComponentElements(CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
36486    composeBackboneElementElements(element);
36487    if (element.hasNameElement()) {
36488      composeString("name", element.getNameElement());
36489    }
36490    if (element.hasVersionElement()) {
36491      composeString("version", element.getVersionElement());
36492    }
36493    if (element.hasReleaseDateElement()) {
36494      composeDateTime("releaseDate", element.getReleaseDateElement());
36495    }
36496  }
36497
36498  protected void composeCapabilityStatementImplementationComponent(String name, CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
36499    if (element != null) {
36500    composeElementAttributes(element);
36501      xml.enter(FHIR_NS, name);
36502      composeCapabilityStatementImplementationComponentElements(element);
36503      composeElementClose(element);
36504      xml.exit(FHIR_NS, name);
36505    }
36506  }
36507
36508  protected void composeCapabilityStatementImplementationComponentElements(CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
36509    composeBackboneElementElements(element);
36510    if (element.hasDescriptionElement()) {
36511      composeMarkdown("description", element.getDescriptionElement());
36512    }
36513    if (element.hasUrlElement()) {
36514      composeUrl("url", element.getUrlElement());
36515    }
36516    if (element.hasCustodian()) {
36517      composeReference("custodian", element.getCustodian());
36518    }
36519  }
36520
36521  protected void composeCapabilityStatementRestComponent(String name, CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
36522    if (element != null) {
36523    composeElementAttributes(element);
36524      xml.enter(FHIR_NS, name);
36525      composeCapabilityStatementRestComponentElements(element);
36526      composeElementClose(element);
36527      xml.exit(FHIR_NS, name);
36528    }
36529  }
36530
36531  protected void composeCapabilityStatementRestComponentElements(CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
36532    composeBackboneElementElements(element);
36533    if (element.hasModeElement())
36534      composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.RestfulCapabilityModeEnumFactory());
36535    if (element.hasDocumentationElement()) {
36536      composeMarkdown("documentation", element.getDocumentationElement());
36537    }
36538    if (element.hasSecurity()) {
36539      composeCapabilityStatementRestSecurityComponent("security", element.getSecurity());
36540    }
36541    if (element.hasResource()) { 
36542      for (CapabilityStatement.CapabilityStatementRestResourceComponent e : element.getResource()) 
36543          composeCapabilityStatementRestResourceComponent("resource", e);
36544    }
36545    if (element.hasInteraction()) { 
36546      for (CapabilityStatement.SystemInteractionComponent e : element.getInteraction()) 
36547          composeCapabilityStatementSystemInteractionComponent("interaction", e);
36548    }
36549    if (element.hasSearchParam()) { 
36550      for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
36551          composeCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
36552    }
36553    if (element.hasOperation()) { 
36554      for (CapabilityStatement.CapabilityStatementRestResourceOperationComponent e : element.getOperation()) 
36555          composeCapabilityStatementRestResourceOperationComponent("operation", e);
36556    }
36557    if (element.hasCompartment()) { 
36558      for (CanonicalType e : element.getCompartment()) 
36559          composeCanonical("compartment", e);
36560    }
36561  }
36562
36563  protected void composeCapabilityStatementRestSecurityComponent(String name, CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
36564    if (element != null) {
36565    composeElementAttributes(element);
36566      xml.enter(FHIR_NS, name);
36567      composeCapabilityStatementRestSecurityComponentElements(element);
36568      composeElementClose(element);
36569      xml.exit(FHIR_NS, name);
36570    }
36571  }
36572
36573  protected void composeCapabilityStatementRestSecurityComponentElements(CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
36574    composeBackboneElementElements(element);
36575    if (element.hasCorsElement()) {
36576      composeBoolean("cors", element.getCorsElement());
36577    }
36578    if (element.hasService()) { 
36579      for (CodeableConcept e : element.getService()) 
36580          composeCodeableConcept("service", e);
36581    }
36582    if (element.hasDescriptionElement()) {
36583      composeMarkdown("description", element.getDescriptionElement());
36584    }
36585  }
36586
36587  protected void composeCapabilityStatementRestResourceComponent(String name, CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
36588    if (element != null) {
36589    composeElementAttributes(element);
36590      xml.enter(FHIR_NS, name);
36591      composeCapabilityStatementRestResourceComponentElements(element);
36592      composeElementClose(element);
36593      xml.exit(FHIR_NS, name);
36594    }
36595  }
36596
36597  protected void composeCapabilityStatementRestResourceComponentElements(CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
36598    composeBackboneElementElements(element);
36599    if (element.hasTypeElement()) {
36600      composeCode("type", element.getTypeElement());
36601    }
36602    if (element.hasProfileElement()) {
36603      composeCanonical("profile", element.getProfileElement());
36604    }
36605    if (element.hasSupportedProfile()) { 
36606      for (CanonicalType e : element.getSupportedProfile()) 
36607          composeCanonical("supportedProfile", e);
36608    }
36609    if (element.hasDocumentationElement()) {
36610      composeMarkdown("documentation", element.getDocumentationElement());
36611    }
36612    if (element.hasInteraction()) { 
36613      for (CapabilityStatement.ResourceInteractionComponent e : element.getInteraction()) 
36614          composeCapabilityStatementResourceInteractionComponent("interaction", e);
36615    }
36616    if (element.hasVersioningElement())
36617      composeEnumeration("versioning", element.getVersioningElement(), new CapabilityStatement.ResourceVersionPolicyEnumFactory());
36618    if (element.hasReadHistoryElement()) {
36619      composeBoolean("readHistory", element.getReadHistoryElement());
36620    }
36621    if (element.hasUpdateCreateElement()) {
36622      composeBoolean("updateCreate", element.getUpdateCreateElement());
36623    }
36624    if (element.hasConditionalCreateElement()) {
36625      composeBoolean("conditionalCreate", element.getConditionalCreateElement());
36626    }
36627    if (element.hasConditionalReadElement())
36628      composeEnumeration("conditionalRead", element.getConditionalReadElement(), new CapabilityStatement.ConditionalReadStatusEnumFactory());
36629    if (element.hasConditionalUpdateElement()) {
36630      composeBoolean("conditionalUpdate", element.getConditionalUpdateElement());
36631    }
36632    if (element.hasConditionalPatchElement()) {
36633      composeBoolean("conditionalPatch", element.getConditionalPatchElement());
36634    }
36635    if (element.hasConditionalDeleteElement())
36636      composeEnumeration("conditionalDelete", element.getConditionalDeleteElement(), new CapabilityStatement.ConditionalDeleteStatusEnumFactory());
36637      if (element.hasReferencePolicy()) 
36638        for (Enumeration<CapabilityStatement.ReferenceHandlingPolicy> e : element.getReferencePolicy()) 
36639          composeEnumeration("referencePolicy", e, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory());
36640    if (element.hasSearchInclude()) { 
36641      for (StringType e : element.getSearchInclude()) 
36642          composeString("searchInclude", e);
36643    }
36644    if (element.hasSearchRevInclude()) { 
36645      for (StringType e : element.getSearchRevInclude()) 
36646          composeString("searchRevInclude", e);
36647    }
36648    if (element.hasSearchParam()) { 
36649      for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
36650          composeCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
36651    }
36652    if (element.hasOperation()) { 
36653      for (CapabilityStatement.CapabilityStatementRestResourceOperationComponent e : element.getOperation()) 
36654          composeCapabilityStatementRestResourceOperationComponent("operation", e);
36655    }
36656  }
36657
36658  protected void composeCapabilityStatementResourceInteractionComponent(String name, CapabilityStatement.ResourceInteractionComponent element) throws IOException {
36659    if (element != null) {
36660    composeElementAttributes(element);
36661      xml.enter(FHIR_NS, name);
36662      composeCapabilityStatementResourceInteractionComponentElements(element);
36663      composeElementClose(element);
36664      xml.exit(FHIR_NS, name);
36665    }
36666  }
36667
36668  protected void composeCapabilityStatementResourceInteractionComponentElements(CapabilityStatement.ResourceInteractionComponent element) throws IOException {
36669    composeBackboneElementElements(element);
36670    if (element.hasCodeElement())
36671      composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.TypeRestfulInteractionEnumFactory());
36672    if (element.hasDocumentationElement()) {
36673      composeMarkdown("documentation", element.getDocumentationElement());
36674    }
36675  }
36676
36677  protected void composeCapabilityStatementRestResourceSearchParamComponent(String name, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
36678    if (element != null) {
36679    composeElementAttributes(element);
36680      xml.enter(FHIR_NS, name);
36681      composeCapabilityStatementRestResourceSearchParamComponentElements(element);
36682      composeElementClose(element);
36683      xml.exit(FHIR_NS, name);
36684    }
36685  }
36686
36687  protected void composeCapabilityStatementRestResourceSearchParamComponentElements(CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
36688    composeBackboneElementElements(element);
36689    if (element.hasNameElement()) {
36690      composeString("name", element.getNameElement());
36691    }
36692    if (element.hasDefinitionElement()) {
36693      composeCanonical("definition", element.getDefinitionElement());
36694    }
36695    if (element.hasTypeElement())
36696      composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
36697    if (element.hasDocumentationElement()) {
36698      composeMarkdown("documentation", element.getDocumentationElement());
36699    }
36700  }
36701
36702  protected void composeCapabilityStatementRestResourceOperationComponent(String name, CapabilityStatement.CapabilityStatementRestResourceOperationComponent element) throws IOException {
36703    if (element != null) {
36704    composeElementAttributes(element);
36705      xml.enter(FHIR_NS, name);
36706      composeCapabilityStatementRestResourceOperationComponentElements(element);
36707      composeElementClose(element);
36708      xml.exit(FHIR_NS, name);
36709    }
36710  }
36711
36712  protected void composeCapabilityStatementRestResourceOperationComponentElements(CapabilityStatement.CapabilityStatementRestResourceOperationComponent element) throws IOException {
36713    composeBackboneElementElements(element);
36714    if (element.hasNameElement()) {
36715      composeString("name", element.getNameElement());
36716    }
36717    if (element.hasDefinitionElement()) {
36718      composeCanonical("definition", element.getDefinitionElement());
36719    }
36720    if (element.hasDocumentationElement()) {
36721      composeMarkdown("documentation", element.getDocumentationElement());
36722    }
36723  }
36724
36725  protected void composeCapabilityStatementSystemInteractionComponent(String name, CapabilityStatement.SystemInteractionComponent element) throws IOException {
36726    if (element != null) {
36727    composeElementAttributes(element);
36728      xml.enter(FHIR_NS, name);
36729      composeCapabilityStatementSystemInteractionComponentElements(element);
36730      composeElementClose(element);
36731      xml.exit(FHIR_NS, name);
36732    }
36733  }
36734
36735  protected void composeCapabilityStatementSystemInteractionComponentElements(CapabilityStatement.SystemInteractionComponent element) throws IOException {
36736    composeBackboneElementElements(element);
36737    if (element.hasCodeElement())
36738      composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.SystemRestfulInteractionEnumFactory());
36739    if (element.hasDocumentationElement()) {
36740      composeMarkdown("documentation", element.getDocumentationElement());
36741    }
36742  }
36743
36744  protected void composeCapabilityStatementMessagingComponent(String name, CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
36745    if (element != null) {
36746    composeElementAttributes(element);
36747      xml.enter(FHIR_NS, name);
36748      composeCapabilityStatementMessagingComponentElements(element);
36749      composeElementClose(element);
36750      xml.exit(FHIR_NS, name);
36751    }
36752  }
36753
36754  protected void composeCapabilityStatementMessagingComponentElements(CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
36755    composeBackboneElementElements(element);
36756    if (element.hasEndpoint()) { 
36757      for (CapabilityStatement.CapabilityStatementMessagingEndpointComponent e : element.getEndpoint()) 
36758          composeCapabilityStatementMessagingEndpointComponent("endpoint", e);
36759    }
36760    if (element.hasReliableCacheElement()) {
36761      composeUnsignedInt("reliableCache", element.getReliableCacheElement());
36762    }
36763    if (element.hasDocumentationElement()) {
36764      composeMarkdown("documentation", element.getDocumentationElement());
36765    }
36766    if (element.hasSupportedMessage()) { 
36767      for (CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent e : element.getSupportedMessage()) 
36768          composeCapabilityStatementMessagingSupportedMessageComponent("supportedMessage", e);
36769    }
36770  }
36771
36772  protected void composeCapabilityStatementMessagingEndpointComponent(String name, CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
36773    if (element != null) {
36774    composeElementAttributes(element);
36775      xml.enter(FHIR_NS, name);
36776      composeCapabilityStatementMessagingEndpointComponentElements(element);
36777      composeElementClose(element);
36778      xml.exit(FHIR_NS, name);
36779    }
36780  }
36781
36782  protected void composeCapabilityStatementMessagingEndpointComponentElements(CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
36783    composeBackboneElementElements(element);
36784    if (element.hasProtocol()) {
36785      composeCoding("protocol", element.getProtocol());
36786    }
36787    if (element.hasAddressElement()) {
36788      composeUrl("address", element.getAddressElement());
36789    }
36790  }
36791
36792  protected void composeCapabilityStatementMessagingSupportedMessageComponent(String name, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
36793    if (element != null) {
36794    composeElementAttributes(element);
36795      xml.enter(FHIR_NS, name);
36796      composeCapabilityStatementMessagingSupportedMessageComponentElements(element);
36797      composeElementClose(element);
36798      xml.exit(FHIR_NS, name);
36799    }
36800  }
36801
36802  protected void composeCapabilityStatementMessagingSupportedMessageComponentElements(CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
36803    composeBackboneElementElements(element);
36804    if (element.hasModeElement())
36805      composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.EventCapabilityModeEnumFactory());
36806    if (element.hasDefinitionElement()) {
36807      composeCanonical("definition", element.getDefinitionElement());
36808    }
36809  }
36810
36811  protected void composeCapabilityStatementDocumentComponent(String name, CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
36812    if (element != null) {
36813    composeElementAttributes(element);
36814      xml.enter(FHIR_NS, name);
36815      composeCapabilityStatementDocumentComponentElements(element);
36816      composeElementClose(element);
36817      xml.exit(FHIR_NS, name);
36818    }
36819  }
36820
36821  protected void composeCapabilityStatementDocumentComponentElements(CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
36822    composeBackboneElementElements(element);
36823    if (element.hasModeElement())
36824      composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.DocumentModeEnumFactory());
36825    if (element.hasDocumentationElement()) {
36826      composeMarkdown("documentation", element.getDocumentationElement());
36827    }
36828    if (element.hasProfileElement()) {
36829      composeCanonical("profile", element.getProfileElement());
36830    }
36831  }
36832
36833  protected void composeCarePlan(String name, CarePlan element) throws IOException {
36834    if (element != null) {
36835    composeResourceAttributes(element);
36836      xml.enter(FHIR_NS, name);
36837      composeCarePlanElements(element);
36838      composeElementClose(element);
36839      xml.exit(FHIR_NS, name);
36840    }
36841  }
36842
36843  protected void composeCarePlanElements(CarePlan element) throws IOException {
36844    composeDomainResourceElements(element);
36845    if (element.hasIdentifier()) { 
36846      for (Identifier e : element.getIdentifier()) 
36847          composeIdentifier("identifier", e);
36848    }
36849    if (element.hasInstantiatesCanonical()) { 
36850      for (CanonicalType e : element.getInstantiatesCanonical()) 
36851          composeCanonical("instantiatesCanonical", e);
36852    }
36853    if (element.hasInstantiatesUri()) { 
36854      for (UriType e : element.getInstantiatesUri()) 
36855          composeUri("instantiatesUri", e);
36856    }
36857    if (element.hasBasedOn()) { 
36858      for (Reference e : element.getBasedOn()) 
36859          composeReference("basedOn", e);
36860    }
36861    if (element.hasReplaces()) { 
36862      for (Reference e : element.getReplaces()) 
36863          composeReference("replaces", e);
36864    }
36865    if (element.hasPartOf()) { 
36866      for (Reference e : element.getPartOf()) 
36867          composeReference("partOf", e);
36868    }
36869    if (element.hasStatusElement())
36870      composeEnumeration("status", element.getStatusElement(), new Enumerations.RequestStatusEnumFactory());
36871    if (element.hasIntentElement())
36872      composeEnumeration("intent", element.getIntentElement(), new CarePlan.CarePlanIntentEnumFactory());
36873    if (element.hasCategory()) { 
36874      for (CodeableConcept e : element.getCategory()) 
36875          composeCodeableConcept("category", e);
36876    }
36877    if (element.hasTitleElement()) {
36878      composeString("title", element.getTitleElement());
36879    }
36880    if (element.hasDescriptionElement()) {
36881      composeString("description", element.getDescriptionElement());
36882    }
36883    if (element.hasSubject()) {
36884      composeReference("subject", element.getSubject());
36885    }
36886    if (element.hasEncounter()) {
36887      composeReference("encounter", element.getEncounter());
36888    }
36889    if (element.hasPeriod()) {
36890      composePeriod("period", element.getPeriod());
36891    }
36892    if (element.hasCreatedElement()) {
36893      composeDateTime("created", element.getCreatedElement());
36894    }
36895    if (element.hasCustodian()) {
36896      composeReference("custodian", element.getCustodian());
36897    }
36898    if (element.hasContributor()) { 
36899      for (Reference e : element.getContributor()) 
36900          composeReference("contributor", e);
36901    }
36902    if (element.hasCareTeam()) { 
36903      for (Reference e : element.getCareTeam()) 
36904          composeReference("careTeam", e);
36905    }
36906    if (element.hasAddresses()) { 
36907      for (CodeableReference e : element.getAddresses()) 
36908          composeCodeableReference("addresses", e);
36909    }
36910    if (element.hasSupportingInfo()) { 
36911      for (Reference e : element.getSupportingInfo()) 
36912          composeReference("supportingInfo", e);
36913    }
36914    if (element.hasGoal()) { 
36915      for (Reference e : element.getGoal()) 
36916          composeReference("goal", e);
36917    }
36918    if (element.hasActivity()) { 
36919      for (CarePlan.CarePlanActivityComponent e : element.getActivity()) 
36920          composeCarePlanActivityComponent("activity", e);
36921    }
36922    if (element.hasNote()) { 
36923      for (Annotation e : element.getNote()) 
36924          composeAnnotation("note", e);
36925    }
36926  }
36927
36928  protected void composeCarePlanActivityComponent(String name, CarePlan.CarePlanActivityComponent element) throws IOException {
36929    if (element != null) {
36930    composeElementAttributes(element);
36931      xml.enter(FHIR_NS, name);
36932      composeCarePlanActivityComponentElements(element);
36933      composeElementClose(element);
36934      xml.exit(FHIR_NS, name);
36935    }
36936  }
36937
36938  protected void composeCarePlanActivityComponentElements(CarePlan.CarePlanActivityComponent element) throws IOException {
36939    composeBackboneElementElements(element);
36940    if (element.hasPerformedActivity()) { 
36941      for (CodeableReference e : element.getPerformedActivity()) 
36942          composeCodeableReference("performedActivity", e);
36943    }
36944    if (element.hasProgress()) { 
36945      for (Annotation e : element.getProgress()) 
36946          composeAnnotation("progress", e);
36947    }
36948    if (element.hasPlannedActivityReference()) {
36949      composeReference("plannedActivityReference", element.getPlannedActivityReference());
36950    }
36951  }
36952
36953  protected void composeCareTeam(String name, CareTeam element) throws IOException {
36954    if (element != null) {
36955    composeResourceAttributes(element);
36956      xml.enter(FHIR_NS, name);
36957      composeCareTeamElements(element);
36958      composeElementClose(element);
36959      xml.exit(FHIR_NS, name);
36960    }
36961  }
36962
36963  protected void composeCareTeamElements(CareTeam element) throws IOException {
36964    composeDomainResourceElements(element);
36965    if (element.hasIdentifier()) { 
36966      for (Identifier e : element.getIdentifier()) 
36967          composeIdentifier("identifier", e);
36968    }
36969    if (element.hasStatusElement())
36970      composeEnumeration("status", element.getStatusElement(), new CareTeam.CareTeamStatusEnumFactory());
36971    if (element.hasCategory()) { 
36972      for (CodeableConcept e : element.getCategory()) 
36973          composeCodeableConcept("category", e);
36974    }
36975    if (element.hasNameElement()) {
36976      composeString("name", element.getNameElement());
36977    }
36978    if (element.hasSubject()) {
36979      composeReference("subject", element.getSubject());
36980    }
36981    if (element.hasPeriod()) {
36982      composePeriod("period", element.getPeriod());
36983    }
36984    if (element.hasParticipant()) { 
36985      for (CareTeam.CareTeamParticipantComponent e : element.getParticipant()) 
36986          composeCareTeamParticipantComponent("participant", e);
36987    }
36988    if (element.hasReason()) { 
36989      for (CodeableReference e : element.getReason()) 
36990          composeCodeableReference("reason", e);
36991    }
36992    if (element.hasManagingOrganization()) { 
36993      for (Reference e : element.getManagingOrganization()) 
36994          composeReference("managingOrganization", e);
36995    }
36996    if (element.hasTelecom()) { 
36997      for (ContactPoint e : element.getTelecom()) 
36998          composeContactPoint("telecom", e);
36999    }
37000    if (element.hasNote()) { 
37001      for (Annotation e : element.getNote()) 
37002          composeAnnotation("note", e);
37003    }
37004  }
37005
37006  protected void composeCareTeamParticipantComponent(String name, CareTeam.CareTeamParticipantComponent element) throws IOException {
37007    if (element != null) {
37008    composeElementAttributes(element);
37009      xml.enter(FHIR_NS, name);
37010      composeCareTeamParticipantComponentElements(element);
37011      composeElementClose(element);
37012      xml.exit(FHIR_NS, name);
37013    }
37014  }
37015
37016  protected void composeCareTeamParticipantComponentElements(CareTeam.CareTeamParticipantComponent element) throws IOException {
37017    composeBackboneElementElements(element);
37018    if (element.hasRole()) {
37019      composeCodeableConcept("role", element.getRole());
37020    }
37021    if (element.hasMember()) {
37022      composeReference("member", element.getMember());
37023    }
37024    if (element.hasOnBehalfOf()) {
37025      composeReference("onBehalfOf", element.getOnBehalfOf());
37026    }
37027    if (element.hasCoverage()) {
37028      composeType("coverage", element.getCoverage());
37029    }  }
37030
37031  protected void composeChargeItem(String name, ChargeItem element) throws IOException {
37032    if (element != null) {
37033    composeResourceAttributes(element);
37034      xml.enter(FHIR_NS, name);
37035      composeChargeItemElements(element);
37036      composeElementClose(element);
37037      xml.exit(FHIR_NS, name);
37038    }
37039  }
37040
37041  protected void composeChargeItemElements(ChargeItem element) throws IOException {
37042    composeDomainResourceElements(element);
37043    if (element.hasIdentifier()) { 
37044      for (Identifier e : element.getIdentifier()) 
37045          composeIdentifier("identifier", e);
37046    }
37047    if (element.hasDefinitionUri()) { 
37048      for (UriType e : element.getDefinitionUri()) 
37049          composeUri("definitionUri", e);
37050    }
37051    if (element.hasDefinitionCanonical()) { 
37052      for (CanonicalType e : element.getDefinitionCanonical()) 
37053          composeCanonical("definitionCanonical", e);
37054    }
37055    if (element.hasStatusElement())
37056      composeEnumeration("status", element.getStatusElement(), new ChargeItem.ChargeItemStatusEnumFactory());
37057    if (element.hasPartOf()) { 
37058      for (Reference e : element.getPartOf()) 
37059          composeReference("partOf", e);
37060    }
37061    if (element.hasCode()) {
37062      composeCodeableConcept("code", element.getCode());
37063    }
37064    if (element.hasSubject()) {
37065      composeReference("subject", element.getSubject());
37066    }
37067    if (element.hasEncounter()) {
37068      composeReference("encounter", element.getEncounter());
37069    }
37070    if (element.hasOccurrence()) {
37071      composeType("occurrence", element.getOccurrence());
37072    }    if (element.hasPerformer()) { 
37073      for (ChargeItem.ChargeItemPerformerComponent e : element.getPerformer()) 
37074          composeChargeItemPerformerComponent("performer", e);
37075    }
37076    if (element.hasPerformingOrganization()) {
37077      composeReference("performingOrganization", element.getPerformingOrganization());
37078    }
37079    if (element.hasRequestingOrganization()) {
37080      composeReference("requestingOrganization", element.getRequestingOrganization());
37081    }
37082    if (element.hasCostCenter()) {
37083      composeReference("costCenter", element.getCostCenter());
37084    }
37085    if (element.hasQuantity()) {
37086      composeQuantity("quantity", element.getQuantity());
37087    }
37088    if (element.hasBodysite()) { 
37089      for (CodeableConcept e : element.getBodysite()) 
37090          composeCodeableConcept("bodysite", e);
37091    }
37092    if (element.hasUnitPriceComponent()) {
37093      composeMonetaryComponent("unitPriceComponent", element.getUnitPriceComponent());
37094    }
37095    if (element.hasTotalPriceComponent()) {
37096      composeMonetaryComponent("totalPriceComponent", element.getTotalPriceComponent());
37097    }
37098    if (element.hasOverrideReason()) {
37099      composeCodeableConcept("overrideReason", element.getOverrideReason());
37100    }
37101    if (element.hasEnterer()) {
37102      composeReference("enterer", element.getEnterer());
37103    }
37104    if (element.hasEnteredDateElement()) {
37105      composeDateTime("enteredDate", element.getEnteredDateElement());
37106    }
37107    if (element.hasReason()) { 
37108      for (CodeableConcept e : element.getReason()) 
37109          composeCodeableConcept("reason", e);
37110    }
37111    if (element.hasService()) { 
37112      for (CodeableReference e : element.getService()) 
37113          composeCodeableReference("service", e);
37114    }
37115    if (element.hasProduct()) { 
37116      for (CodeableReference e : element.getProduct()) 
37117          composeCodeableReference("product", e);
37118    }
37119    if (element.hasAccount()) { 
37120      for (Reference e : element.getAccount()) 
37121          composeReference("account", e);
37122    }
37123    if (element.hasNote()) { 
37124      for (Annotation e : element.getNote()) 
37125          composeAnnotation("note", e);
37126    }
37127    if (element.hasSupportingInformation()) { 
37128      for (Reference e : element.getSupportingInformation()) 
37129          composeReference("supportingInformation", e);
37130    }
37131  }
37132
37133  protected void composeChargeItemPerformerComponent(String name, ChargeItem.ChargeItemPerformerComponent element) throws IOException {
37134    if (element != null) {
37135    composeElementAttributes(element);
37136      xml.enter(FHIR_NS, name);
37137      composeChargeItemPerformerComponentElements(element);
37138      composeElementClose(element);
37139      xml.exit(FHIR_NS, name);
37140    }
37141  }
37142
37143  protected void composeChargeItemPerformerComponentElements(ChargeItem.ChargeItemPerformerComponent element) throws IOException {
37144    composeBackboneElementElements(element);
37145    if (element.hasFunction()) {
37146      composeCodeableConcept("function", element.getFunction());
37147    }
37148    if (element.hasActor()) {
37149      composeReference("actor", element.getActor());
37150    }
37151  }
37152
37153  protected void composeChargeItemDefinition(String name, ChargeItemDefinition element) throws IOException {
37154    if (element != null) {
37155    composeResourceAttributes(element);
37156      xml.enter(FHIR_NS, name);
37157      composeChargeItemDefinitionElements(element);
37158      composeElementClose(element);
37159      xml.exit(FHIR_NS, name);
37160    }
37161  }
37162
37163  protected void composeChargeItemDefinitionElements(ChargeItemDefinition element) throws IOException {
37164    composeMetadataResourceElements(element);
37165    if (element.hasUrlElement()) {
37166      composeUri("url", element.getUrlElement());
37167    }
37168    if (element.hasIdentifier()) { 
37169      for (Identifier e : element.getIdentifier()) 
37170          composeIdentifier("identifier", e);
37171    }
37172    if (element.hasVersionElement()) {
37173      composeString("version", element.getVersionElement());
37174    }
37175    if (element.hasVersionAlgorithm()) {
37176      composeType("versionAlgorithm", element.getVersionAlgorithm());
37177    }    if (element.hasNameElement()) {
37178      composeString("name", element.getNameElement());
37179    }
37180    if (element.hasTitleElement()) {
37181      composeString("title", element.getTitleElement());
37182    }
37183    if (element.hasDerivedFromUri()) { 
37184      for (UriType e : element.getDerivedFromUri()) 
37185          composeUri("derivedFromUri", e);
37186    }
37187    if (element.hasPartOf()) { 
37188      for (CanonicalType e : element.getPartOf()) 
37189          composeCanonical("partOf", e);
37190    }
37191    if (element.hasReplaces()) { 
37192      for (CanonicalType e : element.getReplaces()) 
37193          composeCanonical("replaces", e);
37194    }
37195    if (element.hasStatusElement())
37196      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
37197    if (element.hasExperimentalElement()) {
37198      composeBoolean("experimental", element.getExperimentalElement());
37199    }
37200    if (element.hasDateElement()) {
37201      composeDateTime("date", element.getDateElement());
37202    }
37203    if (element.hasPublisherElement()) {
37204      composeString("publisher", element.getPublisherElement());
37205    }
37206    if (element.hasContact()) { 
37207      for (ContactDetail e : element.getContact()) 
37208          composeContactDetail("contact", e);
37209    }
37210    if (element.hasDescriptionElement()) {
37211      composeMarkdown("description", element.getDescriptionElement());
37212    }
37213    if (element.hasUseContext()) { 
37214      for (UsageContext e : element.getUseContext()) 
37215          composeUsageContext("useContext", e);
37216    }
37217    if (element.hasJurisdiction()) { 
37218      for (CodeableConcept e : element.getJurisdiction()) 
37219          composeCodeableConcept("jurisdiction", e);
37220    }
37221    if (element.hasPurposeElement()) {
37222      composeMarkdown("purpose", element.getPurposeElement());
37223    }
37224    if (element.hasCopyrightElement()) {
37225      composeMarkdown("copyright", element.getCopyrightElement());
37226    }
37227    if (element.hasCopyrightLabelElement()) {
37228      composeString("copyrightLabel", element.getCopyrightLabelElement());
37229    }
37230    if (element.hasApprovalDateElement()) {
37231      composeDate("approvalDate", element.getApprovalDateElement());
37232    }
37233    if (element.hasLastReviewDateElement()) {
37234      composeDate("lastReviewDate", element.getLastReviewDateElement());
37235    }
37236    if (element.hasCode()) {
37237      composeCodeableConcept("code", element.getCode());
37238    }
37239    if (element.hasInstance()) { 
37240      for (Reference e : element.getInstance()) 
37241          composeReference("instance", e);
37242    }
37243    if (element.hasApplicability()) { 
37244      for (ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent e : element.getApplicability()) 
37245          composeChargeItemDefinitionApplicabilityComponent("applicability", e);
37246    }
37247    if (element.hasPropertyGroup()) { 
37248      for (ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent e : element.getPropertyGroup()) 
37249          composeChargeItemDefinitionPropertyGroupComponent("propertyGroup", e);
37250    }
37251  }
37252
37253  protected void composeChargeItemDefinitionApplicabilityComponent(String name, ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent element) throws IOException {
37254    if (element != null) {
37255    composeElementAttributes(element);
37256      xml.enter(FHIR_NS, name);
37257      composeChargeItemDefinitionApplicabilityComponentElements(element);
37258      composeElementClose(element);
37259      xml.exit(FHIR_NS, name);
37260    }
37261  }
37262
37263  protected void composeChargeItemDefinitionApplicabilityComponentElements(ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent element) throws IOException {
37264    composeBackboneElementElements(element);
37265    if (element.hasCondition()) {
37266      composeExpression("condition", element.getCondition());
37267    }
37268    if (element.hasEffectivePeriod()) {
37269      composePeriod("effectivePeriod", element.getEffectivePeriod());
37270    }
37271    if (element.hasRelatedArtifact()) {
37272      composeRelatedArtifact("relatedArtifact", element.getRelatedArtifact());
37273    }
37274  }
37275
37276  protected void composeChargeItemDefinitionPropertyGroupComponent(String name, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent element) throws IOException {
37277    if (element != null) {
37278    composeElementAttributes(element);
37279      xml.enter(FHIR_NS, name);
37280      composeChargeItemDefinitionPropertyGroupComponentElements(element);
37281      composeElementClose(element);
37282      xml.exit(FHIR_NS, name);
37283    }
37284  }
37285
37286  protected void composeChargeItemDefinitionPropertyGroupComponentElements(ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent element) throws IOException {
37287    composeBackboneElementElements(element);
37288    if (element.hasApplicability()) { 
37289      for (ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent e : element.getApplicability()) 
37290          composeChargeItemDefinitionApplicabilityComponent("applicability", e);
37291    }
37292    if (element.hasPriceComponent()) { 
37293      for (MonetaryComponent e : element.getPriceComponent()) 
37294          composeMonetaryComponent("priceComponent", e);
37295    }
37296  }
37297
37298  protected void composeCitation(String name, Citation element) throws IOException {
37299    if (element != null) {
37300    composeResourceAttributes(element);
37301      xml.enter(FHIR_NS, name);
37302      composeCitationElements(element);
37303      composeElementClose(element);
37304      xml.exit(FHIR_NS, name);
37305    }
37306  }
37307
37308  protected void composeCitationElements(Citation element) throws IOException {
37309    composeMetadataResourceElements(element);
37310    if (element.hasUrlElement()) {
37311      composeUri("url", element.getUrlElement());
37312    }
37313    if (element.hasIdentifier()) { 
37314      for (Identifier e : element.getIdentifier()) 
37315          composeIdentifier("identifier", e);
37316    }
37317    if (element.hasVersionElement()) {
37318      composeString("version", element.getVersionElement());
37319    }
37320    if (element.hasVersionAlgorithm()) {
37321      composeType("versionAlgorithm", element.getVersionAlgorithm());
37322    }    if (element.hasNameElement()) {
37323      composeString("name", element.getNameElement());
37324    }
37325    if (element.hasTitleElement()) {
37326      composeString("title", element.getTitleElement());
37327    }
37328    if (element.hasStatusElement())
37329      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
37330    if (element.hasExperimentalElement()) {
37331      composeBoolean("experimental", element.getExperimentalElement());
37332    }
37333    if (element.hasDateElement()) {
37334      composeDateTime("date", element.getDateElement());
37335    }
37336    if (element.hasPublisherElement()) {
37337      composeString("publisher", element.getPublisherElement());
37338    }
37339    if (element.hasContact()) { 
37340      for (ContactDetail e : element.getContact()) 
37341          composeContactDetail("contact", e);
37342    }
37343    if (element.hasDescriptionElement()) {
37344      composeMarkdown("description", element.getDescriptionElement());
37345    }
37346    if (element.hasUseContext()) { 
37347      for (UsageContext e : element.getUseContext()) 
37348          composeUsageContext("useContext", e);
37349    }
37350    if (element.hasJurisdiction()) { 
37351      for (CodeableConcept e : element.getJurisdiction()) 
37352          composeCodeableConcept("jurisdiction", e);
37353    }
37354    if (element.hasPurposeElement()) {
37355      composeMarkdown("purpose", element.getPurposeElement());
37356    }
37357    if (element.hasCopyrightElement()) {
37358      composeMarkdown("copyright", element.getCopyrightElement());
37359    }
37360    if (element.hasCopyrightLabelElement()) {
37361      composeString("copyrightLabel", element.getCopyrightLabelElement());
37362    }
37363    if (element.hasApprovalDateElement()) {
37364      composeDate("approvalDate", element.getApprovalDateElement());
37365    }
37366    if (element.hasLastReviewDateElement()) {
37367      composeDate("lastReviewDate", element.getLastReviewDateElement());
37368    }
37369    if (element.hasEffectivePeriod()) {
37370      composePeriod("effectivePeriod", element.getEffectivePeriod());
37371    }
37372    if (element.hasAuthor()) { 
37373      for (ContactDetail e : element.getAuthor()) 
37374          composeContactDetail("author", e);
37375    }
37376    if (element.hasEditor()) { 
37377      for (ContactDetail e : element.getEditor()) 
37378          composeContactDetail("editor", e);
37379    }
37380    if (element.hasReviewer()) { 
37381      for (ContactDetail e : element.getReviewer()) 
37382          composeContactDetail("reviewer", e);
37383    }
37384    if (element.hasEndorser()) { 
37385      for (ContactDetail e : element.getEndorser()) 
37386          composeContactDetail("endorser", e);
37387    }
37388    if (element.hasSummary()) { 
37389      for (Citation.CitationSummaryComponent e : element.getSummary()) 
37390          composeCitationSummaryComponent("summary", e);
37391    }
37392    if (element.hasClassification()) { 
37393      for (Citation.CitationClassificationComponent e : element.getClassification()) 
37394          composeCitationClassificationComponent("classification", e);
37395    }
37396    if (element.hasNote()) { 
37397      for (Annotation e : element.getNote()) 
37398          composeAnnotation("note", e);
37399    }
37400    if (element.hasCurrentState()) { 
37401      for (CodeableConcept e : element.getCurrentState()) 
37402          composeCodeableConcept("currentState", e);
37403    }
37404    if (element.hasStatusDate()) { 
37405      for (Citation.CitationStatusDateComponent e : element.getStatusDate()) 
37406          composeCitationStatusDateComponent("statusDate", e);
37407    }
37408    if (element.hasRelatedArtifact()) { 
37409      for (RelatedArtifact e : element.getRelatedArtifact()) 
37410          composeRelatedArtifact("relatedArtifact", e);
37411    }
37412    if (element.hasCitedArtifact()) {
37413      composeCitationCitedArtifactComponent("citedArtifact", element.getCitedArtifact());
37414    }
37415  }
37416
37417  protected void composeCitationSummaryComponent(String name, Citation.CitationSummaryComponent element) throws IOException {
37418    if (element != null) {
37419    composeElementAttributes(element);
37420      xml.enter(FHIR_NS, name);
37421      composeCitationSummaryComponentElements(element);
37422      composeElementClose(element);
37423      xml.exit(FHIR_NS, name);
37424    }
37425  }
37426
37427  protected void composeCitationSummaryComponentElements(Citation.CitationSummaryComponent element) throws IOException {
37428    composeBackboneElementElements(element);
37429    if (element.hasStyle()) {
37430      composeCodeableConcept("style", element.getStyle());
37431    }
37432    if (element.hasTextElement()) {
37433      composeMarkdown("text", element.getTextElement());
37434    }
37435  }
37436
37437  protected void composeCitationClassificationComponent(String name, Citation.CitationClassificationComponent element) throws IOException {
37438    if (element != null) {
37439    composeElementAttributes(element);
37440      xml.enter(FHIR_NS, name);
37441      composeCitationClassificationComponentElements(element);
37442      composeElementClose(element);
37443      xml.exit(FHIR_NS, name);
37444    }
37445  }
37446
37447  protected void composeCitationClassificationComponentElements(Citation.CitationClassificationComponent element) throws IOException {
37448    composeBackboneElementElements(element);
37449    if (element.hasType()) {
37450      composeCodeableConcept("type", element.getType());
37451    }
37452    if (element.hasClassifier()) { 
37453      for (CodeableConcept e : element.getClassifier()) 
37454          composeCodeableConcept("classifier", e);
37455    }
37456  }
37457
37458  protected void composeCitationStatusDateComponent(String name, Citation.CitationStatusDateComponent element) throws IOException {
37459    if (element != null) {
37460    composeElementAttributes(element);
37461      xml.enter(FHIR_NS, name);
37462      composeCitationStatusDateComponentElements(element);
37463      composeElementClose(element);
37464      xml.exit(FHIR_NS, name);
37465    }
37466  }
37467
37468  protected void composeCitationStatusDateComponentElements(Citation.CitationStatusDateComponent element) throws IOException {
37469    composeBackboneElementElements(element);
37470    if (element.hasActivity()) {
37471      composeCodeableConcept("activity", element.getActivity());
37472    }
37473    if (element.hasActualElement()) {
37474      composeBoolean("actual", element.getActualElement());
37475    }
37476    if (element.hasPeriod()) {
37477      composePeriod("period", element.getPeriod());
37478    }
37479  }
37480
37481  protected void composeCitationCitedArtifactComponent(String name, Citation.CitationCitedArtifactComponent element) throws IOException {
37482    if (element != null) {
37483    composeElementAttributes(element);
37484      xml.enter(FHIR_NS, name);
37485      composeCitationCitedArtifactComponentElements(element);
37486      composeElementClose(element);
37487      xml.exit(FHIR_NS, name);
37488    }
37489  }
37490
37491  protected void composeCitationCitedArtifactComponentElements(Citation.CitationCitedArtifactComponent element) throws IOException {
37492    composeBackboneElementElements(element);
37493    if (element.hasIdentifier()) { 
37494      for (Identifier e : element.getIdentifier()) 
37495          composeIdentifier("identifier", e);
37496    }
37497    if (element.hasRelatedIdentifier()) { 
37498      for (Identifier e : element.getRelatedIdentifier()) 
37499          composeIdentifier("relatedIdentifier", e);
37500    }
37501    if (element.hasDateAccessedElement()) {
37502      composeDateTime("dateAccessed", element.getDateAccessedElement());
37503    }
37504    if (element.hasVersion()) {
37505      composeCitationCitedArtifactVersionComponent("version", element.getVersion());
37506    }
37507    if (element.hasCurrentState()) { 
37508      for (CodeableConcept e : element.getCurrentState()) 
37509          composeCodeableConcept("currentState", e);
37510    }
37511    if (element.hasStatusDate()) { 
37512      for (Citation.CitationCitedArtifactStatusDateComponent e : element.getStatusDate()) 
37513          composeCitationCitedArtifactStatusDateComponent("statusDate", e);
37514    }
37515    if (element.hasTitle()) { 
37516      for (Citation.CitationCitedArtifactTitleComponent e : element.getTitle()) 
37517          composeCitationCitedArtifactTitleComponent("title", e);
37518    }
37519    if (element.hasAbstract()) { 
37520      for (Citation.CitationCitedArtifactAbstractComponent e : element.getAbstract()) 
37521          composeCitationCitedArtifactAbstractComponent("abstract", e);
37522    }
37523    if (element.hasPart()) {
37524      composeCitationCitedArtifactPartComponent("part", element.getPart());
37525    }
37526    if (element.hasRelatesTo()) { 
37527      for (Citation.CitationCitedArtifactRelatesToComponent e : element.getRelatesTo()) 
37528          composeCitationCitedArtifactRelatesToComponent("relatesTo", e);
37529    }
37530    if (element.hasPublicationForm()) { 
37531      for (Citation.CitationCitedArtifactPublicationFormComponent e : element.getPublicationForm()) 
37532          composeCitationCitedArtifactPublicationFormComponent("publicationForm", e);
37533    }
37534    if (element.hasWebLocation()) { 
37535      for (Citation.CitationCitedArtifactWebLocationComponent e : element.getWebLocation()) 
37536          composeCitationCitedArtifactWebLocationComponent("webLocation", e);
37537    }
37538    if (element.hasClassification()) { 
37539      for (Citation.CitationCitedArtifactClassificationComponent e : element.getClassification()) 
37540          composeCitationCitedArtifactClassificationComponent("classification", e);
37541    }
37542    if (element.hasContributorship()) {
37543      composeCitationCitedArtifactContributorshipComponent("contributorship", element.getContributorship());
37544    }
37545    if (element.hasNote()) { 
37546      for (Annotation e : element.getNote()) 
37547          composeAnnotation("note", e);
37548    }
37549  }
37550
37551  protected void composeCitationCitedArtifactVersionComponent(String name, Citation.CitationCitedArtifactVersionComponent element) throws IOException {
37552    if (element != null) {
37553    composeElementAttributes(element);
37554      xml.enter(FHIR_NS, name);
37555      composeCitationCitedArtifactVersionComponentElements(element);
37556      composeElementClose(element);
37557      xml.exit(FHIR_NS, name);
37558    }
37559  }
37560
37561  protected void composeCitationCitedArtifactVersionComponentElements(Citation.CitationCitedArtifactVersionComponent element) throws IOException {
37562    composeBackboneElementElements(element);
37563    if (element.hasValueElement()) {
37564      composeString("value", element.getValueElement());
37565    }
37566    if (element.hasBaseCitation()) {
37567      composeReference("baseCitation", element.getBaseCitation());
37568    }
37569  }
37570
37571  protected void composeCitationCitedArtifactStatusDateComponent(String name, Citation.CitationCitedArtifactStatusDateComponent element) throws IOException {
37572    if (element != null) {
37573    composeElementAttributes(element);
37574      xml.enter(FHIR_NS, name);
37575      composeCitationCitedArtifactStatusDateComponentElements(element);
37576      composeElementClose(element);
37577      xml.exit(FHIR_NS, name);
37578    }
37579  }
37580
37581  protected void composeCitationCitedArtifactStatusDateComponentElements(Citation.CitationCitedArtifactStatusDateComponent element) throws IOException {
37582    composeBackboneElementElements(element);
37583    if (element.hasActivity()) {
37584      composeCodeableConcept("activity", element.getActivity());
37585    }
37586    if (element.hasActualElement()) {
37587      composeBoolean("actual", element.getActualElement());
37588    }
37589    if (element.hasPeriod()) {
37590      composePeriod("period", element.getPeriod());
37591    }
37592  }
37593
37594  protected void composeCitationCitedArtifactTitleComponent(String name, Citation.CitationCitedArtifactTitleComponent element) throws IOException {
37595    if (element != null) {
37596    composeElementAttributes(element);
37597      xml.enter(FHIR_NS, name);
37598      composeCitationCitedArtifactTitleComponentElements(element);
37599      composeElementClose(element);
37600      xml.exit(FHIR_NS, name);
37601    }
37602  }
37603
37604  protected void composeCitationCitedArtifactTitleComponentElements(Citation.CitationCitedArtifactTitleComponent element) throws IOException {
37605    composeBackboneElementElements(element);
37606    if (element.hasType()) { 
37607      for (CodeableConcept e : element.getType()) 
37608          composeCodeableConcept("type", e);
37609    }
37610    if (element.hasLanguage()) {
37611      composeCodeableConcept("language", element.getLanguage());
37612    }
37613    if (element.hasTextElement()) {
37614      composeMarkdown("text", element.getTextElement());
37615    }
37616  }
37617
37618  protected void composeCitationCitedArtifactAbstractComponent(String name, Citation.CitationCitedArtifactAbstractComponent element) throws IOException {
37619    if (element != null) {
37620    composeElementAttributes(element);
37621      xml.enter(FHIR_NS, name);
37622      composeCitationCitedArtifactAbstractComponentElements(element);
37623      composeElementClose(element);
37624      xml.exit(FHIR_NS, name);
37625    }
37626  }
37627
37628  protected void composeCitationCitedArtifactAbstractComponentElements(Citation.CitationCitedArtifactAbstractComponent element) throws IOException {
37629    composeBackboneElementElements(element);
37630    if (element.hasType()) {
37631      composeCodeableConcept("type", element.getType());
37632    }
37633    if (element.hasLanguage()) {
37634      composeCodeableConcept("language", element.getLanguage());
37635    }
37636    if (element.hasTextElement()) {
37637      composeMarkdown("text", element.getTextElement());
37638    }
37639    if (element.hasCopyrightElement()) {
37640      composeMarkdown("copyright", element.getCopyrightElement());
37641    }
37642  }
37643
37644  protected void composeCitationCitedArtifactPartComponent(String name, Citation.CitationCitedArtifactPartComponent element) throws IOException {
37645    if (element != null) {
37646    composeElementAttributes(element);
37647      xml.enter(FHIR_NS, name);
37648      composeCitationCitedArtifactPartComponentElements(element);
37649      composeElementClose(element);
37650      xml.exit(FHIR_NS, name);
37651    }
37652  }
37653
37654  protected void composeCitationCitedArtifactPartComponentElements(Citation.CitationCitedArtifactPartComponent element) throws IOException {
37655    composeBackboneElementElements(element);
37656    if (element.hasType()) {
37657      composeCodeableConcept("type", element.getType());
37658    }
37659    if (element.hasValueElement()) {
37660      composeString("value", element.getValueElement());
37661    }
37662    if (element.hasBaseCitation()) {
37663      composeReference("baseCitation", element.getBaseCitation());
37664    }
37665  }
37666
37667  protected void composeCitationCitedArtifactRelatesToComponent(String name, Citation.CitationCitedArtifactRelatesToComponent element) throws IOException {
37668    if (element != null) {
37669    composeElementAttributes(element);
37670      xml.enter(FHIR_NS, name);
37671      composeCitationCitedArtifactRelatesToComponentElements(element);
37672      composeElementClose(element);
37673      xml.exit(FHIR_NS, name);
37674    }
37675  }
37676
37677  protected void composeCitationCitedArtifactRelatesToComponentElements(Citation.CitationCitedArtifactRelatesToComponent element) throws IOException {
37678    composeBackboneElementElements(element);
37679    if (element.hasTypeElement())
37680      composeEnumeration("type", element.getTypeElement(), new Citation.RelatedArtifactTypeExpandedEnumFactory());
37681    if (element.hasClassifier()) { 
37682      for (CodeableConcept e : element.getClassifier()) 
37683          composeCodeableConcept("classifier", e);
37684    }
37685    if (element.hasLabelElement()) {
37686      composeString("label", element.getLabelElement());
37687    }
37688    if (element.hasDisplayElement()) {
37689      composeString("display", element.getDisplayElement());
37690    }
37691    if (element.hasCitationElement()) {
37692      composeMarkdown("citation", element.getCitationElement());
37693    }
37694    if (element.hasDocument()) {
37695      composeAttachment("document", element.getDocument());
37696    }
37697    if (element.hasResourceElement()) {
37698      composeCanonical("resource", element.getResourceElement());
37699    }
37700    if (element.hasResourceReference()) {
37701      composeReference("resourceReference", element.getResourceReference());
37702    }
37703  }
37704
37705  protected void composeCitationCitedArtifactPublicationFormComponent(String name, Citation.CitationCitedArtifactPublicationFormComponent element) throws IOException {
37706    if (element != null) {
37707    composeElementAttributes(element);
37708      xml.enter(FHIR_NS, name);
37709      composeCitationCitedArtifactPublicationFormComponentElements(element);
37710      composeElementClose(element);
37711      xml.exit(FHIR_NS, name);
37712    }
37713  }
37714
37715  protected void composeCitationCitedArtifactPublicationFormComponentElements(Citation.CitationCitedArtifactPublicationFormComponent element) throws IOException {
37716    composeBackboneElementElements(element);
37717    if (element.hasPublishedIn()) {
37718      composeCitationCitedArtifactPublicationFormPublishedInComponent("publishedIn", element.getPublishedIn());
37719    }
37720    if (element.hasCitedMedium()) {
37721      composeCodeableConcept("citedMedium", element.getCitedMedium());
37722    }
37723    if (element.hasVolumeElement()) {
37724      composeString("volume", element.getVolumeElement());
37725    }
37726    if (element.hasIssueElement()) {
37727      composeString("issue", element.getIssueElement());
37728    }
37729    if (element.hasArticleDateElement()) {
37730      composeDateTime("articleDate", element.getArticleDateElement());
37731    }
37732    if (element.hasPublicationDateTextElement()) {
37733      composeString("publicationDateText", element.getPublicationDateTextElement());
37734    }
37735    if (element.hasPublicationDateSeasonElement()) {
37736      composeString("publicationDateSeason", element.getPublicationDateSeasonElement());
37737    }
37738    if (element.hasLastRevisionDateElement()) {
37739      composeDateTime("lastRevisionDate", element.getLastRevisionDateElement());
37740    }
37741    if (element.hasLanguage()) { 
37742      for (CodeableConcept e : element.getLanguage()) 
37743          composeCodeableConcept("language", e);
37744    }
37745    if (element.hasAccessionNumberElement()) {
37746      composeString("accessionNumber", element.getAccessionNumberElement());
37747    }
37748    if (element.hasPageStringElement()) {
37749      composeString("pageString", element.getPageStringElement());
37750    }
37751    if (element.hasFirstPageElement()) {
37752      composeString("firstPage", element.getFirstPageElement());
37753    }
37754    if (element.hasLastPageElement()) {
37755      composeString("lastPage", element.getLastPageElement());
37756    }
37757    if (element.hasPageCountElement()) {
37758      composeString("pageCount", element.getPageCountElement());
37759    }
37760    if (element.hasCopyrightElement()) {
37761      composeMarkdown("copyright", element.getCopyrightElement());
37762    }
37763  }
37764
37765  protected void composeCitationCitedArtifactPublicationFormPublishedInComponent(String name, Citation.CitationCitedArtifactPublicationFormPublishedInComponent element) throws IOException {
37766    if (element != null) {
37767    composeElementAttributes(element);
37768      xml.enter(FHIR_NS, name);
37769      composeCitationCitedArtifactPublicationFormPublishedInComponentElements(element);
37770      composeElementClose(element);
37771      xml.exit(FHIR_NS, name);
37772    }
37773  }
37774
37775  protected void composeCitationCitedArtifactPublicationFormPublishedInComponentElements(Citation.CitationCitedArtifactPublicationFormPublishedInComponent element) throws IOException {
37776    composeBackboneElementElements(element);
37777    if (element.hasType()) {
37778      composeCodeableConcept("type", element.getType());
37779    }
37780    if (element.hasIdentifier()) { 
37781      for (Identifier e : element.getIdentifier()) 
37782          composeIdentifier("identifier", e);
37783    }
37784    if (element.hasTitleElement()) {
37785      composeString("title", element.getTitleElement());
37786    }
37787    if (element.hasPublisher()) {
37788      composeReference("publisher", element.getPublisher());
37789    }
37790    if (element.hasPublisherLocationElement()) {
37791      composeString("publisherLocation", element.getPublisherLocationElement());
37792    }
37793  }
37794
37795  protected void composeCitationCitedArtifactWebLocationComponent(String name, Citation.CitationCitedArtifactWebLocationComponent element) throws IOException {
37796    if (element != null) {
37797    composeElementAttributes(element);
37798      xml.enter(FHIR_NS, name);
37799      composeCitationCitedArtifactWebLocationComponentElements(element);
37800      composeElementClose(element);
37801      xml.exit(FHIR_NS, name);
37802    }
37803  }
37804
37805  protected void composeCitationCitedArtifactWebLocationComponentElements(Citation.CitationCitedArtifactWebLocationComponent element) throws IOException {
37806    composeBackboneElementElements(element);
37807    if (element.hasClassifier()) { 
37808      for (CodeableConcept e : element.getClassifier()) 
37809          composeCodeableConcept("classifier", e);
37810    }
37811    if (element.hasUrlElement()) {
37812      composeUri("url", element.getUrlElement());
37813    }
37814  }
37815
37816  protected void composeCitationCitedArtifactClassificationComponent(String name, Citation.CitationCitedArtifactClassificationComponent element) throws IOException {
37817    if (element != null) {
37818    composeElementAttributes(element);
37819      xml.enter(FHIR_NS, name);
37820      composeCitationCitedArtifactClassificationComponentElements(element);
37821      composeElementClose(element);
37822      xml.exit(FHIR_NS, name);
37823    }
37824  }
37825
37826  protected void composeCitationCitedArtifactClassificationComponentElements(Citation.CitationCitedArtifactClassificationComponent element) throws IOException {
37827    composeBackboneElementElements(element);
37828    if (element.hasType()) {
37829      composeCodeableConcept("type", element.getType());
37830    }
37831    if (element.hasClassifier()) { 
37832      for (CodeableConcept e : element.getClassifier()) 
37833          composeCodeableConcept("classifier", e);
37834    }
37835    if (element.hasArtifactAssessment()) { 
37836      for (Reference e : element.getArtifactAssessment()) 
37837          composeReference("artifactAssessment", e);
37838    }
37839  }
37840
37841  protected void composeCitationCitedArtifactContributorshipComponent(String name, Citation.CitationCitedArtifactContributorshipComponent element) throws IOException {
37842    if (element != null) {
37843    composeElementAttributes(element);
37844      xml.enter(FHIR_NS, name);
37845      composeCitationCitedArtifactContributorshipComponentElements(element);
37846      composeElementClose(element);
37847      xml.exit(FHIR_NS, name);
37848    }
37849  }
37850
37851  protected void composeCitationCitedArtifactContributorshipComponentElements(Citation.CitationCitedArtifactContributorshipComponent element) throws IOException {
37852    composeBackboneElementElements(element);
37853    if (element.hasCompleteElement()) {
37854      composeBoolean("complete", element.getCompleteElement());
37855    }
37856    if (element.hasEntry()) { 
37857      for (Citation.CitationCitedArtifactContributorshipEntryComponent e : element.getEntry()) 
37858          composeCitationCitedArtifactContributorshipEntryComponent("entry", e);
37859    }
37860    if (element.hasSummary()) { 
37861      for (Citation.ContributorshipSummaryComponent e : element.getSummary()) 
37862          composeCitationContributorshipSummaryComponent("summary", e);
37863    }
37864  }
37865
37866  protected void composeCitationCitedArtifactContributorshipEntryComponent(String name, Citation.CitationCitedArtifactContributorshipEntryComponent element) throws IOException {
37867    if (element != null) {
37868    composeElementAttributes(element);
37869      xml.enter(FHIR_NS, name);
37870      composeCitationCitedArtifactContributorshipEntryComponentElements(element);
37871      composeElementClose(element);
37872      xml.exit(FHIR_NS, name);
37873    }
37874  }
37875
37876  protected void composeCitationCitedArtifactContributorshipEntryComponentElements(Citation.CitationCitedArtifactContributorshipEntryComponent element) throws IOException {
37877    composeBackboneElementElements(element);
37878    if (element.hasContributor()) {
37879      composeReference("contributor", element.getContributor());
37880    }
37881    if (element.hasForenameInitialsElement()) {
37882      composeString("forenameInitials", element.getForenameInitialsElement());
37883    }
37884    if (element.hasAffiliation()) { 
37885      for (Reference e : element.getAffiliation()) 
37886          composeReference("affiliation", e);
37887    }
37888    if (element.hasContributionType()) { 
37889      for (CodeableConcept e : element.getContributionType()) 
37890          composeCodeableConcept("contributionType", e);
37891    }
37892    if (element.hasRole()) {
37893      composeCodeableConcept("role", element.getRole());
37894    }
37895    if (element.hasContributionInstance()) { 
37896      for (Citation.CitationCitedArtifactContributorshipEntryContributionInstanceComponent e : element.getContributionInstance()) 
37897          composeCitationCitedArtifactContributorshipEntryContributionInstanceComponent("contributionInstance", e);
37898    }
37899    if (element.hasCorrespondingContactElement()) {
37900      composeBoolean("correspondingContact", element.getCorrespondingContactElement());
37901    }
37902    if (element.hasRankingOrderElement()) {
37903      composePositiveInt("rankingOrder", element.getRankingOrderElement());
37904    }
37905  }
37906
37907  protected void composeCitationCitedArtifactContributorshipEntryContributionInstanceComponent(String name, Citation.CitationCitedArtifactContributorshipEntryContributionInstanceComponent element) throws IOException {
37908    if (element != null) {
37909    composeElementAttributes(element);
37910      xml.enter(FHIR_NS, name);
37911      composeCitationCitedArtifactContributorshipEntryContributionInstanceComponentElements(element);
37912      composeElementClose(element);
37913      xml.exit(FHIR_NS, name);
37914    }
37915  }
37916
37917  protected void composeCitationCitedArtifactContributorshipEntryContributionInstanceComponentElements(Citation.CitationCitedArtifactContributorshipEntryContributionInstanceComponent element) throws IOException {
37918    composeBackboneElementElements(element);
37919    if (element.hasType()) {
37920      composeCodeableConcept("type", element.getType());
37921    }
37922    if (element.hasTimeElement()) {
37923      composeDateTime("time", element.getTimeElement());
37924    }
37925  }
37926
37927  protected void composeCitationContributorshipSummaryComponent(String name, Citation.ContributorshipSummaryComponent element) throws IOException {
37928    if (element != null) {
37929    composeElementAttributes(element);
37930      xml.enter(FHIR_NS, name);
37931      composeCitationContributorshipSummaryComponentElements(element);
37932      composeElementClose(element);
37933      xml.exit(FHIR_NS, name);
37934    }
37935  }
37936
37937  protected void composeCitationContributorshipSummaryComponentElements(Citation.ContributorshipSummaryComponent element) throws IOException {
37938    composeBackboneElementElements(element);
37939    if (element.hasType()) {
37940      composeCodeableConcept("type", element.getType());
37941    }
37942    if (element.hasStyle()) {
37943      composeCodeableConcept("style", element.getStyle());
37944    }
37945    if (element.hasSource()) {
37946      composeCodeableConcept("source", element.getSource());
37947    }
37948    if (element.hasValueElement()) {
37949      composeMarkdown("value", element.getValueElement());
37950    }
37951  }
37952
37953  protected void composeClaim(String name, Claim element) throws IOException {
37954    if (element != null) {
37955    composeResourceAttributes(element);
37956      xml.enter(FHIR_NS, name);
37957      composeClaimElements(element);
37958      composeElementClose(element);
37959      xml.exit(FHIR_NS, name);
37960    }
37961  }
37962
37963  protected void composeClaimElements(Claim element) throws IOException {
37964    composeDomainResourceElements(element);
37965    if (element.hasIdentifier()) { 
37966      for (Identifier e : element.getIdentifier()) 
37967          composeIdentifier("identifier", e);
37968    }
37969    if (element.hasTraceNumber()) { 
37970      for (Identifier e : element.getTraceNumber()) 
37971          composeIdentifier("traceNumber", e);
37972    }
37973    if (element.hasStatusElement())
37974      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
37975    if (element.hasType()) {
37976      composeCodeableConcept("type", element.getType());
37977    }
37978    if (element.hasSubType()) {
37979      composeCodeableConcept("subType", element.getSubType());
37980    }
37981    if (element.hasUseElement())
37982      composeEnumeration("use", element.getUseElement(), new Enumerations.UseEnumFactory());
37983    if (element.hasPatient()) {
37984      composeReference("patient", element.getPatient());
37985    }
37986    if (element.hasBillablePeriod()) {
37987      composePeriod("billablePeriod", element.getBillablePeriod());
37988    }
37989    if (element.hasCreatedElement()) {
37990      composeDateTime("created", element.getCreatedElement());
37991    }
37992    if (element.hasEnterer()) {
37993      composeReference("enterer", element.getEnterer());
37994    }
37995    if (element.hasInsurer()) {
37996      composeReference("insurer", element.getInsurer());
37997    }
37998    if (element.hasProvider()) {
37999      composeReference("provider", element.getProvider());
38000    }
38001    if (element.hasPriority()) {
38002      composeCodeableConcept("priority", element.getPriority());
38003    }
38004    if (element.hasFundsReserve()) {
38005      composeCodeableConcept("fundsReserve", element.getFundsReserve());
38006    }
38007    if (element.hasRelated()) { 
38008      for (Claim.RelatedClaimComponent e : element.getRelated()) 
38009          composeClaimRelatedClaimComponent("related", e);
38010    }
38011    if (element.hasPrescription()) {
38012      composeReference("prescription", element.getPrescription());
38013    }
38014    if (element.hasOriginalPrescription()) {
38015      composeReference("originalPrescription", element.getOriginalPrescription());
38016    }
38017    if (element.hasPayee()) {
38018      composeClaimPayeeComponent("payee", element.getPayee());
38019    }
38020    if (element.hasReferral()) {
38021      composeReference("referral", element.getReferral());
38022    }
38023    if (element.hasEncounter()) { 
38024      for (Reference e : element.getEncounter()) 
38025          composeReference("encounter", e);
38026    }
38027    if (element.hasFacility()) {
38028      composeReference("facility", element.getFacility());
38029    }
38030    if (element.hasDiagnosisRelatedGroup()) {
38031      composeCodeableConcept("diagnosisRelatedGroup", element.getDiagnosisRelatedGroup());
38032    }
38033    if (element.hasEvent()) { 
38034      for (Claim.ClaimEventComponent e : element.getEvent()) 
38035          composeClaimEventComponent("event", e);
38036    }
38037    if (element.hasCareTeam()) { 
38038      for (Claim.CareTeamComponent e : element.getCareTeam()) 
38039          composeClaimCareTeamComponent("careTeam", e);
38040    }
38041    if (element.hasSupportingInfo()) { 
38042      for (Claim.SupportingInformationComponent e : element.getSupportingInfo()) 
38043          composeClaimSupportingInformationComponent("supportingInfo", e);
38044    }
38045    if (element.hasDiagnosis()) { 
38046      for (Claim.DiagnosisComponent e : element.getDiagnosis()) 
38047          composeClaimDiagnosisComponent("diagnosis", e);
38048    }
38049    if (element.hasProcedure()) { 
38050      for (Claim.ProcedureComponent e : element.getProcedure()) 
38051          composeClaimProcedureComponent("procedure", e);
38052    }
38053    if (element.hasInsurance()) { 
38054      for (Claim.InsuranceComponent e : element.getInsurance()) 
38055          composeClaimInsuranceComponent("insurance", e);
38056    }
38057    if (element.hasAccident()) {
38058      composeClaimAccidentComponent("accident", element.getAccident());
38059    }
38060    if (element.hasPatientPaid()) {
38061      composeMoney("patientPaid", element.getPatientPaid());
38062    }
38063    if (element.hasItem()) { 
38064      for (Claim.ItemComponent e : element.getItem()) 
38065          composeClaimItemComponent("item", e);
38066    }
38067    if (element.hasTotal()) {
38068      composeMoney("total", element.getTotal());
38069    }
38070  }
38071
38072  protected void composeClaimRelatedClaimComponent(String name, Claim.RelatedClaimComponent element) throws IOException {
38073    if (element != null) {
38074    composeElementAttributes(element);
38075      xml.enter(FHIR_NS, name);
38076      composeClaimRelatedClaimComponentElements(element);
38077      composeElementClose(element);
38078      xml.exit(FHIR_NS, name);
38079    }
38080  }
38081
38082  protected void composeClaimRelatedClaimComponentElements(Claim.RelatedClaimComponent element) throws IOException {
38083    composeBackboneElementElements(element);
38084    if (element.hasClaim()) {
38085      composeReference("claim", element.getClaim());
38086    }
38087    if (element.hasRelationship()) {
38088      composeCodeableConcept("relationship", element.getRelationship());
38089    }
38090    if (element.hasReference()) {
38091      composeIdentifier("reference", element.getReference());
38092    }
38093  }
38094
38095  protected void composeClaimPayeeComponent(String name, Claim.PayeeComponent element) throws IOException {
38096    if (element != null) {
38097    composeElementAttributes(element);
38098      xml.enter(FHIR_NS, name);
38099      composeClaimPayeeComponentElements(element);
38100      composeElementClose(element);
38101      xml.exit(FHIR_NS, name);
38102    }
38103  }
38104
38105  protected void composeClaimPayeeComponentElements(Claim.PayeeComponent element) throws IOException {
38106    composeBackboneElementElements(element);
38107    if (element.hasType()) {
38108      composeCodeableConcept("type", element.getType());
38109    }
38110    if (element.hasParty()) {
38111      composeReference("party", element.getParty());
38112    }
38113  }
38114
38115  protected void composeClaimEventComponent(String name, Claim.ClaimEventComponent element) throws IOException {
38116    if (element != null) {
38117    composeElementAttributes(element);
38118      xml.enter(FHIR_NS, name);
38119      composeClaimEventComponentElements(element);
38120      composeElementClose(element);
38121      xml.exit(FHIR_NS, name);
38122    }
38123  }
38124
38125  protected void composeClaimEventComponentElements(Claim.ClaimEventComponent element) throws IOException {
38126    composeBackboneElementElements(element);
38127    if (element.hasType()) {
38128      composeCodeableConcept("type", element.getType());
38129    }
38130    if (element.hasWhen()) {
38131      composeType("when", element.getWhen());
38132    }  }
38133
38134  protected void composeClaimCareTeamComponent(String name, Claim.CareTeamComponent element) throws IOException {
38135    if (element != null) {
38136    composeElementAttributes(element);
38137      xml.enter(FHIR_NS, name);
38138      composeClaimCareTeamComponentElements(element);
38139      composeElementClose(element);
38140      xml.exit(FHIR_NS, name);
38141    }
38142  }
38143
38144  protected void composeClaimCareTeamComponentElements(Claim.CareTeamComponent element) throws IOException {
38145    composeBackboneElementElements(element);
38146    if (element.hasSequenceElement()) {
38147      composePositiveInt("sequence", element.getSequenceElement());
38148    }
38149    if (element.hasProvider()) {
38150      composeReference("provider", element.getProvider());
38151    }
38152    if (element.hasResponsibleElement()) {
38153      composeBoolean("responsible", element.getResponsibleElement());
38154    }
38155    if (element.hasRole()) {
38156      composeCodeableConcept("role", element.getRole());
38157    }
38158    if (element.hasSpecialty()) {
38159      composeCodeableConcept("specialty", element.getSpecialty());
38160    }
38161  }
38162
38163  protected void composeClaimSupportingInformationComponent(String name, Claim.SupportingInformationComponent element) throws IOException {
38164    if (element != null) {
38165    composeElementAttributes(element);
38166      xml.enter(FHIR_NS, name);
38167      composeClaimSupportingInformationComponentElements(element);
38168      composeElementClose(element);
38169      xml.exit(FHIR_NS, name);
38170    }
38171  }
38172
38173  protected void composeClaimSupportingInformationComponentElements(Claim.SupportingInformationComponent element) throws IOException {
38174    composeBackboneElementElements(element);
38175    if (element.hasSequenceElement()) {
38176      composePositiveInt("sequence", element.getSequenceElement());
38177    }
38178    if (element.hasCategory()) {
38179      composeCodeableConcept("category", element.getCategory());
38180    }
38181    if (element.hasCode()) {
38182      composeCodeableConcept("code", element.getCode());
38183    }
38184    if (element.hasTiming()) {
38185      composeType("timing", element.getTiming());
38186    }    if (element.hasValue()) {
38187      composeType("value", element.getValue());
38188    }    if (element.hasReason()) {
38189      composeCodeableConcept("reason", element.getReason());
38190    }
38191  }
38192
38193  protected void composeClaimDiagnosisComponent(String name, Claim.DiagnosisComponent element) throws IOException {
38194    if (element != null) {
38195    composeElementAttributes(element);
38196      xml.enter(FHIR_NS, name);
38197      composeClaimDiagnosisComponentElements(element);
38198      composeElementClose(element);
38199      xml.exit(FHIR_NS, name);
38200    }
38201  }
38202
38203  protected void composeClaimDiagnosisComponentElements(Claim.DiagnosisComponent element) throws IOException {
38204    composeBackboneElementElements(element);
38205    if (element.hasSequenceElement()) {
38206      composePositiveInt("sequence", element.getSequenceElement());
38207    }
38208    if (element.hasDiagnosis()) {
38209      composeType("diagnosis", element.getDiagnosis());
38210    }    if (element.hasType()) { 
38211      for (CodeableConcept e : element.getType()) 
38212          composeCodeableConcept("type", e);
38213    }
38214    if (element.hasOnAdmission()) {
38215      composeCodeableConcept("onAdmission", element.getOnAdmission());
38216    }
38217  }
38218
38219  protected void composeClaimProcedureComponent(String name, Claim.ProcedureComponent element) throws IOException {
38220    if (element != null) {
38221    composeElementAttributes(element);
38222      xml.enter(FHIR_NS, name);
38223      composeClaimProcedureComponentElements(element);
38224      composeElementClose(element);
38225      xml.exit(FHIR_NS, name);
38226    }
38227  }
38228
38229  protected void composeClaimProcedureComponentElements(Claim.ProcedureComponent element) throws IOException {
38230    composeBackboneElementElements(element);
38231    if (element.hasSequenceElement()) {
38232      composePositiveInt("sequence", element.getSequenceElement());
38233    }
38234    if (element.hasType()) { 
38235      for (CodeableConcept e : element.getType()) 
38236          composeCodeableConcept("type", e);
38237    }
38238    if (element.hasDateElement()) {
38239      composeDateTime("date", element.getDateElement());
38240    }
38241    if (element.hasProcedure()) {
38242      composeType("procedure", element.getProcedure());
38243    }    if (element.hasUdi()) { 
38244      for (Reference e : element.getUdi()) 
38245          composeReference("udi", e);
38246    }
38247  }
38248
38249  protected void composeClaimInsuranceComponent(String name, Claim.InsuranceComponent element) throws IOException {
38250    if (element != null) {
38251    composeElementAttributes(element);
38252      xml.enter(FHIR_NS, name);
38253      composeClaimInsuranceComponentElements(element);
38254      composeElementClose(element);
38255      xml.exit(FHIR_NS, name);
38256    }
38257  }
38258
38259  protected void composeClaimInsuranceComponentElements(Claim.InsuranceComponent element) throws IOException {
38260    composeBackboneElementElements(element);
38261    if (element.hasSequenceElement()) {
38262      composePositiveInt("sequence", element.getSequenceElement());
38263    }
38264    if (element.hasFocalElement()) {
38265      composeBoolean("focal", element.getFocalElement());
38266    }
38267    if (element.hasIdentifier()) {
38268      composeIdentifier("identifier", element.getIdentifier());
38269    }
38270    if (element.hasCoverage()) {
38271      composeReference("coverage", element.getCoverage());
38272    }
38273    if (element.hasBusinessArrangementElement()) {
38274      composeString("businessArrangement", element.getBusinessArrangementElement());
38275    }
38276    if (element.hasPreAuthRef()) { 
38277      for (StringType e : element.getPreAuthRef()) 
38278          composeString("preAuthRef", e);
38279    }
38280    if (element.hasClaimResponse()) {
38281      composeReference("claimResponse", element.getClaimResponse());
38282    }
38283  }
38284
38285  protected void composeClaimAccidentComponent(String name, Claim.AccidentComponent element) throws IOException {
38286    if (element != null) {
38287    composeElementAttributes(element);
38288      xml.enter(FHIR_NS, name);
38289      composeClaimAccidentComponentElements(element);
38290      composeElementClose(element);
38291      xml.exit(FHIR_NS, name);
38292    }
38293  }
38294
38295  protected void composeClaimAccidentComponentElements(Claim.AccidentComponent element) throws IOException {
38296    composeBackboneElementElements(element);
38297    if (element.hasDateElement()) {
38298      composeDate("date", element.getDateElement());
38299    }
38300    if (element.hasType()) {
38301      composeCodeableConcept("type", element.getType());
38302    }
38303    if (element.hasLocation()) {
38304      composeType("location", element.getLocation());
38305    }  }
38306
38307  protected void composeClaimItemComponent(String name, Claim.ItemComponent element) throws IOException {
38308    if (element != null) {
38309    composeElementAttributes(element);
38310      xml.enter(FHIR_NS, name);
38311      composeClaimItemComponentElements(element);
38312      composeElementClose(element);
38313      xml.exit(FHIR_NS, name);
38314    }
38315  }
38316
38317  protected void composeClaimItemComponentElements(Claim.ItemComponent element) throws IOException {
38318    composeBackboneElementElements(element);
38319    if (element.hasSequenceElement()) {
38320      composePositiveInt("sequence", element.getSequenceElement());
38321    }
38322    if (element.hasTraceNumber()) { 
38323      for (Identifier e : element.getTraceNumber()) 
38324          composeIdentifier("traceNumber", e);
38325    }
38326    if (element.hasCareTeamSequence()) { 
38327      for (PositiveIntType e : element.getCareTeamSequence()) 
38328          composePositiveInt("careTeamSequence", e);
38329    }
38330    if (element.hasDiagnosisSequence()) { 
38331      for (PositiveIntType e : element.getDiagnosisSequence()) 
38332          composePositiveInt("diagnosisSequence", e);
38333    }
38334    if (element.hasProcedureSequence()) { 
38335      for (PositiveIntType e : element.getProcedureSequence()) 
38336          composePositiveInt("procedureSequence", e);
38337    }
38338    if (element.hasInformationSequence()) { 
38339      for (PositiveIntType e : element.getInformationSequence()) 
38340          composePositiveInt("informationSequence", e);
38341    }
38342    if (element.hasRevenue()) {
38343      composeCodeableConcept("revenue", element.getRevenue());
38344    }
38345    if (element.hasCategory()) {
38346      composeCodeableConcept("category", element.getCategory());
38347    }
38348    if (element.hasProductOrService()) {
38349      composeCodeableConcept("productOrService", element.getProductOrService());
38350    }
38351    if (element.hasProductOrServiceEnd()) {
38352      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
38353    }
38354    if (element.hasRequest()) { 
38355      for (Reference e : element.getRequest()) 
38356          composeReference("request", e);
38357    }
38358    if (element.hasModifier()) { 
38359      for (CodeableConcept e : element.getModifier()) 
38360          composeCodeableConcept("modifier", e);
38361    }
38362    if (element.hasProgramCode()) { 
38363      for (CodeableConcept e : element.getProgramCode()) 
38364          composeCodeableConcept("programCode", e);
38365    }
38366    if (element.hasServiced()) {
38367      composeType("serviced", element.getServiced());
38368    }    if (element.hasLocation()) {
38369      composeType("location", element.getLocation());
38370    }    if (element.hasPatientPaid()) {
38371      composeMoney("patientPaid", element.getPatientPaid());
38372    }
38373    if (element.hasQuantity()) {
38374      composeQuantity("quantity", element.getQuantity());
38375    }
38376    if (element.hasUnitPrice()) {
38377      composeMoney("unitPrice", element.getUnitPrice());
38378    }
38379    if (element.hasFactorElement()) {
38380      composeDecimal("factor", element.getFactorElement());
38381    }
38382    if (element.hasTax()) {
38383      composeMoney("tax", element.getTax());
38384    }
38385    if (element.hasNet()) {
38386      composeMoney("net", element.getNet());
38387    }
38388    if (element.hasUdi()) { 
38389      for (Reference e : element.getUdi()) 
38390          composeReference("udi", e);
38391    }
38392    if (element.hasBodySite()) { 
38393      for (Claim.BodySiteComponent e : element.getBodySite()) 
38394          composeClaimBodySiteComponent("bodySite", e);
38395    }
38396    if (element.hasEncounter()) { 
38397      for (Reference e : element.getEncounter()) 
38398          composeReference("encounter", e);
38399    }
38400    if (element.hasDetail()) { 
38401      for (Claim.DetailComponent e : element.getDetail()) 
38402          composeClaimDetailComponent("detail", e);
38403    }
38404  }
38405
38406  protected void composeClaimBodySiteComponent(String name, Claim.BodySiteComponent element) throws IOException {
38407    if (element != null) {
38408    composeElementAttributes(element);
38409      xml.enter(FHIR_NS, name);
38410      composeClaimBodySiteComponentElements(element);
38411      composeElementClose(element);
38412      xml.exit(FHIR_NS, name);
38413    }
38414  }
38415
38416  protected void composeClaimBodySiteComponentElements(Claim.BodySiteComponent element) throws IOException {
38417    composeBackboneElementElements(element);
38418    if (element.hasSite()) { 
38419      for (CodeableReference e : element.getSite()) 
38420          composeCodeableReference("site", e);
38421    }
38422    if (element.hasSubSite()) { 
38423      for (CodeableConcept e : element.getSubSite()) 
38424          composeCodeableConcept("subSite", e);
38425    }
38426  }
38427
38428  protected void composeClaimDetailComponent(String name, Claim.DetailComponent element) throws IOException {
38429    if (element != null) {
38430    composeElementAttributes(element);
38431      xml.enter(FHIR_NS, name);
38432      composeClaimDetailComponentElements(element);
38433      composeElementClose(element);
38434      xml.exit(FHIR_NS, name);
38435    }
38436  }
38437
38438  protected void composeClaimDetailComponentElements(Claim.DetailComponent element) throws IOException {
38439    composeBackboneElementElements(element);
38440    if (element.hasSequenceElement()) {
38441      composePositiveInt("sequence", element.getSequenceElement());
38442    }
38443    if (element.hasTraceNumber()) { 
38444      for (Identifier e : element.getTraceNumber()) 
38445          composeIdentifier("traceNumber", e);
38446    }
38447    if (element.hasRevenue()) {
38448      composeCodeableConcept("revenue", element.getRevenue());
38449    }
38450    if (element.hasCategory()) {
38451      composeCodeableConcept("category", element.getCategory());
38452    }
38453    if (element.hasProductOrService()) {
38454      composeCodeableConcept("productOrService", element.getProductOrService());
38455    }
38456    if (element.hasProductOrServiceEnd()) {
38457      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
38458    }
38459    if (element.hasModifier()) { 
38460      for (CodeableConcept e : element.getModifier()) 
38461          composeCodeableConcept("modifier", e);
38462    }
38463    if (element.hasProgramCode()) { 
38464      for (CodeableConcept e : element.getProgramCode()) 
38465          composeCodeableConcept("programCode", e);
38466    }
38467    if (element.hasPatientPaid()) {
38468      composeMoney("patientPaid", element.getPatientPaid());
38469    }
38470    if (element.hasQuantity()) {
38471      composeQuantity("quantity", element.getQuantity());
38472    }
38473    if (element.hasUnitPrice()) {
38474      composeMoney("unitPrice", element.getUnitPrice());
38475    }
38476    if (element.hasFactorElement()) {
38477      composeDecimal("factor", element.getFactorElement());
38478    }
38479    if (element.hasTax()) {
38480      composeMoney("tax", element.getTax());
38481    }
38482    if (element.hasNet()) {
38483      composeMoney("net", element.getNet());
38484    }
38485    if (element.hasUdi()) { 
38486      for (Reference e : element.getUdi()) 
38487          composeReference("udi", e);
38488    }
38489    if (element.hasSubDetail()) { 
38490      for (Claim.SubDetailComponent e : element.getSubDetail()) 
38491          composeClaimSubDetailComponent("subDetail", e);
38492    }
38493  }
38494
38495  protected void composeClaimSubDetailComponent(String name, Claim.SubDetailComponent element) throws IOException {
38496    if (element != null) {
38497    composeElementAttributes(element);
38498      xml.enter(FHIR_NS, name);
38499      composeClaimSubDetailComponentElements(element);
38500      composeElementClose(element);
38501      xml.exit(FHIR_NS, name);
38502    }
38503  }
38504
38505  protected void composeClaimSubDetailComponentElements(Claim.SubDetailComponent element) throws IOException {
38506    composeBackboneElementElements(element);
38507    if (element.hasSequenceElement()) {
38508      composePositiveInt("sequence", element.getSequenceElement());
38509    }
38510    if (element.hasTraceNumber()) { 
38511      for (Identifier e : element.getTraceNumber()) 
38512          composeIdentifier("traceNumber", e);
38513    }
38514    if (element.hasRevenue()) {
38515      composeCodeableConcept("revenue", element.getRevenue());
38516    }
38517    if (element.hasCategory()) {
38518      composeCodeableConcept("category", element.getCategory());
38519    }
38520    if (element.hasProductOrService()) {
38521      composeCodeableConcept("productOrService", element.getProductOrService());
38522    }
38523    if (element.hasProductOrServiceEnd()) {
38524      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
38525    }
38526    if (element.hasModifier()) { 
38527      for (CodeableConcept e : element.getModifier()) 
38528          composeCodeableConcept("modifier", e);
38529    }
38530    if (element.hasProgramCode()) { 
38531      for (CodeableConcept e : element.getProgramCode()) 
38532          composeCodeableConcept("programCode", e);
38533    }
38534    if (element.hasPatientPaid()) {
38535      composeMoney("patientPaid", element.getPatientPaid());
38536    }
38537    if (element.hasQuantity()) {
38538      composeQuantity("quantity", element.getQuantity());
38539    }
38540    if (element.hasUnitPrice()) {
38541      composeMoney("unitPrice", element.getUnitPrice());
38542    }
38543    if (element.hasFactorElement()) {
38544      composeDecimal("factor", element.getFactorElement());
38545    }
38546    if (element.hasTax()) {
38547      composeMoney("tax", element.getTax());
38548    }
38549    if (element.hasNet()) {
38550      composeMoney("net", element.getNet());
38551    }
38552    if (element.hasUdi()) { 
38553      for (Reference e : element.getUdi()) 
38554          composeReference("udi", e);
38555    }
38556  }
38557
38558  protected void composeClaimResponse(String name, ClaimResponse element) throws IOException {
38559    if (element != null) {
38560    composeResourceAttributes(element);
38561      xml.enter(FHIR_NS, name);
38562      composeClaimResponseElements(element);
38563      composeElementClose(element);
38564      xml.exit(FHIR_NS, name);
38565    }
38566  }
38567
38568  protected void composeClaimResponseElements(ClaimResponse element) throws IOException {
38569    composeDomainResourceElements(element);
38570    if (element.hasIdentifier()) { 
38571      for (Identifier e : element.getIdentifier()) 
38572          composeIdentifier("identifier", e);
38573    }
38574    if (element.hasTraceNumber()) { 
38575      for (Identifier e : element.getTraceNumber()) 
38576          composeIdentifier("traceNumber", e);
38577    }
38578    if (element.hasStatusElement())
38579      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
38580    if (element.hasType()) {
38581      composeCodeableConcept("type", element.getType());
38582    }
38583    if (element.hasSubType()) {
38584      composeCodeableConcept("subType", element.getSubType());
38585    }
38586    if (element.hasUseElement())
38587      composeEnumeration("use", element.getUseElement(), new Enumerations.UseEnumFactory());
38588    if (element.hasPatient()) {
38589      composeReference("patient", element.getPatient());
38590    }
38591    if (element.hasCreatedElement()) {
38592      composeDateTime("created", element.getCreatedElement());
38593    }
38594    if (element.hasInsurer()) {
38595      composeReference("insurer", element.getInsurer());
38596    }
38597    if (element.hasRequestor()) {
38598      composeReference("requestor", element.getRequestor());
38599    }
38600    if (element.hasRequest()) {
38601      composeReference("request", element.getRequest());
38602    }
38603    if (element.hasOutcomeElement())
38604      composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.ClaimProcessingCodesEnumFactory());
38605    if (element.hasDecision()) {
38606      composeCodeableConcept("decision", element.getDecision());
38607    }
38608    if (element.hasDispositionElement()) {
38609      composeString("disposition", element.getDispositionElement());
38610    }
38611    if (element.hasPreAuthRefElement()) {
38612      composeString("preAuthRef", element.getPreAuthRefElement());
38613    }
38614    if (element.hasPreAuthPeriod()) {
38615      composePeriod("preAuthPeriod", element.getPreAuthPeriod());
38616    }
38617    if (element.hasEvent()) { 
38618      for (ClaimResponse.ClaimResponseEventComponent e : element.getEvent()) 
38619          composeClaimResponseEventComponent("event", e);
38620    }
38621    if (element.hasPayeeType()) {
38622      composeCodeableConcept("payeeType", element.getPayeeType());
38623    }
38624    if (element.hasEncounter()) { 
38625      for (Reference e : element.getEncounter()) 
38626          composeReference("encounter", e);
38627    }
38628    if (element.hasDiagnosisRelatedGroup()) {
38629      composeCodeableConcept("diagnosisRelatedGroup", element.getDiagnosisRelatedGroup());
38630    }
38631    if (element.hasItem()) { 
38632      for (ClaimResponse.ItemComponent e : element.getItem()) 
38633          composeClaimResponseItemComponent("item", e);
38634    }
38635    if (element.hasAddItem()) { 
38636      for (ClaimResponse.AddedItemComponent e : element.getAddItem()) 
38637          composeClaimResponseAddedItemComponent("addItem", e);
38638    }
38639    if (element.hasAdjudication()) { 
38640      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
38641          composeClaimResponseAdjudicationComponent("adjudication", e);
38642    }
38643    if (element.hasTotal()) { 
38644      for (ClaimResponse.TotalComponent e : element.getTotal()) 
38645          composeClaimResponseTotalComponent("total", e);
38646    }
38647    if (element.hasPayment()) {
38648      composeClaimResponsePaymentComponent("payment", element.getPayment());
38649    }
38650    if (element.hasFundsReserve()) {
38651      composeCodeableConcept("fundsReserve", element.getFundsReserve());
38652    }
38653    if (element.hasFormCode()) {
38654      composeCodeableConcept("formCode", element.getFormCode());
38655    }
38656    if (element.hasForm()) {
38657      composeAttachment("form", element.getForm());
38658    }
38659    if (element.hasProcessNote()) { 
38660      for (ClaimResponse.NoteComponent e : element.getProcessNote()) 
38661          composeClaimResponseNoteComponent("processNote", e);
38662    }
38663    if (element.hasCommunicationRequest()) { 
38664      for (Reference e : element.getCommunicationRequest()) 
38665          composeReference("communicationRequest", e);
38666    }
38667    if (element.hasInsurance()) { 
38668      for (ClaimResponse.InsuranceComponent e : element.getInsurance()) 
38669          composeClaimResponseInsuranceComponent("insurance", e);
38670    }
38671    if (element.hasError()) { 
38672      for (ClaimResponse.ErrorComponent e : element.getError()) 
38673          composeClaimResponseErrorComponent("error", e);
38674    }
38675  }
38676
38677  protected void composeClaimResponseEventComponent(String name, ClaimResponse.ClaimResponseEventComponent element) throws IOException {
38678    if (element != null) {
38679    composeElementAttributes(element);
38680      xml.enter(FHIR_NS, name);
38681      composeClaimResponseEventComponentElements(element);
38682      composeElementClose(element);
38683      xml.exit(FHIR_NS, name);
38684    }
38685  }
38686
38687  protected void composeClaimResponseEventComponentElements(ClaimResponse.ClaimResponseEventComponent element) throws IOException {
38688    composeBackboneElementElements(element);
38689    if (element.hasType()) {
38690      composeCodeableConcept("type", element.getType());
38691    }
38692    if (element.hasWhen()) {
38693      composeType("when", element.getWhen());
38694    }  }
38695
38696  protected void composeClaimResponseItemComponent(String name, ClaimResponse.ItemComponent element) throws IOException {
38697    if (element != null) {
38698    composeElementAttributes(element);
38699      xml.enter(FHIR_NS, name);
38700      composeClaimResponseItemComponentElements(element);
38701      composeElementClose(element);
38702      xml.exit(FHIR_NS, name);
38703    }
38704  }
38705
38706  protected void composeClaimResponseItemComponentElements(ClaimResponse.ItemComponent element) throws IOException {
38707    composeBackboneElementElements(element);
38708    if (element.hasItemSequenceElement()) {
38709      composePositiveInt("itemSequence", element.getItemSequenceElement());
38710    }
38711    if (element.hasTraceNumber()) { 
38712      for (Identifier e : element.getTraceNumber()) 
38713          composeIdentifier("traceNumber", e);
38714    }
38715    if (element.hasNoteNumber()) { 
38716      for (PositiveIntType e : element.getNoteNumber()) 
38717          composePositiveInt("noteNumber", e);
38718    }
38719    if (element.hasReviewOutcome()) {
38720      composeClaimResponseReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
38721    }
38722    if (element.hasAdjudication()) { 
38723      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
38724          composeClaimResponseAdjudicationComponent("adjudication", e);
38725    }
38726    if (element.hasDetail()) { 
38727      for (ClaimResponse.ItemDetailComponent e : element.getDetail()) 
38728          composeClaimResponseItemDetailComponent("detail", e);
38729    }
38730  }
38731
38732  protected void composeClaimResponseReviewOutcomeComponent(String name, ClaimResponse.ReviewOutcomeComponent element) throws IOException {
38733    if (element != null) {
38734    composeElementAttributes(element);
38735      xml.enter(FHIR_NS, name);
38736      composeClaimResponseReviewOutcomeComponentElements(element);
38737      composeElementClose(element);
38738      xml.exit(FHIR_NS, name);
38739    }
38740  }
38741
38742  protected void composeClaimResponseReviewOutcomeComponentElements(ClaimResponse.ReviewOutcomeComponent element) throws IOException {
38743    composeBackboneElementElements(element);
38744    if (element.hasDecision()) {
38745      composeCodeableConcept("decision", element.getDecision());
38746    }
38747    if (element.hasReason()) { 
38748      for (CodeableConcept e : element.getReason()) 
38749          composeCodeableConcept("reason", e);
38750    }
38751    if (element.hasPreAuthRefElement()) {
38752      composeString("preAuthRef", element.getPreAuthRefElement());
38753    }
38754    if (element.hasPreAuthPeriod()) {
38755      composePeriod("preAuthPeriod", element.getPreAuthPeriod());
38756    }
38757  }
38758
38759  protected void composeClaimResponseAdjudicationComponent(String name, ClaimResponse.AdjudicationComponent element) throws IOException {
38760    if (element != null) {
38761    composeElementAttributes(element);
38762      xml.enter(FHIR_NS, name);
38763      composeClaimResponseAdjudicationComponentElements(element);
38764      composeElementClose(element);
38765      xml.exit(FHIR_NS, name);
38766    }
38767  }
38768
38769  protected void composeClaimResponseAdjudicationComponentElements(ClaimResponse.AdjudicationComponent element) throws IOException {
38770    composeBackboneElementElements(element);
38771    if (element.hasCategory()) {
38772      composeCodeableConcept("category", element.getCategory());
38773    }
38774    if (element.hasReason()) {
38775      composeCodeableConcept("reason", element.getReason());
38776    }
38777    if (element.hasAmount()) {
38778      composeMoney("amount", element.getAmount());
38779    }
38780    if (element.hasQuantity()) {
38781      composeQuantity("quantity", element.getQuantity());
38782    }
38783  }
38784
38785  protected void composeClaimResponseItemDetailComponent(String name, ClaimResponse.ItemDetailComponent element) throws IOException {
38786    if (element != null) {
38787    composeElementAttributes(element);
38788      xml.enter(FHIR_NS, name);
38789      composeClaimResponseItemDetailComponentElements(element);
38790      composeElementClose(element);
38791      xml.exit(FHIR_NS, name);
38792    }
38793  }
38794
38795  protected void composeClaimResponseItemDetailComponentElements(ClaimResponse.ItemDetailComponent element) throws IOException {
38796    composeBackboneElementElements(element);
38797    if (element.hasDetailSequenceElement()) {
38798      composePositiveInt("detailSequence", element.getDetailSequenceElement());
38799    }
38800    if (element.hasTraceNumber()) { 
38801      for (Identifier e : element.getTraceNumber()) 
38802          composeIdentifier("traceNumber", e);
38803    }
38804    if (element.hasNoteNumber()) { 
38805      for (PositiveIntType e : element.getNoteNumber()) 
38806          composePositiveInt("noteNumber", e);
38807    }
38808    if (element.hasReviewOutcome()) {
38809      composeClaimResponseReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
38810    }
38811    if (element.hasAdjudication()) { 
38812      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
38813          composeClaimResponseAdjudicationComponent("adjudication", e);
38814    }
38815    if (element.hasSubDetail()) { 
38816      for (ClaimResponse.SubDetailComponent e : element.getSubDetail()) 
38817          composeClaimResponseSubDetailComponent("subDetail", e);
38818    }
38819  }
38820
38821  protected void composeClaimResponseSubDetailComponent(String name, ClaimResponse.SubDetailComponent element) throws IOException {
38822    if (element != null) {
38823    composeElementAttributes(element);
38824      xml.enter(FHIR_NS, name);
38825      composeClaimResponseSubDetailComponentElements(element);
38826      composeElementClose(element);
38827      xml.exit(FHIR_NS, name);
38828    }
38829  }
38830
38831  protected void composeClaimResponseSubDetailComponentElements(ClaimResponse.SubDetailComponent element) throws IOException {
38832    composeBackboneElementElements(element);
38833    if (element.hasSubDetailSequenceElement()) {
38834      composePositiveInt("subDetailSequence", element.getSubDetailSequenceElement());
38835    }
38836    if (element.hasTraceNumber()) { 
38837      for (Identifier e : element.getTraceNumber()) 
38838          composeIdentifier("traceNumber", e);
38839    }
38840    if (element.hasNoteNumber()) { 
38841      for (PositiveIntType e : element.getNoteNumber()) 
38842          composePositiveInt("noteNumber", e);
38843    }
38844    if (element.hasReviewOutcome()) {
38845      composeClaimResponseReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
38846    }
38847    if (element.hasAdjudication()) { 
38848      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
38849          composeClaimResponseAdjudicationComponent("adjudication", e);
38850    }
38851  }
38852
38853  protected void composeClaimResponseAddedItemComponent(String name, ClaimResponse.AddedItemComponent element) throws IOException {
38854    if (element != null) {
38855    composeElementAttributes(element);
38856      xml.enter(FHIR_NS, name);
38857      composeClaimResponseAddedItemComponentElements(element);
38858      composeElementClose(element);
38859      xml.exit(FHIR_NS, name);
38860    }
38861  }
38862
38863  protected void composeClaimResponseAddedItemComponentElements(ClaimResponse.AddedItemComponent element) throws IOException {
38864    composeBackboneElementElements(element);
38865    if (element.hasItemSequence()) { 
38866      for (PositiveIntType e : element.getItemSequence()) 
38867          composePositiveInt("itemSequence", e);
38868    }
38869    if (element.hasDetailSequence()) { 
38870      for (PositiveIntType e : element.getDetailSequence()) 
38871          composePositiveInt("detailSequence", e);
38872    }
38873    if (element.hasSubdetailSequence()) { 
38874      for (PositiveIntType e : element.getSubdetailSequence()) 
38875          composePositiveInt("subdetailSequence", e);
38876    }
38877    if (element.hasTraceNumber()) { 
38878      for (Identifier e : element.getTraceNumber()) 
38879          composeIdentifier("traceNumber", e);
38880    }
38881    if (element.hasProvider()) { 
38882      for (Reference e : element.getProvider()) 
38883          composeReference("provider", e);
38884    }
38885    if (element.hasRevenue()) {
38886      composeCodeableConcept("revenue", element.getRevenue());
38887    }
38888    if (element.hasProductOrService()) {
38889      composeCodeableConcept("productOrService", element.getProductOrService());
38890    }
38891    if (element.hasProductOrServiceEnd()) {
38892      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
38893    }
38894    if (element.hasRequest()) { 
38895      for (Reference e : element.getRequest()) 
38896          composeReference("request", e);
38897    }
38898    if (element.hasModifier()) { 
38899      for (CodeableConcept e : element.getModifier()) 
38900          composeCodeableConcept("modifier", e);
38901    }
38902    if (element.hasProgramCode()) { 
38903      for (CodeableConcept e : element.getProgramCode()) 
38904          composeCodeableConcept("programCode", e);
38905    }
38906    if (element.hasServiced()) {
38907      composeType("serviced", element.getServiced());
38908    }    if (element.hasLocation()) {
38909      composeType("location", element.getLocation());
38910    }    if (element.hasQuantity()) {
38911      composeQuantity("quantity", element.getQuantity());
38912    }
38913    if (element.hasUnitPrice()) {
38914      composeMoney("unitPrice", element.getUnitPrice());
38915    }
38916    if (element.hasFactorElement()) {
38917      composeDecimal("factor", element.getFactorElement());
38918    }
38919    if (element.hasTax()) {
38920      composeMoney("tax", element.getTax());
38921    }
38922    if (element.hasNet()) {
38923      composeMoney("net", element.getNet());
38924    }
38925    if (element.hasBodySite()) { 
38926      for (ClaimResponse.BodySiteComponent e : element.getBodySite()) 
38927          composeClaimResponseBodySiteComponent("bodySite", e);
38928    }
38929    if (element.hasNoteNumber()) { 
38930      for (PositiveIntType e : element.getNoteNumber()) 
38931          composePositiveInt("noteNumber", e);
38932    }
38933    if (element.hasReviewOutcome()) {
38934      composeClaimResponseReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
38935    }
38936    if (element.hasAdjudication()) { 
38937      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
38938          composeClaimResponseAdjudicationComponent("adjudication", e);
38939    }
38940    if (element.hasDetail()) { 
38941      for (ClaimResponse.AddedItemDetailComponent e : element.getDetail()) 
38942          composeClaimResponseAddedItemDetailComponent("detail", e);
38943    }
38944  }
38945
38946  protected void composeClaimResponseBodySiteComponent(String name, ClaimResponse.BodySiteComponent element) throws IOException {
38947    if (element != null) {
38948    composeElementAttributes(element);
38949      xml.enter(FHIR_NS, name);
38950      composeClaimResponseBodySiteComponentElements(element);
38951      composeElementClose(element);
38952      xml.exit(FHIR_NS, name);
38953    }
38954  }
38955
38956  protected void composeClaimResponseBodySiteComponentElements(ClaimResponse.BodySiteComponent element) throws IOException {
38957    composeBackboneElementElements(element);
38958    if (element.hasSite()) { 
38959      for (CodeableReference e : element.getSite()) 
38960          composeCodeableReference("site", e);
38961    }
38962    if (element.hasSubSite()) { 
38963      for (CodeableConcept e : element.getSubSite()) 
38964          composeCodeableConcept("subSite", e);
38965    }
38966  }
38967
38968  protected void composeClaimResponseAddedItemDetailComponent(String name, ClaimResponse.AddedItemDetailComponent element) throws IOException {
38969    if (element != null) {
38970    composeElementAttributes(element);
38971      xml.enter(FHIR_NS, name);
38972      composeClaimResponseAddedItemDetailComponentElements(element);
38973      composeElementClose(element);
38974      xml.exit(FHIR_NS, name);
38975    }
38976  }
38977
38978  protected void composeClaimResponseAddedItemDetailComponentElements(ClaimResponse.AddedItemDetailComponent element) throws IOException {
38979    composeBackboneElementElements(element);
38980    if (element.hasTraceNumber()) { 
38981      for (Identifier e : element.getTraceNumber()) 
38982          composeIdentifier("traceNumber", e);
38983    }
38984    if (element.hasRevenue()) {
38985      composeCodeableConcept("revenue", element.getRevenue());
38986    }
38987    if (element.hasProductOrService()) {
38988      composeCodeableConcept("productOrService", element.getProductOrService());
38989    }
38990    if (element.hasProductOrServiceEnd()) {
38991      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
38992    }
38993    if (element.hasModifier()) { 
38994      for (CodeableConcept e : element.getModifier()) 
38995          composeCodeableConcept("modifier", e);
38996    }
38997    if (element.hasQuantity()) {
38998      composeQuantity("quantity", element.getQuantity());
38999    }
39000    if (element.hasUnitPrice()) {
39001      composeMoney("unitPrice", element.getUnitPrice());
39002    }
39003    if (element.hasFactorElement()) {
39004      composeDecimal("factor", element.getFactorElement());
39005    }
39006    if (element.hasTax()) {
39007      composeMoney("tax", element.getTax());
39008    }
39009    if (element.hasNet()) {
39010      composeMoney("net", element.getNet());
39011    }
39012    if (element.hasNoteNumber()) { 
39013      for (PositiveIntType e : element.getNoteNumber()) 
39014          composePositiveInt("noteNumber", e);
39015    }
39016    if (element.hasReviewOutcome()) {
39017      composeClaimResponseReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
39018    }
39019    if (element.hasAdjudication()) { 
39020      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
39021          composeClaimResponseAdjudicationComponent("adjudication", e);
39022    }
39023    if (element.hasSubDetail()) { 
39024      for (ClaimResponse.AddedItemSubDetailComponent e : element.getSubDetail()) 
39025          composeClaimResponseAddedItemSubDetailComponent("subDetail", e);
39026    }
39027  }
39028
39029  protected void composeClaimResponseAddedItemSubDetailComponent(String name, ClaimResponse.AddedItemSubDetailComponent element) throws IOException {
39030    if (element != null) {
39031    composeElementAttributes(element);
39032      xml.enter(FHIR_NS, name);
39033      composeClaimResponseAddedItemSubDetailComponentElements(element);
39034      composeElementClose(element);
39035      xml.exit(FHIR_NS, name);
39036    }
39037  }
39038
39039  protected void composeClaimResponseAddedItemSubDetailComponentElements(ClaimResponse.AddedItemSubDetailComponent element) throws IOException {
39040    composeBackboneElementElements(element);
39041    if (element.hasTraceNumber()) { 
39042      for (Identifier e : element.getTraceNumber()) 
39043          composeIdentifier("traceNumber", e);
39044    }
39045    if (element.hasRevenue()) {
39046      composeCodeableConcept("revenue", element.getRevenue());
39047    }
39048    if (element.hasProductOrService()) {
39049      composeCodeableConcept("productOrService", element.getProductOrService());
39050    }
39051    if (element.hasProductOrServiceEnd()) {
39052      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
39053    }
39054    if (element.hasModifier()) { 
39055      for (CodeableConcept e : element.getModifier()) 
39056          composeCodeableConcept("modifier", e);
39057    }
39058    if (element.hasQuantity()) {
39059      composeQuantity("quantity", element.getQuantity());
39060    }
39061    if (element.hasUnitPrice()) {
39062      composeMoney("unitPrice", element.getUnitPrice());
39063    }
39064    if (element.hasFactorElement()) {
39065      composeDecimal("factor", element.getFactorElement());
39066    }
39067    if (element.hasTax()) {
39068      composeMoney("tax", element.getTax());
39069    }
39070    if (element.hasNet()) {
39071      composeMoney("net", element.getNet());
39072    }
39073    if (element.hasNoteNumber()) { 
39074      for (PositiveIntType e : element.getNoteNumber()) 
39075          composePositiveInt("noteNumber", e);
39076    }
39077    if (element.hasReviewOutcome()) {
39078      composeClaimResponseReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
39079    }
39080    if (element.hasAdjudication()) { 
39081      for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
39082          composeClaimResponseAdjudicationComponent("adjudication", e);
39083    }
39084  }
39085
39086  protected void composeClaimResponseTotalComponent(String name, ClaimResponse.TotalComponent element) throws IOException {
39087    if (element != null) {
39088    composeElementAttributes(element);
39089      xml.enter(FHIR_NS, name);
39090      composeClaimResponseTotalComponentElements(element);
39091      composeElementClose(element);
39092      xml.exit(FHIR_NS, name);
39093    }
39094  }
39095
39096  protected void composeClaimResponseTotalComponentElements(ClaimResponse.TotalComponent element) throws IOException {
39097    composeBackboneElementElements(element);
39098    if (element.hasCategory()) {
39099      composeCodeableConcept("category", element.getCategory());
39100    }
39101    if (element.hasAmount()) {
39102      composeMoney("amount", element.getAmount());
39103    }
39104  }
39105
39106  protected void composeClaimResponsePaymentComponent(String name, ClaimResponse.PaymentComponent element) throws IOException {
39107    if (element != null) {
39108    composeElementAttributes(element);
39109      xml.enter(FHIR_NS, name);
39110      composeClaimResponsePaymentComponentElements(element);
39111      composeElementClose(element);
39112      xml.exit(FHIR_NS, name);
39113    }
39114  }
39115
39116  protected void composeClaimResponsePaymentComponentElements(ClaimResponse.PaymentComponent element) throws IOException {
39117    composeBackboneElementElements(element);
39118    if (element.hasType()) {
39119      composeCodeableConcept("type", element.getType());
39120    }
39121    if (element.hasAdjustment()) {
39122      composeMoney("adjustment", element.getAdjustment());
39123    }
39124    if (element.hasAdjustmentReason()) {
39125      composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
39126    }
39127    if (element.hasDateElement()) {
39128      composeDate("date", element.getDateElement());
39129    }
39130    if (element.hasAmount()) {
39131      composeMoney("amount", element.getAmount());
39132    }
39133    if (element.hasIdentifier()) {
39134      composeIdentifier("identifier", element.getIdentifier());
39135    }
39136  }
39137
39138  protected void composeClaimResponseNoteComponent(String name, ClaimResponse.NoteComponent element) throws IOException {
39139    if (element != null) {
39140    composeElementAttributes(element);
39141      xml.enter(FHIR_NS, name);
39142      composeClaimResponseNoteComponentElements(element);
39143      composeElementClose(element);
39144      xml.exit(FHIR_NS, name);
39145    }
39146  }
39147
39148  protected void composeClaimResponseNoteComponentElements(ClaimResponse.NoteComponent element) throws IOException {
39149    composeBackboneElementElements(element);
39150    if (element.hasNumberElement()) {
39151      composePositiveInt("number", element.getNumberElement());
39152    }
39153    if (element.hasType()) {
39154      composeCodeableConcept("type", element.getType());
39155    }
39156    if (element.hasTextElement()) {
39157      composeString("text", element.getTextElement());
39158    }
39159    if (element.hasLanguage()) {
39160      composeCodeableConcept("language", element.getLanguage());
39161    }
39162  }
39163
39164  protected void composeClaimResponseInsuranceComponent(String name, ClaimResponse.InsuranceComponent element) throws IOException {
39165    if (element != null) {
39166    composeElementAttributes(element);
39167      xml.enter(FHIR_NS, name);
39168      composeClaimResponseInsuranceComponentElements(element);
39169      composeElementClose(element);
39170      xml.exit(FHIR_NS, name);
39171    }
39172  }
39173
39174  protected void composeClaimResponseInsuranceComponentElements(ClaimResponse.InsuranceComponent element) throws IOException {
39175    composeBackboneElementElements(element);
39176    if (element.hasSequenceElement()) {
39177      composePositiveInt("sequence", element.getSequenceElement());
39178    }
39179    if (element.hasFocalElement()) {
39180      composeBoolean("focal", element.getFocalElement());
39181    }
39182    if (element.hasCoverage()) {
39183      composeReference("coverage", element.getCoverage());
39184    }
39185    if (element.hasBusinessArrangementElement()) {
39186      composeString("businessArrangement", element.getBusinessArrangementElement());
39187    }
39188    if (element.hasClaimResponse()) {
39189      composeReference("claimResponse", element.getClaimResponse());
39190    }
39191  }
39192
39193  protected void composeClaimResponseErrorComponent(String name, ClaimResponse.ErrorComponent element) throws IOException {
39194    if (element != null) {
39195    composeElementAttributes(element);
39196      xml.enter(FHIR_NS, name);
39197      composeClaimResponseErrorComponentElements(element);
39198      composeElementClose(element);
39199      xml.exit(FHIR_NS, name);
39200    }
39201  }
39202
39203  protected void composeClaimResponseErrorComponentElements(ClaimResponse.ErrorComponent element) throws IOException {
39204    composeBackboneElementElements(element);
39205    if (element.hasItemSequenceElement()) {
39206      composePositiveInt("itemSequence", element.getItemSequenceElement());
39207    }
39208    if (element.hasDetailSequenceElement()) {
39209      composePositiveInt("detailSequence", element.getDetailSequenceElement());
39210    }
39211    if (element.hasSubDetailSequenceElement()) {
39212      composePositiveInt("subDetailSequence", element.getSubDetailSequenceElement());
39213    }
39214    if (element.hasCode()) {
39215      composeCodeableConcept("code", element.getCode());
39216    }
39217    if (element.hasExpression()) { 
39218      for (StringType e : element.getExpression()) 
39219          composeString("expression", e);
39220    }
39221  }
39222
39223  protected void composeClinicalImpression(String name, ClinicalImpression element) throws IOException {
39224    if (element != null) {
39225    composeResourceAttributes(element);
39226      xml.enter(FHIR_NS, name);
39227      composeClinicalImpressionElements(element);
39228      composeElementClose(element);
39229      xml.exit(FHIR_NS, name);
39230    }
39231  }
39232
39233  protected void composeClinicalImpressionElements(ClinicalImpression element) throws IOException {
39234    composeDomainResourceElements(element);
39235    if (element.hasIdentifier()) { 
39236      for (Identifier e : element.getIdentifier()) 
39237          composeIdentifier("identifier", e);
39238    }
39239    if (element.hasStatusElement())
39240      composeEnumeration("status", element.getStatusElement(), new Enumerations.EventStatusEnumFactory());
39241    if (element.hasStatusReason()) {
39242      composeCodeableConcept("statusReason", element.getStatusReason());
39243    }
39244    if (element.hasDescriptionElement()) {
39245      composeString("description", element.getDescriptionElement());
39246    }
39247    if (element.hasSubject()) {
39248      composeReference("subject", element.getSubject());
39249    }
39250    if (element.hasEncounter()) {
39251      composeReference("encounter", element.getEncounter());
39252    }
39253    if (element.hasEffective()) {
39254      composeType("effective", element.getEffective());
39255    }    if (element.hasDateElement()) {
39256      composeDateTime("date", element.getDateElement());
39257    }
39258    if (element.hasPerformer()) {
39259      composeReference("performer", element.getPerformer());
39260    }
39261    if (element.hasPrevious()) {
39262      composeReference("previous", element.getPrevious());
39263    }
39264    if (element.hasProblem()) { 
39265      for (Reference e : element.getProblem()) 
39266          composeReference("problem", e);
39267    }
39268    if (element.hasChangePattern()) {
39269      composeCodeableConcept("changePattern", element.getChangePattern());
39270    }
39271    if (element.hasProtocol()) { 
39272      for (UriType e : element.getProtocol()) 
39273          composeUri("protocol", e);
39274    }
39275    if (element.hasSummaryElement()) {
39276      composeString("summary", element.getSummaryElement());
39277    }
39278    if (element.hasFinding()) { 
39279      for (ClinicalImpression.ClinicalImpressionFindingComponent e : element.getFinding()) 
39280          composeClinicalImpressionFindingComponent("finding", e);
39281    }
39282    if (element.hasPrognosisCodeableConcept()) { 
39283      for (CodeableConcept e : element.getPrognosisCodeableConcept()) 
39284          composeCodeableConcept("prognosisCodeableConcept", e);
39285    }
39286    if (element.hasPrognosisReference()) { 
39287      for (Reference e : element.getPrognosisReference()) 
39288          composeReference("prognosisReference", e);
39289    }
39290    if (element.hasSupportingInfo()) { 
39291      for (Reference e : element.getSupportingInfo()) 
39292          composeReference("supportingInfo", e);
39293    }
39294    if (element.hasNote()) { 
39295      for (Annotation e : element.getNote()) 
39296          composeAnnotation("note", e);
39297    }
39298  }
39299
39300  protected void composeClinicalImpressionFindingComponent(String name, ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
39301    if (element != null) {
39302    composeElementAttributes(element);
39303      xml.enter(FHIR_NS, name);
39304      composeClinicalImpressionFindingComponentElements(element);
39305      composeElementClose(element);
39306      xml.exit(FHIR_NS, name);
39307    }
39308  }
39309
39310  protected void composeClinicalImpressionFindingComponentElements(ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
39311    composeBackboneElementElements(element);
39312    if (element.hasItem()) {
39313      composeCodeableReference("item", element.getItem());
39314    }
39315    if (element.hasBasisElement()) {
39316      composeString("basis", element.getBasisElement());
39317    }
39318  }
39319
39320  protected void composeClinicalUseDefinition(String name, ClinicalUseDefinition element) throws IOException {
39321    if (element != null) {
39322    composeResourceAttributes(element);
39323      xml.enter(FHIR_NS, name);
39324      composeClinicalUseDefinitionElements(element);
39325      composeElementClose(element);
39326      xml.exit(FHIR_NS, name);
39327    }
39328  }
39329
39330  protected void composeClinicalUseDefinitionElements(ClinicalUseDefinition element) throws IOException {
39331    composeDomainResourceElements(element);
39332    if (element.hasIdentifier()) { 
39333      for (Identifier e : element.getIdentifier()) 
39334          composeIdentifier("identifier", e);
39335    }
39336    if (element.hasTypeElement())
39337      composeEnumeration("type", element.getTypeElement(), new ClinicalUseDefinition.ClinicalUseDefinitionTypeEnumFactory());
39338    if (element.hasCategory()) { 
39339      for (CodeableConcept e : element.getCategory()) 
39340          composeCodeableConcept("category", e);
39341    }
39342    if (element.hasSubject()) { 
39343      for (Reference e : element.getSubject()) 
39344          composeReference("subject", e);
39345    }
39346    if (element.hasStatus()) {
39347      composeCodeableConcept("status", element.getStatus());
39348    }
39349    if (element.hasContraindication()) {
39350      composeClinicalUseDefinitionContraindicationComponent("contraindication", element.getContraindication());
39351    }
39352    if (element.hasIndication()) {
39353      composeClinicalUseDefinitionIndicationComponent("indication", element.getIndication());
39354    }
39355    if (element.hasInteraction()) {
39356      composeClinicalUseDefinitionInteractionComponent("interaction", element.getInteraction());
39357    }
39358    if (element.hasPopulation()) { 
39359      for (Reference e : element.getPopulation()) 
39360          composeReference("population", e);
39361    }
39362    if (element.hasLibrary()) { 
39363      for (CanonicalType e : element.getLibrary()) 
39364          composeCanonical("library", e);
39365    }
39366    if (element.hasUndesirableEffect()) {
39367      composeClinicalUseDefinitionUndesirableEffectComponent("undesirableEffect", element.getUndesirableEffect());
39368    }
39369    if (element.hasWarning()) {
39370      composeClinicalUseDefinitionWarningComponent("warning", element.getWarning());
39371    }
39372  }
39373
39374  protected void composeClinicalUseDefinitionContraindicationComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionContraindicationComponent element) throws IOException {
39375    if (element != null) {
39376    composeElementAttributes(element);
39377      xml.enter(FHIR_NS, name);
39378      composeClinicalUseDefinitionContraindicationComponentElements(element);
39379      composeElementClose(element);
39380      xml.exit(FHIR_NS, name);
39381    }
39382  }
39383
39384  protected void composeClinicalUseDefinitionContraindicationComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionContraindicationComponent element) throws IOException {
39385    composeBackboneElementElements(element);
39386    if (element.hasDiseaseSymptomProcedure()) {
39387      composeCodeableReference("diseaseSymptomProcedure", element.getDiseaseSymptomProcedure());
39388    }
39389    if (element.hasDiseaseStatus()) {
39390      composeCodeableReference("diseaseStatus", element.getDiseaseStatus());
39391    }
39392    if (element.hasComorbidity()) { 
39393      for (CodeableReference e : element.getComorbidity()) 
39394          composeCodeableReference("comorbidity", e);
39395    }
39396    if (element.hasIndication()) { 
39397      for (Reference e : element.getIndication()) 
39398          composeReference("indication", e);
39399    }
39400    if (element.hasApplicability()) {
39401      composeExpression("applicability", element.getApplicability());
39402    }
39403    if (element.hasOtherTherapy()) { 
39404      for (ClinicalUseDefinition.ClinicalUseDefinitionContraindicationOtherTherapyComponent e : element.getOtherTherapy()) 
39405          composeClinicalUseDefinitionContraindicationOtherTherapyComponent("otherTherapy", e);
39406    }
39407  }
39408
39409  protected void composeClinicalUseDefinitionContraindicationOtherTherapyComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionContraindicationOtherTherapyComponent element) throws IOException {
39410    if (element != null) {
39411    composeElementAttributes(element);
39412      xml.enter(FHIR_NS, name);
39413      composeClinicalUseDefinitionContraindicationOtherTherapyComponentElements(element);
39414      composeElementClose(element);
39415      xml.exit(FHIR_NS, name);
39416    }
39417  }
39418
39419  protected void composeClinicalUseDefinitionContraindicationOtherTherapyComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionContraindicationOtherTherapyComponent element) throws IOException {
39420    composeBackboneElementElements(element);
39421    if (element.hasRelationshipType()) {
39422      composeCodeableConcept("relationshipType", element.getRelationshipType());
39423    }
39424    if (element.hasTreatment()) {
39425      composeCodeableReference("treatment", element.getTreatment());
39426    }
39427  }
39428
39429  protected void composeClinicalUseDefinitionIndicationComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionIndicationComponent element) throws IOException {
39430    if (element != null) {
39431    composeElementAttributes(element);
39432      xml.enter(FHIR_NS, name);
39433      composeClinicalUseDefinitionIndicationComponentElements(element);
39434      composeElementClose(element);
39435      xml.exit(FHIR_NS, name);
39436    }
39437  }
39438
39439  protected void composeClinicalUseDefinitionIndicationComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionIndicationComponent element) throws IOException {
39440    composeBackboneElementElements(element);
39441    if (element.hasDiseaseSymptomProcedure()) {
39442      composeCodeableReference("diseaseSymptomProcedure", element.getDiseaseSymptomProcedure());
39443    }
39444    if (element.hasDiseaseStatus()) {
39445      composeCodeableReference("diseaseStatus", element.getDiseaseStatus());
39446    }
39447    if (element.hasComorbidity()) { 
39448      for (CodeableReference e : element.getComorbidity()) 
39449          composeCodeableReference("comorbidity", e);
39450    }
39451    if (element.hasIntendedEffect()) {
39452      composeCodeableReference("intendedEffect", element.getIntendedEffect());
39453    }
39454    if (element.hasDuration()) {
39455      composeType("duration", element.getDuration());
39456    }    if (element.hasUndesirableEffect()) { 
39457      for (Reference e : element.getUndesirableEffect()) 
39458          composeReference("undesirableEffect", e);
39459    }
39460    if (element.hasApplicability()) {
39461      composeExpression("applicability", element.getApplicability());
39462    }
39463    if (element.hasOtherTherapy()) { 
39464      for (ClinicalUseDefinition.ClinicalUseDefinitionContraindicationOtherTherapyComponent e : element.getOtherTherapy()) 
39465          composeClinicalUseDefinitionContraindicationOtherTherapyComponent("otherTherapy", e);
39466    }
39467  }
39468
39469  protected void composeClinicalUseDefinitionInteractionComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionInteractionComponent element) throws IOException {
39470    if (element != null) {
39471    composeElementAttributes(element);
39472      xml.enter(FHIR_NS, name);
39473      composeClinicalUseDefinitionInteractionComponentElements(element);
39474      composeElementClose(element);
39475      xml.exit(FHIR_NS, name);
39476    }
39477  }
39478
39479  protected void composeClinicalUseDefinitionInteractionComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionInteractionComponent element) throws IOException {
39480    composeBackboneElementElements(element);
39481    if (element.hasInteractant()) { 
39482      for (ClinicalUseDefinition.ClinicalUseDefinitionInteractionInteractantComponent e : element.getInteractant()) 
39483          composeClinicalUseDefinitionInteractionInteractantComponent("interactant", e);
39484    }
39485    if (element.hasType()) {
39486      composeCodeableConcept("type", element.getType());
39487    }
39488    if (element.hasEffect()) {
39489      composeCodeableReference("effect", element.getEffect());
39490    }
39491    if (element.hasIncidence()) {
39492      composeCodeableConcept("incidence", element.getIncidence());
39493    }
39494    if (element.hasManagement()) { 
39495      for (CodeableConcept e : element.getManagement()) 
39496          composeCodeableConcept("management", e);
39497    }
39498  }
39499
39500  protected void composeClinicalUseDefinitionInteractionInteractantComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionInteractionInteractantComponent element) throws IOException {
39501    if (element != null) {
39502    composeElementAttributes(element);
39503      xml.enter(FHIR_NS, name);
39504      composeClinicalUseDefinitionInteractionInteractantComponentElements(element);
39505      composeElementClose(element);
39506      xml.exit(FHIR_NS, name);
39507    }
39508  }
39509
39510  protected void composeClinicalUseDefinitionInteractionInteractantComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionInteractionInteractantComponent element) throws IOException {
39511    composeBackboneElementElements(element);
39512    if (element.hasItem()) {
39513      composeType("item", element.getItem());
39514    }  }
39515
39516  protected void composeClinicalUseDefinitionUndesirableEffectComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionUndesirableEffectComponent element) throws IOException {
39517    if (element != null) {
39518    composeElementAttributes(element);
39519      xml.enter(FHIR_NS, name);
39520      composeClinicalUseDefinitionUndesirableEffectComponentElements(element);
39521      composeElementClose(element);
39522      xml.exit(FHIR_NS, name);
39523    }
39524  }
39525
39526  protected void composeClinicalUseDefinitionUndesirableEffectComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionUndesirableEffectComponent element) throws IOException {
39527    composeBackboneElementElements(element);
39528    if (element.hasSymptomConditionEffect()) {
39529      composeCodeableReference("symptomConditionEffect", element.getSymptomConditionEffect());
39530    }
39531    if (element.hasClassification()) {
39532      composeCodeableConcept("classification", element.getClassification());
39533    }
39534    if (element.hasFrequencyOfOccurrence()) {
39535      composeCodeableConcept("frequencyOfOccurrence", element.getFrequencyOfOccurrence());
39536    }
39537  }
39538
39539  protected void composeClinicalUseDefinitionWarningComponent(String name, ClinicalUseDefinition.ClinicalUseDefinitionWarningComponent element) throws IOException {
39540    if (element != null) {
39541    composeElementAttributes(element);
39542      xml.enter(FHIR_NS, name);
39543      composeClinicalUseDefinitionWarningComponentElements(element);
39544      composeElementClose(element);
39545      xml.exit(FHIR_NS, name);
39546    }
39547  }
39548
39549  protected void composeClinicalUseDefinitionWarningComponentElements(ClinicalUseDefinition.ClinicalUseDefinitionWarningComponent element) throws IOException {
39550    composeBackboneElementElements(element);
39551    if (element.hasDescriptionElement()) {
39552      composeMarkdown("description", element.getDescriptionElement());
39553    }
39554    if (element.hasCode()) {
39555      composeCodeableConcept("code", element.getCode());
39556    }
39557  }
39558
39559  protected void composeCodeSystem(String name, CodeSystem element) throws IOException {
39560    if (element != null) {
39561    composeResourceAttributes(element);
39562      xml.enter(FHIR_NS, name);
39563      composeCodeSystemElements(element);
39564      composeElementClose(element);
39565      xml.exit(FHIR_NS, name);
39566    }
39567  }
39568
39569  protected void composeCodeSystemElements(CodeSystem element) throws IOException {
39570    composeMetadataResourceElements(element);
39571    if (element.hasUrlElement()) {
39572      composeUri("url", element.getUrlElement());
39573    }
39574    if (element.hasIdentifier()) { 
39575      for (Identifier e : element.getIdentifier()) 
39576          composeIdentifier("identifier", e);
39577    }
39578    if (element.hasVersionElement()) {
39579      composeString("version", element.getVersionElement());
39580    }
39581    if (element.hasVersionAlgorithm()) {
39582      composeType("versionAlgorithm", element.getVersionAlgorithm());
39583    }    if (element.hasNameElement()) {
39584      composeString("name", element.getNameElement());
39585    }
39586    if (element.hasTitleElement()) {
39587      composeString("title", element.getTitleElement());
39588    }
39589    if (element.hasStatusElement())
39590      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
39591    if (element.hasExperimentalElement()) {
39592      composeBoolean("experimental", element.getExperimentalElement());
39593    }
39594    if (element.hasDateElement()) {
39595      composeDateTime("date", element.getDateElement());
39596    }
39597    if (element.hasPublisherElement()) {
39598      composeString("publisher", element.getPublisherElement());
39599    }
39600    if (element.hasContact()) { 
39601      for (ContactDetail e : element.getContact()) 
39602          composeContactDetail("contact", e);
39603    }
39604    if (element.hasDescriptionElement()) {
39605      composeMarkdown("description", element.getDescriptionElement());
39606    }
39607    if (element.hasUseContext()) { 
39608      for (UsageContext e : element.getUseContext()) 
39609          composeUsageContext("useContext", e);
39610    }
39611    if (element.hasJurisdiction()) { 
39612      for (CodeableConcept e : element.getJurisdiction()) 
39613          composeCodeableConcept("jurisdiction", e);
39614    }
39615    if (element.hasPurposeElement()) {
39616      composeMarkdown("purpose", element.getPurposeElement());
39617    }
39618    if (element.hasCopyrightElement()) {
39619      composeMarkdown("copyright", element.getCopyrightElement());
39620    }
39621    if (element.hasCopyrightLabelElement()) {
39622      composeString("copyrightLabel", element.getCopyrightLabelElement());
39623    }
39624    if (element.hasApprovalDateElement()) {
39625      composeDate("approvalDate", element.getApprovalDateElement());
39626    }
39627    if (element.hasLastReviewDateElement()) {
39628      composeDate("lastReviewDate", element.getLastReviewDateElement());
39629    }
39630    if (element.hasEffectivePeriod()) {
39631      composePeriod("effectivePeriod", element.getEffectivePeriod());
39632    }
39633    if (element.hasTopic()) { 
39634      for (CodeableConcept e : element.getTopic()) 
39635          composeCodeableConcept("topic", e);
39636    }
39637    if (element.hasAuthor()) { 
39638      for (ContactDetail e : element.getAuthor()) 
39639          composeContactDetail("author", e);
39640    }
39641    if (element.hasEditor()) { 
39642      for (ContactDetail e : element.getEditor()) 
39643          composeContactDetail("editor", e);
39644    }
39645    if (element.hasReviewer()) { 
39646      for (ContactDetail e : element.getReviewer()) 
39647          composeContactDetail("reviewer", e);
39648    }
39649    if (element.hasEndorser()) { 
39650      for (ContactDetail e : element.getEndorser()) 
39651          composeContactDetail("endorser", e);
39652    }
39653    if (element.hasRelatedArtifact()) { 
39654      for (RelatedArtifact e : element.getRelatedArtifact()) 
39655          composeRelatedArtifact("relatedArtifact", e);
39656    }
39657    if (element.hasCaseSensitiveElement()) {
39658      composeBoolean("caseSensitive", element.getCaseSensitiveElement());
39659    }
39660    if (element.hasValueSetElement()) {
39661      composeCanonical("valueSet", element.getValueSetElement());
39662    }
39663    if (element.hasHierarchyMeaningElement())
39664      composeEnumeration("hierarchyMeaning", element.getHierarchyMeaningElement(), new CodeSystem.CodeSystemHierarchyMeaningEnumFactory());
39665    if (element.hasCompositionalElement()) {
39666      composeBoolean("compositional", element.getCompositionalElement());
39667    }
39668    if (element.hasVersionNeededElement()) {
39669      composeBoolean("versionNeeded", element.getVersionNeededElement());
39670    }
39671    if (element.hasContentElement())
39672      composeEnumeration("content", element.getContentElement(), new Enumerations.CodeSystemContentModeEnumFactory());
39673    if (element.hasSupplementsElement()) {
39674      composeCanonical("supplements", element.getSupplementsElement());
39675    }
39676    if (element.hasCountElement()) {
39677      composeUnsignedInt("count", element.getCountElement());
39678    }
39679    if (element.hasFilter()) { 
39680      for (CodeSystem.CodeSystemFilterComponent e : element.getFilter()) 
39681          composeCodeSystemFilterComponent("filter", e);
39682    }
39683    if (element.hasProperty()) { 
39684      for (CodeSystem.PropertyComponent e : element.getProperty()) 
39685          composeCodeSystemPropertyComponent("property", e);
39686    }
39687    if (element.hasConcept()) { 
39688      for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
39689          composeCodeSystemConceptDefinitionComponent("concept", e);
39690    }
39691  }
39692
39693  protected void composeCodeSystemFilterComponent(String name, CodeSystem.CodeSystemFilterComponent element) throws IOException {
39694    if (element != null) {
39695    composeElementAttributes(element);
39696      xml.enter(FHIR_NS, name);
39697      composeCodeSystemFilterComponentElements(element);
39698      composeElementClose(element);
39699      xml.exit(FHIR_NS, name);
39700    }
39701  }
39702
39703  protected void composeCodeSystemFilterComponentElements(CodeSystem.CodeSystemFilterComponent element) throws IOException {
39704    composeBackboneElementElements(element);
39705    if (element.hasCodeElement()) {
39706      composeCode("code", element.getCodeElement());
39707    }
39708    if (element.hasDescriptionElement()) {
39709      composeString("description", element.getDescriptionElement());
39710    }
39711      if (element.hasOperator()) 
39712        for (Enumeration<Enumerations.FilterOperator> e : element.getOperator()) 
39713          composeEnumeration("operator", e, new Enumerations.FilterOperatorEnumFactory());
39714    if (element.hasValueElement()) {
39715      composeString("value", element.getValueElement());
39716    }
39717  }
39718
39719  protected void composeCodeSystemPropertyComponent(String name, CodeSystem.PropertyComponent element) throws IOException {
39720    if (element != null) {
39721    composeElementAttributes(element);
39722      xml.enter(FHIR_NS, name);
39723      composeCodeSystemPropertyComponentElements(element);
39724      composeElementClose(element);
39725      xml.exit(FHIR_NS, name);
39726    }
39727  }
39728
39729  protected void composeCodeSystemPropertyComponentElements(CodeSystem.PropertyComponent element) throws IOException {
39730    composeBackboneElementElements(element);
39731    if (element.hasCodeElement()) {
39732      composeCode("code", element.getCodeElement());
39733    }
39734    if (element.hasUriElement()) {
39735      composeUri("uri", element.getUriElement());
39736    }
39737    if (element.hasDescriptionElement()) {
39738      composeString("description", element.getDescriptionElement());
39739    }
39740    if (element.hasTypeElement())
39741      composeEnumeration("type", element.getTypeElement(), new CodeSystem.PropertyTypeEnumFactory());
39742  }
39743
39744  protected void composeCodeSystemConceptDefinitionComponent(String name, CodeSystem.ConceptDefinitionComponent element) throws IOException {
39745    if (element != null) {
39746    composeElementAttributes(element);
39747      xml.enter(FHIR_NS, name);
39748      composeCodeSystemConceptDefinitionComponentElements(element);
39749      composeElementClose(element);
39750      xml.exit(FHIR_NS, name);
39751    }
39752  }
39753
39754  protected void composeCodeSystemConceptDefinitionComponentElements(CodeSystem.ConceptDefinitionComponent element) throws IOException {
39755    composeBackboneElementElements(element);
39756    if (element.hasCodeElement()) {
39757      composeCode("code", element.getCodeElement());
39758    }
39759    if (element.hasDisplayElement()) {
39760      composeString("display", element.getDisplayElement());
39761    }
39762    if (element.hasDefinitionElement()) {
39763      composeString("definition", element.getDefinitionElement());
39764    }
39765    if (element.hasDesignation()) { 
39766      for (CodeSystem.ConceptDefinitionDesignationComponent e : element.getDesignation()) 
39767          composeCodeSystemConceptDefinitionDesignationComponent("designation", e);
39768    }
39769    if (element.hasProperty()) { 
39770      for (CodeSystem.ConceptPropertyComponent e : element.getProperty()) 
39771          composeCodeSystemConceptPropertyComponent("property", e);
39772    }
39773    if (element.hasConcept()) { 
39774      for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
39775          composeCodeSystemConceptDefinitionComponent("concept", e);
39776    }
39777  }
39778
39779  protected void composeCodeSystemConceptDefinitionDesignationComponent(String name, CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
39780    if (element != null) {
39781    composeElementAttributes(element);
39782      xml.enter(FHIR_NS, name);
39783      composeCodeSystemConceptDefinitionDesignationComponentElements(element);
39784      composeElementClose(element);
39785      xml.exit(FHIR_NS, name);
39786    }
39787  }
39788
39789  protected void composeCodeSystemConceptDefinitionDesignationComponentElements(CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
39790    composeBackboneElementElements(element);
39791    if (element.hasLanguageElement()) {
39792      composeCode("language", element.getLanguageElement());
39793    }
39794    if (element.hasUse()) {
39795      composeCoding("use", element.getUse());
39796    }
39797    if (element.hasAdditionalUse()) { 
39798      for (Coding e : element.getAdditionalUse()) 
39799          composeCoding("additionalUse", e);
39800    }
39801    if (element.hasValueElement()) {
39802      composeString("value", element.getValueElement());
39803    }
39804  }
39805
39806  protected void composeCodeSystemConceptPropertyComponent(String name, CodeSystem.ConceptPropertyComponent element) throws IOException {
39807    if (element != null) {
39808    composeElementAttributes(element);
39809      xml.enter(FHIR_NS, name);
39810      composeCodeSystemConceptPropertyComponentElements(element);
39811      composeElementClose(element);
39812      xml.exit(FHIR_NS, name);
39813    }
39814  }
39815
39816  protected void composeCodeSystemConceptPropertyComponentElements(CodeSystem.ConceptPropertyComponent element) throws IOException {
39817    composeBackboneElementElements(element);
39818    if (element.hasCodeElement()) {
39819      composeCode("code", element.getCodeElement());
39820    }
39821    if (element.hasValue()) {
39822      composeType("value", element.getValue());
39823    }  }
39824
39825  protected void composeCommunication(String name, Communication element) throws IOException {
39826    if (element != null) {
39827    composeResourceAttributes(element);
39828      xml.enter(FHIR_NS, name);
39829      composeCommunicationElements(element);
39830      composeElementClose(element);
39831      xml.exit(FHIR_NS, name);
39832    }
39833  }
39834
39835  protected void composeCommunicationElements(Communication element) throws IOException {
39836    composeDomainResourceElements(element);
39837    if (element.hasIdentifier()) { 
39838      for (Identifier e : element.getIdentifier()) 
39839          composeIdentifier("identifier", e);
39840    }
39841    if (element.hasInstantiatesCanonical()) { 
39842      for (CanonicalType e : element.getInstantiatesCanonical()) 
39843          composeCanonical("instantiatesCanonical", e);
39844    }
39845    if (element.hasInstantiatesUri()) { 
39846      for (UriType e : element.getInstantiatesUri()) 
39847          composeUri("instantiatesUri", e);
39848    }
39849    if (element.hasBasedOn()) { 
39850      for (Reference e : element.getBasedOn()) 
39851          composeReference("basedOn", e);
39852    }
39853    if (element.hasPartOf()) { 
39854      for (Reference e : element.getPartOf()) 
39855          composeReference("partOf", e);
39856    }
39857    if (element.hasInResponseTo()) { 
39858      for (Reference e : element.getInResponseTo()) 
39859          composeReference("inResponseTo", e);
39860    }
39861    if (element.hasStatusElement())
39862      composeEnumeration("status", element.getStatusElement(), new Enumerations.EventStatusEnumFactory());
39863    if (element.hasStatusReason()) {
39864      composeCodeableConcept("statusReason", element.getStatusReason());
39865    }
39866    if (element.hasCategory()) { 
39867      for (CodeableConcept e : element.getCategory()) 
39868          composeCodeableConcept("category", e);
39869    }
39870    if (element.hasPriorityElement())
39871      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
39872    if (element.hasMedium()) { 
39873      for (CodeableConcept e : element.getMedium()) 
39874          composeCodeableConcept("medium", e);
39875    }
39876    if (element.hasSubject()) {
39877      composeReference("subject", element.getSubject());
39878    }
39879    if (element.hasTopic()) {
39880      composeCodeableConcept("topic", element.getTopic());
39881    }
39882    if (element.hasAbout()) { 
39883      for (Reference e : element.getAbout()) 
39884          composeReference("about", e);
39885    }
39886    if (element.hasEncounter()) {
39887      composeReference("encounter", element.getEncounter());
39888    }
39889    if (element.hasSentElement()) {
39890      composeDateTime("sent", element.getSentElement());
39891    }
39892    if (element.hasReceivedElement()) {
39893      composeDateTime("received", element.getReceivedElement());
39894    }
39895    if (element.hasRecipient()) { 
39896      for (Reference e : element.getRecipient()) 
39897          composeReference("recipient", e);
39898    }
39899    if (element.hasSender()) {
39900      composeReference("sender", element.getSender());
39901    }
39902    if (element.hasReason()) { 
39903      for (CodeableReference e : element.getReason()) 
39904          composeCodeableReference("reason", e);
39905    }
39906    if (element.hasPayload()) { 
39907      for (Communication.CommunicationPayloadComponent e : element.getPayload()) 
39908          composeCommunicationPayloadComponent("payload", e);
39909    }
39910    if (element.hasNote()) { 
39911      for (Annotation e : element.getNote()) 
39912          composeAnnotation("note", e);
39913    }
39914  }
39915
39916  protected void composeCommunicationPayloadComponent(String name, Communication.CommunicationPayloadComponent element) throws IOException {
39917    if (element != null) {
39918    composeElementAttributes(element);
39919      xml.enter(FHIR_NS, name);
39920      composeCommunicationPayloadComponentElements(element);
39921      composeElementClose(element);
39922      xml.exit(FHIR_NS, name);
39923    }
39924  }
39925
39926  protected void composeCommunicationPayloadComponentElements(Communication.CommunicationPayloadComponent element) throws IOException {
39927    composeBackboneElementElements(element);
39928    if (element.hasContent()) {
39929      composeType("content", element.getContent());
39930    }  }
39931
39932  protected void composeCommunicationRequest(String name, CommunicationRequest element) throws IOException {
39933    if (element != null) {
39934    composeResourceAttributes(element);
39935      xml.enter(FHIR_NS, name);
39936      composeCommunicationRequestElements(element);
39937      composeElementClose(element);
39938      xml.exit(FHIR_NS, name);
39939    }
39940  }
39941
39942  protected void composeCommunicationRequestElements(CommunicationRequest element) throws IOException {
39943    composeDomainResourceElements(element);
39944    if (element.hasIdentifier()) { 
39945      for (Identifier e : element.getIdentifier()) 
39946          composeIdentifier("identifier", e);
39947    }
39948    if (element.hasBasedOn()) { 
39949      for (Reference e : element.getBasedOn()) 
39950          composeReference("basedOn", e);
39951    }
39952    if (element.hasReplaces()) { 
39953      for (Reference e : element.getReplaces()) 
39954          composeReference("replaces", e);
39955    }
39956    if (element.hasGroupIdentifier()) {
39957      composeIdentifier("groupIdentifier", element.getGroupIdentifier());
39958    }
39959    if (element.hasStatusElement())
39960      composeEnumeration("status", element.getStatusElement(), new Enumerations.RequestStatusEnumFactory());
39961    if (element.hasStatusReason()) {
39962      composeCodeableConcept("statusReason", element.getStatusReason());
39963    }
39964    if (element.hasIntentElement())
39965      composeEnumeration("intent", element.getIntentElement(), new Enumerations.RequestIntentEnumFactory());
39966    if (element.hasCategory()) { 
39967      for (CodeableConcept e : element.getCategory()) 
39968          composeCodeableConcept("category", e);
39969    }
39970    if (element.hasPriorityElement())
39971      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
39972    if (element.hasDoNotPerformElement()) {
39973      composeBoolean("doNotPerform", element.getDoNotPerformElement());
39974    }
39975    if (element.hasMedium()) { 
39976      for (CodeableConcept e : element.getMedium()) 
39977          composeCodeableConcept("medium", e);
39978    }
39979    if (element.hasSubject()) {
39980      composeReference("subject", element.getSubject());
39981    }
39982    if (element.hasAbout()) { 
39983      for (Reference e : element.getAbout()) 
39984          composeReference("about", e);
39985    }
39986    if (element.hasEncounter()) {
39987      composeReference("encounter", element.getEncounter());
39988    }
39989    if (element.hasPayload()) { 
39990      for (CommunicationRequest.CommunicationRequestPayloadComponent e : element.getPayload()) 
39991          composeCommunicationRequestPayloadComponent("payload", e);
39992    }
39993    if (element.hasOccurrence()) {
39994      composeType("occurrence", element.getOccurrence());
39995    }    if (element.hasAuthoredOnElement()) {
39996      composeDateTime("authoredOn", element.getAuthoredOnElement());
39997    }
39998    if (element.hasRequester()) {
39999      composeReference("requester", element.getRequester());
40000    }
40001    if (element.hasRecipient()) { 
40002      for (Reference e : element.getRecipient()) 
40003          composeReference("recipient", e);
40004    }
40005    if (element.hasInformationProvider()) { 
40006      for (Reference e : element.getInformationProvider()) 
40007          composeReference("informationProvider", e);
40008    }
40009    if (element.hasReason()) { 
40010      for (CodeableReference e : element.getReason()) 
40011          composeCodeableReference("reason", e);
40012    }
40013    if (element.hasNote()) { 
40014      for (Annotation e : element.getNote()) 
40015          composeAnnotation("note", e);
40016    }
40017  }
40018
40019  protected void composeCommunicationRequestPayloadComponent(String name, CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
40020    if (element != null) {
40021    composeElementAttributes(element);
40022      xml.enter(FHIR_NS, name);
40023      composeCommunicationRequestPayloadComponentElements(element);
40024      composeElementClose(element);
40025      xml.exit(FHIR_NS, name);
40026    }
40027  }
40028
40029  protected void composeCommunicationRequestPayloadComponentElements(CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
40030    composeBackboneElementElements(element);
40031    if (element.hasContent()) {
40032      composeType("content", element.getContent());
40033    }  }
40034
40035  protected void composeCompartmentDefinition(String name, CompartmentDefinition element) throws IOException {
40036    if (element != null) {
40037    composeResourceAttributes(element);
40038      xml.enter(FHIR_NS, name);
40039      composeCompartmentDefinitionElements(element);
40040      composeElementClose(element);
40041      xml.exit(FHIR_NS, name);
40042    }
40043  }
40044
40045  protected void composeCompartmentDefinitionElements(CompartmentDefinition element) throws IOException {
40046    composeCanonicalResourceElements(element);
40047    if (element.hasUrlElement()) {
40048      composeUri("url", element.getUrlElement());
40049    }
40050    if (element.hasVersionElement()) {
40051      composeString("version", element.getVersionElement());
40052    }
40053    if (element.hasVersionAlgorithm()) {
40054      composeType("versionAlgorithm", element.getVersionAlgorithm());
40055    }    if (element.hasNameElement()) {
40056      composeString("name", element.getNameElement());
40057    }
40058    if (element.hasTitleElement()) {
40059      composeString("title", element.getTitleElement());
40060    }
40061    if (element.hasStatusElement())
40062      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
40063    if (element.hasExperimentalElement()) {
40064      composeBoolean("experimental", element.getExperimentalElement());
40065    }
40066    if (element.hasDateElement()) {
40067      composeDateTime("date", element.getDateElement());
40068    }
40069    if (element.hasPublisherElement()) {
40070      composeString("publisher", element.getPublisherElement());
40071    }
40072    if (element.hasContact()) { 
40073      for (ContactDetail e : element.getContact()) 
40074          composeContactDetail("contact", e);
40075    }
40076    if (element.hasDescriptionElement()) {
40077      composeMarkdown("description", element.getDescriptionElement());
40078    }
40079    if (element.hasUseContext()) { 
40080      for (UsageContext e : element.getUseContext()) 
40081          composeUsageContext("useContext", e);
40082    }
40083    if (element.hasPurposeElement()) {
40084      composeMarkdown("purpose", element.getPurposeElement());
40085    }
40086    if (element.hasCodeElement())
40087      composeEnumeration("code", element.getCodeElement(), new Enumerations.CompartmentTypeEnumFactory());
40088    if (element.hasSearchElement()) {
40089      composeBoolean("search", element.getSearchElement());
40090    }
40091    if (element.hasResource()) { 
40092      for (CompartmentDefinition.CompartmentDefinitionResourceComponent e : element.getResource()) 
40093          composeCompartmentDefinitionResourceComponent("resource", e);
40094    }
40095  }
40096
40097  protected void composeCompartmentDefinitionResourceComponent(String name, CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
40098    if (element != null) {
40099    composeElementAttributes(element);
40100      xml.enter(FHIR_NS, name);
40101      composeCompartmentDefinitionResourceComponentElements(element);
40102      composeElementClose(element);
40103      xml.exit(FHIR_NS, name);
40104    }
40105  }
40106
40107  protected void composeCompartmentDefinitionResourceComponentElements(CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
40108    composeBackboneElementElements(element);
40109    if (element.hasCodeElement()) {
40110      composeCode("code", element.getCodeElement());
40111    }
40112    if (element.hasParam()) { 
40113      for (StringType e : element.getParam()) 
40114          composeString("param", e);
40115    }
40116    if (element.hasDocumentationElement()) {
40117      composeString("documentation", element.getDocumentationElement());
40118    }
40119    if (element.hasStartParamElement()) {
40120      composeUri("startParam", element.getStartParamElement());
40121    }
40122    if (element.hasEndParamElement()) {
40123      composeUri("endParam", element.getEndParamElement());
40124    }
40125  }
40126
40127  protected void composeComposition(String name, Composition element) throws IOException {
40128    if (element != null) {
40129    composeResourceAttributes(element);
40130      xml.enter(FHIR_NS, name);
40131      composeCompositionElements(element);
40132      composeElementClose(element);
40133      xml.exit(FHIR_NS, name);
40134    }
40135  }
40136
40137  protected void composeCompositionElements(Composition element) throws IOException {
40138    composeDomainResourceElements(element);
40139    if (element.hasUrlElement()) {
40140      composeUri("url", element.getUrlElement());
40141    }
40142    if (element.hasIdentifier()) { 
40143      for (Identifier e : element.getIdentifier()) 
40144          composeIdentifier("identifier", e);
40145    }
40146    if (element.hasVersionElement()) {
40147      composeString("version", element.getVersionElement());
40148    }
40149    if (element.hasStatusElement())
40150      composeEnumeration("status", element.getStatusElement(), new Enumerations.CompositionStatusEnumFactory());
40151    if (element.hasType()) {
40152      composeCodeableConcept("type", element.getType());
40153    }
40154    if (element.hasCategory()) { 
40155      for (CodeableConcept e : element.getCategory()) 
40156          composeCodeableConcept("category", e);
40157    }
40158    if (element.hasSubject()) { 
40159      for (Reference e : element.getSubject()) 
40160          composeReference("subject", e);
40161    }
40162    if (element.hasEncounter()) {
40163      composeReference("encounter", element.getEncounter());
40164    }
40165    if (element.hasDateElement()) {
40166      composeDateTime("date", element.getDateElement());
40167    }
40168    if (element.hasUseContext()) { 
40169      for (UsageContext e : element.getUseContext()) 
40170          composeUsageContext("useContext", e);
40171    }
40172    if (element.hasAuthor()) { 
40173      for (Reference e : element.getAuthor()) 
40174          composeReference("author", e);
40175    }
40176    if (element.hasNameElement()) {
40177      composeString("name", element.getNameElement());
40178    }
40179    if (element.hasTitleElement()) {
40180      composeString("title", element.getTitleElement());
40181    }
40182    if (element.hasNote()) { 
40183      for (Annotation e : element.getNote()) 
40184          composeAnnotation("note", e);
40185    }
40186    if (element.hasAttester()) { 
40187      for (Composition.CompositionAttesterComponent e : element.getAttester()) 
40188          composeCompositionAttesterComponent("attester", e);
40189    }
40190    if (element.hasCustodian()) {
40191      composeReference("custodian", element.getCustodian());
40192    }
40193    if (element.hasRelatesTo()) { 
40194      for (RelatedArtifact e : element.getRelatesTo()) 
40195          composeRelatedArtifact("relatesTo", e);
40196    }
40197    if (element.hasEvent()) { 
40198      for (Composition.CompositionEventComponent e : element.getEvent()) 
40199          composeCompositionEventComponent("event", e);
40200    }
40201    if (element.hasSection()) { 
40202      for (Composition.SectionComponent e : element.getSection()) 
40203          composeCompositionSectionComponent("section", e);
40204    }
40205  }
40206
40207  protected void composeCompositionAttesterComponent(String name, Composition.CompositionAttesterComponent element) throws IOException {
40208    if (element != null) {
40209    composeElementAttributes(element);
40210      xml.enter(FHIR_NS, name);
40211      composeCompositionAttesterComponentElements(element);
40212      composeElementClose(element);
40213      xml.exit(FHIR_NS, name);
40214    }
40215  }
40216
40217  protected void composeCompositionAttesterComponentElements(Composition.CompositionAttesterComponent element) throws IOException {
40218    composeBackboneElementElements(element);
40219    if (element.hasMode()) {
40220      composeCodeableConcept("mode", element.getMode());
40221    }
40222    if (element.hasTimeElement()) {
40223      composeDateTime("time", element.getTimeElement());
40224    }
40225    if (element.hasParty()) {
40226      composeReference("party", element.getParty());
40227    }
40228  }
40229
40230  protected void composeCompositionEventComponent(String name, Composition.CompositionEventComponent element) throws IOException {
40231    if (element != null) {
40232    composeElementAttributes(element);
40233      xml.enter(FHIR_NS, name);
40234      composeCompositionEventComponentElements(element);
40235      composeElementClose(element);
40236      xml.exit(FHIR_NS, name);
40237    }
40238  }
40239
40240  protected void composeCompositionEventComponentElements(Composition.CompositionEventComponent element) throws IOException {
40241    composeBackboneElementElements(element);
40242    if (element.hasPeriod()) {
40243      composePeriod("period", element.getPeriod());
40244    }
40245    if (element.hasDetail()) { 
40246      for (CodeableReference e : element.getDetail()) 
40247          composeCodeableReference("detail", e);
40248    }
40249  }
40250
40251  protected void composeCompositionSectionComponent(String name, Composition.SectionComponent element) throws IOException {
40252    if (element != null) {
40253    composeElementAttributes(element);
40254      xml.enter(FHIR_NS, name);
40255      composeCompositionSectionComponentElements(element);
40256      composeElementClose(element);
40257      xml.exit(FHIR_NS, name);
40258    }
40259  }
40260
40261  protected void composeCompositionSectionComponentElements(Composition.SectionComponent element) throws IOException {
40262    composeBackboneElementElements(element);
40263    if (element.hasTitleElement()) {
40264      composeString("title", element.getTitleElement());
40265    }
40266    if (element.hasCode()) {
40267      composeCodeableConcept("code", element.getCode());
40268    }
40269    if (element.hasAuthor()) { 
40270      for (Reference e : element.getAuthor()) 
40271          composeReference("author", e);
40272    }
40273    if (element.hasFocus()) {
40274      composeReference("focus", element.getFocus());
40275    }
40276    if (element.hasText()) {
40277      composeNarrative("text", element.getText());
40278    }
40279    if (element.hasOrderedBy()) {
40280      composeCodeableConcept("orderedBy", element.getOrderedBy());
40281    }
40282    if (element.hasEntry()) { 
40283      for (Reference e : element.getEntry()) 
40284          composeReference("entry", e);
40285    }
40286    if (element.hasEmptyReason()) {
40287      composeCodeableConcept("emptyReason", element.getEmptyReason());
40288    }
40289    if (element.hasSection()) { 
40290      for (Composition.SectionComponent e : element.getSection()) 
40291          composeCompositionSectionComponent("section", e);
40292    }
40293  }
40294
40295  protected void composeConceptMap(String name, ConceptMap element) throws IOException {
40296    if (element != null) {
40297    composeResourceAttributes(element);
40298      xml.enter(FHIR_NS, name);
40299      composeConceptMapElements(element);
40300      composeElementClose(element);
40301      xml.exit(FHIR_NS, name);
40302    }
40303  }
40304
40305  protected void composeConceptMapElements(ConceptMap element) throws IOException {
40306    composeMetadataResourceElements(element);
40307    if (element.hasUrlElement()) {
40308      composeUri("url", element.getUrlElement());
40309    }
40310    if (element.hasIdentifier()) { 
40311      for (Identifier e : element.getIdentifier()) 
40312          composeIdentifier("identifier", e);
40313    }
40314    if (element.hasVersionElement()) {
40315      composeString("version", element.getVersionElement());
40316    }
40317    if (element.hasVersionAlgorithm()) {
40318      composeType("versionAlgorithm", element.getVersionAlgorithm());
40319    }    if (element.hasNameElement()) {
40320      composeString("name", element.getNameElement());
40321    }
40322    if (element.hasTitleElement()) {
40323      composeString("title", element.getTitleElement());
40324    }
40325    if (element.hasStatusElement())
40326      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
40327    if (element.hasExperimentalElement()) {
40328      composeBoolean("experimental", element.getExperimentalElement());
40329    }
40330    if (element.hasDateElement()) {
40331      composeDateTime("date", element.getDateElement());
40332    }
40333    if (element.hasPublisherElement()) {
40334      composeString("publisher", element.getPublisherElement());
40335    }
40336    if (element.hasContact()) { 
40337      for (ContactDetail e : element.getContact()) 
40338          composeContactDetail("contact", e);
40339    }
40340    if (element.hasDescriptionElement()) {
40341      composeMarkdown("description", element.getDescriptionElement());
40342    }
40343    if (element.hasUseContext()) { 
40344      for (UsageContext e : element.getUseContext()) 
40345          composeUsageContext("useContext", e);
40346    }
40347    if (element.hasJurisdiction()) { 
40348      for (CodeableConcept e : element.getJurisdiction()) 
40349          composeCodeableConcept("jurisdiction", e);
40350    }
40351    if (element.hasPurposeElement()) {
40352      composeMarkdown("purpose", element.getPurposeElement());
40353    }
40354    if (element.hasCopyrightElement()) {
40355      composeMarkdown("copyright", element.getCopyrightElement());
40356    }
40357    if (element.hasCopyrightLabelElement()) {
40358      composeString("copyrightLabel", element.getCopyrightLabelElement());
40359    }
40360    if (element.hasApprovalDateElement()) {
40361      composeDate("approvalDate", element.getApprovalDateElement());
40362    }
40363    if (element.hasLastReviewDateElement()) {
40364      composeDate("lastReviewDate", element.getLastReviewDateElement());
40365    }
40366    if (element.hasEffectivePeriod()) {
40367      composePeriod("effectivePeriod", element.getEffectivePeriod());
40368    }
40369    if (element.hasTopic()) { 
40370      for (CodeableConcept e : element.getTopic()) 
40371          composeCodeableConcept("topic", e);
40372    }
40373    if (element.hasAuthor()) { 
40374      for (ContactDetail e : element.getAuthor()) 
40375          composeContactDetail("author", e);
40376    }
40377    if (element.hasEditor()) { 
40378      for (ContactDetail e : element.getEditor()) 
40379          composeContactDetail("editor", e);
40380    }
40381    if (element.hasReviewer()) { 
40382      for (ContactDetail e : element.getReviewer()) 
40383          composeContactDetail("reviewer", e);
40384    }
40385    if (element.hasEndorser()) { 
40386      for (ContactDetail e : element.getEndorser()) 
40387          composeContactDetail("endorser", e);
40388    }
40389    if (element.hasRelatedArtifact()) { 
40390      for (RelatedArtifact e : element.getRelatedArtifact()) 
40391          composeRelatedArtifact("relatedArtifact", e);
40392    }
40393    if (element.hasProperty()) { 
40394      for (ConceptMap.PropertyComponent e : element.getProperty()) 
40395          composeConceptMapPropertyComponent("property", e);
40396    }
40397    if (element.hasAdditionalAttribute()) { 
40398      for (ConceptMap.AdditionalAttributeComponent e : element.getAdditionalAttribute()) 
40399          composeConceptMapAdditionalAttributeComponent("additionalAttribute", e);
40400    }
40401    if (element.hasSourceScope()) {
40402      composeType("sourceScope", element.getSourceScope());
40403    }    if (element.hasTargetScope()) {
40404      composeType("targetScope", element.getTargetScope());
40405    }    if (element.hasGroup()) { 
40406      for (ConceptMap.ConceptMapGroupComponent e : element.getGroup()) 
40407          composeConceptMapGroupComponent("group", e);
40408    }
40409  }
40410
40411  protected void composeConceptMapPropertyComponent(String name, ConceptMap.PropertyComponent element) throws IOException {
40412    if (element != null) {
40413    composeElementAttributes(element);
40414      xml.enter(FHIR_NS, name);
40415      composeConceptMapPropertyComponentElements(element);
40416      composeElementClose(element);
40417      xml.exit(FHIR_NS, name);
40418    }
40419  }
40420
40421  protected void composeConceptMapPropertyComponentElements(ConceptMap.PropertyComponent element) throws IOException {
40422    composeBackboneElementElements(element);
40423    if (element.hasCodeElement()) {
40424      composeCode("code", element.getCodeElement());
40425    }
40426    if (element.hasUriElement()) {
40427      composeUri("uri", element.getUriElement());
40428    }
40429    if (element.hasDescriptionElement()) {
40430      composeString("description", element.getDescriptionElement());
40431    }
40432    if (element.hasTypeElement())
40433      composeEnumeration("type", element.getTypeElement(), new ConceptMap.ConceptMapPropertyTypeEnumFactory());
40434    if (element.hasSystemElement()) {
40435      composeCanonical("system", element.getSystemElement());
40436    }
40437  }
40438
40439  protected void composeConceptMapAdditionalAttributeComponent(String name, ConceptMap.AdditionalAttributeComponent element) throws IOException {
40440    if (element != null) {
40441    composeElementAttributes(element);
40442      xml.enter(FHIR_NS, name);
40443      composeConceptMapAdditionalAttributeComponentElements(element);
40444      composeElementClose(element);
40445      xml.exit(FHIR_NS, name);
40446    }
40447  }
40448
40449  protected void composeConceptMapAdditionalAttributeComponentElements(ConceptMap.AdditionalAttributeComponent element) throws IOException {
40450    composeBackboneElementElements(element);
40451    if (element.hasCodeElement()) {
40452      composeCode("code", element.getCodeElement());
40453    }
40454    if (element.hasUriElement()) {
40455      composeUri("uri", element.getUriElement());
40456    }
40457    if (element.hasDescriptionElement()) {
40458      composeString("description", element.getDescriptionElement());
40459    }
40460    if (element.hasTypeElement())
40461      composeEnumeration("type", element.getTypeElement(), new ConceptMap.ConceptMapAttributeTypeEnumFactory());
40462  }
40463
40464  protected void composeConceptMapGroupComponent(String name, ConceptMap.ConceptMapGroupComponent element) throws IOException {
40465    if (element != null) {
40466    composeElementAttributes(element);
40467      xml.enter(FHIR_NS, name);
40468      composeConceptMapGroupComponentElements(element);
40469      composeElementClose(element);
40470      xml.exit(FHIR_NS, name);
40471    }
40472  }
40473
40474  protected void composeConceptMapGroupComponentElements(ConceptMap.ConceptMapGroupComponent element) throws IOException {
40475    composeBackboneElementElements(element);
40476    if (element.hasSourceElement()) {
40477      composeCanonical("source", element.getSourceElement());
40478    }
40479    if (element.hasTargetElement()) {
40480      composeCanonical("target", element.getTargetElement());
40481    }
40482    if (element.hasElement()) { 
40483      for (ConceptMap.SourceElementComponent e : element.getElement()) 
40484          composeConceptMapSourceElementComponent("element", e);
40485    }
40486    if (element.hasUnmapped()) {
40487      composeConceptMapGroupUnmappedComponent("unmapped", element.getUnmapped());
40488    }
40489  }
40490
40491  protected void composeConceptMapSourceElementComponent(String name, ConceptMap.SourceElementComponent element) throws IOException {
40492    if (element != null) {
40493    composeElementAttributes(element);
40494      xml.enter(FHIR_NS, name);
40495      composeConceptMapSourceElementComponentElements(element);
40496      composeElementClose(element);
40497      xml.exit(FHIR_NS, name);
40498    }
40499  }
40500
40501  protected void composeConceptMapSourceElementComponentElements(ConceptMap.SourceElementComponent element) throws IOException {
40502    composeBackboneElementElements(element);
40503    if (element.hasCodeElement()) {
40504      composeCode("code", element.getCodeElement());
40505    }
40506    if (element.hasDisplayElement()) {
40507      composeString("display", element.getDisplayElement());
40508    }
40509    if (element.hasValueSetElement()) {
40510      composeCanonical("valueSet", element.getValueSetElement());
40511    }
40512    if (element.hasNoMapElement()) {
40513      composeBoolean("noMap", element.getNoMapElement());
40514    }
40515    if (element.hasTarget()) { 
40516      for (ConceptMap.TargetElementComponent e : element.getTarget()) 
40517          composeConceptMapTargetElementComponent("target", e);
40518    }
40519  }
40520
40521  protected void composeConceptMapTargetElementComponent(String name, ConceptMap.TargetElementComponent element) throws IOException {
40522    if (element != null) {
40523    composeElementAttributes(element);
40524      xml.enter(FHIR_NS, name);
40525      composeConceptMapTargetElementComponentElements(element);
40526      composeElementClose(element);
40527      xml.exit(FHIR_NS, name);
40528    }
40529  }
40530
40531  protected void composeConceptMapTargetElementComponentElements(ConceptMap.TargetElementComponent element) throws IOException {
40532    composeBackboneElementElements(element);
40533    if (element.hasCodeElement()) {
40534      composeCode("code", element.getCodeElement());
40535    }
40536    if (element.hasDisplayElement()) {
40537      composeString("display", element.getDisplayElement());
40538    }
40539    if (element.hasValueSetElement()) {
40540      composeCanonical("valueSet", element.getValueSetElement());
40541    }
40542    if (element.hasRelationshipElement())
40543      composeEnumeration("relationship", element.getRelationshipElement(), new Enumerations.ConceptMapRelationshipEnumFactory());
40544    if (element.hasCommentElement()) {
40545      composeString("comment", element.getCommentElement());
40546    }
40547    if (element.hasProperty()) { 
40548      for (ConceptMap.MappingPropertyComponent e : element.getProperty()) 
40549          composeConceptMapMappingPropertyComponent("property", e);
40550    }
40551    if (element.hasDependsOn()) { 
40552      for (ConceptMap.OtherElementComponent e : element.getDependsOn()) 
40553          composeConceptMapOtherElementComponent("dependsOn", e);
40554    }
40555    if (element.hasProduct()) { 
40556      for (ConceptMap.OtherElementComponent e : element.getProduct()) 
40557          composeConceptMapOtherElementComponent("product", e);
40558    }
40559  }
40560
40561  protected void composeConceptMapMappingPropertyComponent(String name, ConceptMap.MappingPropertyComponent element) throws IOException {
40562    if (element != null) {
40563    composeElementAttributes(element);
40564      xml.enter(FHIR_NS, name);
40565      composeConceptMapMappingPropertyComponentElements(element);
40566      composeElementClose(element);
40567      xml.exit(FHIR_NS, name);
40568    }
40569  }
40570
40571  protected void composeConceptMapMappingPropertyComponentElements(ConceptMap.MappingPropertyComponent element) throws IOException {
40572    composeBackboneElementElements(element);
40573    if (element.hasCodeElement()) {
40574      composeCode("code", element.getCodeElement());
40575    }
40576    if (element.hasValue()) {
40577      composeType("value", element.getValue());
40578    }  }
40579
40580  protected void composeConceptMapOtherElementComponent(String name, ConceptMap.OtherElementComponent element) throws IOException {
40581    if (element != null) {
40582    composeElementAttributes(element);
40583      xml.enter(FHIR_NS, name);
40584      composeConceptMapOtherElementComponentElements(element);
40585      composeElementClose(element);
40586      xml.exit(FHIR_NS, name);
40587    }
40588  }
40589
40590  protected void composeConceptMapOtherElementComponentElements(ConceptMap.OtherElementComponent element) throws IOException {
40591    composeBackboneElementElements(element);
40592    if (element.hasAttributeElement()) {
40593      composeCode("attribute", element.getAttributeElement());
40594    }
40595    if (element.hasValue()) {
40596      composeType("value", element.getValue());
40597    }    if (element.hasValueSetElement()) {
40598      composeCanonical("valueSet", element.getValueSetElement());
40599    }
40600  }
40601
40602  protected void composeConceptMapGroupUnmappedComponent(String name, ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
40603    if (element != null) {
40604    composeElementAttributes(element);
40605      xml.enter(FHIR_NS, name);
40606      composeConceptMapGroupUnmappedComponentElements(element);
40607      composeElementClose(element);
40608      xml.exit(FHIR_NS, name);
40609    }
40610  }
40611
40612  protected void composeConceptMapGroupUnmappedComponentElements(ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
40613    composeBackboneElementElements(element);
40614    if (element.hasModeElement())
40615      composeEnumeration("mode", element.getModeElement(), new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory());
40616    if (element.hasCodeElement()) {
40617      composeCode("code", element.getCodeElement());
40618    }
40619    if (element.hasDisplayElement()) {
40620      composeString("display", element.getDisplayElement());
40621    }
40622    if (element.hasValueSetElement()) {
40623      composeCanonical("valueSet", element.getValueSetElement());
40624    }
40625    if (element.hasRelationshipElement())
40626      composeEnumeration("relationship", element.getRelationshipElement(), new Enumerations.ConceptMapRelationshipEnumFactory());
40627    if (element.hasOtherMapElement()) {
40628      composeCanonical("otherMap", element.getOtherMapElement());
40629    }
40630  }
40631
40632  protected void composeCondition(String name, Condition element) throws IOException {
40633    if (element != null) {
40634    composeResourceAttributes(element);
40635      xml.enter(FHIR_NS, name);
40636      composeConditionElements(element);
40637      composeElementClose(element);
40638      xml.exit(FHIR_NS, name);
40639    }
40640  }
40641
40642  protected void composeConditionElements(Condition element) throws IOException {
40643    composeDomainResourceElements(element);
40644    if (element.hasIdentifier()) { 
40645      for (Identifier e : element.getIdentifier()) 
40646          composeIdentifier("identifier", e);
40647    }
40648    if (element.hasClinicalStatus()) {
40649      composeCodeableConcept("clinicalStatus", element.getClinicalStatus());
40650    }
40651    if (element.hasVerificationStatus()) {
40652      composeCodeableConcept("verificationStatus", element.getVerificationStatus());
40653    }
40654    if (element.hasCategory()) { 
40655      for (CodeableConcept e : element.getCategory()) 
40656          composeCodeableConcept("category", e);
40657    }
40658    if (element.hasSeverity()) {
40659      composeCodeableConcept("severity", element.getSeverity());
40660    }
40661    if (element.hasCode()) {
40662      composeCodeableConcept("code", element.getCode());
40663    }
40664    if (element.hasBodySite()) { 
40665      for (CodeableConcept e : element.getBodySite()) 
40666          composeCodeableConcept("bodySite", e);
40667    }
40668    if (element.hasSubject()) {
40669      composeReference("subject", element.getSubject());
40670    }
40671    if (element.hasEncounter()) {
40672      composeReference("encounter", element.getEncounter());
40673    }
40674    if (element.hasOnset()) {
40675      composeType("onset", element.getOnset());
40676    }    if (element.hasAbatement()) {
40677      composeType("abatement", element.getAbatement());
40678    }    if (element.hasRecordedDateElement()) {
40679      composeDateTime("recordedDate", element.getRecordedDateElement());
40680    }
40681    if (element.hasParticipant()) { 
40682      for (Condition.ConditionParticipantComponent e : element.getParticipant()) 
40683          composeConditionParticipantComponent("participant", e);
40684    }
40685    if (element.hasStage()) { 
40686      for (Condition.ConditionStageComponent e : element.getStage()) 
40687          composeConditionStageComponent("stage", e);
40688    }
40689    if (element.hasEvidence()) { 
40690      for (CodeableReference e : element.getEvidence()) 
40691          composeCodeableReference("evidence", e);
40692    }
40693    if (element.hasNote()) { 
40694      for (Annotation e : element.getNote()) 
40695          composeAnnotation("note", e);
40696    }
40697  }
40698
40699  protected void composeConditionParticipantComponent(String name, Condition.ConditionParticipantComponent element) throws IOException {
40700    if (element != null) {
40701    composeElementAttributes(element);
40702      xml.enter(FHIR_NS, name);
40703      composeConditionParticipantComponentElements(element);
40704      composeElementClose(element);
40705      xml.exit(FHIR_NS, name);
40706    }
40707  }
40708
40709  protected void composeConditionParticipantComponentElements(Condition.ConditionParticipantComponent element) throws IOException {
40710    composeBackboneElementElements(element);
40711    if (element.hasFunction()) {
40712      composeCodeableConcept("function", element.getFunction());
40713    }
40714    if (element.hasActor()) {
40715      composeReference("actor", element.getActor());
40716    }
40717  }
40718
40719  protected void composeConditionStageComponent(String name, Condition.ConditionStageComponent element) throws IOException {
40720    if (element != null) {
40721    composeElementAttributes(element);
40722      xml.enter(FHIR_NS, name);
40723      composeConditionStageComponentElements(element);
40724      composeElementClose(element);
40725      xml.exit(FHIR_NS, name);
40726    }
40727  }
40728
40729  protected void composeConditionStageComponentElements(Condition.ConditionStageComponent element) throws IOException {
40730    composeBackboneElementElements(element);
40731    if (element.hasSummary()) {
40732      composeCodeableConcept("summary", element.getSummary());
40733    }
40734    if (element.hasAssessment()) { 
40735      for (Reference e : element.getAssessment()) 
40736          composeReference("assessment", e);
40737    }
40738    if (element.hasType()) {
40739      composeCodeableConcept("type", element.getType());
40740    }
40741  }
40742
40743  protected void composeConditionDefinition(String name, ConditionDefinition element) throws IOException {
40744    if (element != null) {
40745    composeResourceAttributes(element);
40746      xml.enter(FHIR_NS, name);
40747      composeConditionDefinitionElements(element);
40748      composeElementClose(element);
40749      xml.exit(FHIR_NS, name);
40750    }
40751  }
40752
40753  protected void composeConditionDefinitionElements(ConditionDefinition element) throws IOException {
40754    composeMetadataResourceElements(element);
40755    if (element.hasUrlElement()) {
40756      composeUri("url", element.getUrlElement());
40757    }
40758    if (element.hasIdentifier()) { 
40759      for (Identifier e : element.getIdentifier()) 
40760          composeIdentifier("identifier", e);
40761    }
40762    if (element.hasVersionElement()) {
40763      composeString("version", element.getVersionElement());
40764    }
40765    if (element.hasVersionAlgorithm()) {
40766      composeType("versionAlgorithm", element.getVersionAlgorithm());
40767    }    if (element.hasNameElement()) {
40768      composeString("name", element.getNameElement());
40769    }
40770    if (element.hasTitleElement()) {
40771      composeString("title", element.getTitleElement());
40772    }
40773    if (element.hasSubtitleElement()) {
40774      composeString("subtitle", element.getSubtitleElement());
40775    }
40776    if (element.hasStatusElement())
40777      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
40778    if (element.hasExperimentalElement()) {
40779      composeBoolean("experimental", element.getExperimentalElement());
40780    }
40781    if (element.hasDateElement()) {
40782      composeDateTime("date", element.getDateElement());
40783    }
40784    if (element.hasPublisherElement()) {
40785      composeString("publisher", element.getPublisherElement());
40786    }
40787    if (element.hasContact()) { 
40788      for (ContactDetail e : element.getContact()) 
40789          composeContactDetail("contact", e);
40790    }
40791    if (element.hasDescriptionElement()) {
40792      composeMarkdown("description", element.getDescriptionElement());
40793    }
40794    if (element.hasUseContext()) { 
40795      for (UsageContext e : element.getUseContext()) 
40796          composeUsageContext("useContext", e);
40797    }
40798    if (element.hasJurisdiction()) { 
40799      for (CodeableConcept e : element.getJurisdiction()) 
40800          composeCodeableConcept("jurisdiction", e);
40801    }
40802    if (element.hasCode()) {
40803      composeCodeableConcept("code", element.getCode());
40804    }
40805    if (element.hasSeverity()) {
40806      composeCodeableConcept("severity", element.getSeverity());
40807    }
40808    if (element.hasBodySite()) {
40809      composeCodeableConcept("bodySite", element.getBodySite());
40810    }
40811    if (element.hasStage()) {
40812      composeCodeableConcept("stage", element.getStage());
40813    }
40814    if (element.hasHasSeverityElement()) {
40815      composeBoolean("hasSeverity", element.getHasSeverityElement());
40816    }
40817    if (element.hasHasBodySiteElement()) {
40818      composeBoolean("hasBodySite", element.getHasBodySiteElement());
40819    }
40820    if (element.hasHasStageElement()) {
40821      composeBoolean("hasStage", element.getHasStageElement());
40822    }
40823    if (element.hasDefinition()) { 
40824      for (UriType e : element.getDefinition()) 
40825          composeUri("definition", e);
40826    }
40827    if (element.hasObservation()) { 
40828      for (ConditionDefinition.ConditionDefinitionObservationComponent e : element.getObservation()) 
40829          composeConditionDefinitionObservationComponent("observation", e);
40830    }
40831    if (element.hasMedication()) { 
40832      for (ConditionDefinition.ConditionDefinitionMedicationComponent e : element.getMedication()) 
40833          composeConditionDefinitionMedicationComponent("medication", e);
40834    }
40835    if (element.hasPrecondition()) { 
40836      for (ConditionDefinition.ConditionDefinitionPreconditionComponent e : element.getPrecondition()) 
40837          composeConditionDefinitionPreconditionComponent("precondition", e);
40838    }
40839    if (element.hasTeam()) { 
40840      for (Reference e : element.getTeam()) 
40841          composeReference("team", e);
40842    }
40843    if (element.hasQuestionnaire()) { 
40844      for (ConditionDefinition.ConditionDefinitionQuestionnaireComponent e : element.getQuestionnaire()) 
40845          composeConditionDefinitionQuestionnaireComponent("questionnaire", e);
40846    }
40847    if (element.hasPlan()) { 
40848      for (ConditionDefinition.ConditionDefinitionPlanComponent e : element.getPlan()) 
40849          composeConditionDefinitionPlanComponent("plan", e);
40850    }
40851  }
40852
40853  protected void composeConditionDefinitionObservationComponent(String name, ConditionDefinition.ConditionDefinitionObservationComponent element) throws IOException {
40854    if (element != null) {
40855    composeElementAttributes(element);
40856      xml.enter(FHIR_NS, name);
40857      composeConditionDefinitionObservationComponentElements(element);
40858      composeElementClose(element);
40859      xml.exit(FHIR_NS, name);
40860    }
40861  }
40862
40863  protected void composeConditionDefinitionObservationComponentElements(ConditionDefinition.ConditionDefinitionObservationComponent element) throws IOException {
40864    composeBackboneElementElements(element);
40865    if (element.hasCategory()) {
40866      composeCodeableConcept("category", element.getCategory());
40867    }
40868    if (element.hasCode()) {
40869      composeCodeableConcept("code", element.getCode());
40870    }
40871  }
40872
40873  protected void composeConditionDefinitionMedicationComponent(String name, ConditionDefinition.ConditionDefinitionMedicationComponent element) throws IOException {
40874    if (element != null) {
40875    composeElementAttributes(element);
40876      xml.enter(FHIR_NS, name);
40877      composeConditionDefinitionMedicationComponentElements(element);
40878      composeElementClose(element);
40879      xml.exit(FHIR_NS, name);
40880    }
40881  }
40882
40883  protected void composeConditionDefinitionMedicationComponentElements(ConditionDefinition.ConditionDefinitionMedicationComponent element) throws IOException {
40884    composeBackboneElementElements(element);
40885    if (element.hasCategory()) {
40886      composeCodeableConcept("category", element.getCategory());
40887    }
40888    if (element.hasCode()) {
40889      composeCodeableConcept("code", element.getCode());
40890    }
40891  }
40892
40893  protected void composeConditionDefinitionPreconditionComponent(String name, ConditionDefinition.ConditionDefinitionPreconditionComponent element) throws IOException {
40894    if (element != null) {
40895    composeElementAttributes(element);
40896      xml.enter(FHIR_NS, name);
40897      composeConditionDefinitionPreconditionComponentElements(element);
40898      composeElementClose(element);
40899      xml.exit(FHIR_NS, name);
40900    }
40901  }
40902
40903  protected void composeConditionDefinitionPreconditionComponentElements(ConditionDefinition.ConditionDefinitionPreconditionComponent element) throws IOException {
40904    composeBackboneElementElements(element);
40905    if (element.hasTypeElement())
40906      composeEnumeration("type", element.getTypeElement(), new ConditionDefinition.ConditionPreconditionTypeEnumFactory());
40907    if (element.hasCode()) {
40908      composeCodeableConcept("code", element.getCode());
40909    }
40910    if (element.hasValue()) {
40911      composeType("value", element.getValue());
40912    }  }
40913
40914  protected void composeConditionDefinitionQuestionnaireComponent(String name, ConditionDefinition.ConditionDefinitionQuestionnaireComponent element) throws IOException {
40915    if (element != null) {
40916    composeElementAttributes(element);
40917      xml.enter(FHIR_NS, name);
40918      composeConditionDefinitionQuestionnaireComponentElements(element);
40919      composeElementClose(element);
40920      xml.exit(FHIR_NS, name);
40921    }
40922  }
40923
40924  protected void composeConditionDefinitionQuestionnaireComponentElements(ConditionDefinition.ConditionDefinitionQuestionnaireComponent element) throws IOException {
40925    composeBackboneElementElements(element);
40926    if (element.hasPurposeElement())
40927      composeEnumeration("purpose", element.getPurposeElement(), new ConditionDefinition.ConditionQuestionnairePurposeEnumFactory());
40928    if (element.hasReference()) {
40929      composeReference("reference", element.getReference());
40930    }
40931  }
40932
40933  protected void composeConditionDefinitionPlanComponent(String name, ConditionDefinition.ConditionDefinitionPlanComponent element) throws IOException {
40934    if (element != null) {
40935    composeElementAttributes(element);
40936      xml.enter(FHIR_NS, name);
40937      composeConditionDefinitionPlanComponentElements(element);
40938      composeElementClose(element);
40939      xml.exit(FHIR_NS, name);
40940    }
40941  }
40942
40943  protected void composeConditionDefinitionPlanComponentElements(ConditionDefinition.ConditionDefinitionPlanComponent element) throws IOException {
40944    composeBackboneElementElements(element);
40945    if (element.hasRole()) {
40946      composeCodeableConcept("role", element.getRole());
40947    }
40948    if (element.hasReference()) {
40949      composeReference("reference", element.getReference());
40950    }
40951  }
40952
40953  protected void composeConsent(String name, Consent element) throws IOException {
40954    if (element != null) {
40955    composeResourceAttributes(element);
40956      xml.enter(FHIR_NS, name);
40957      composeConsentElements(element);
40958      composeElementClose(element);
40959      xml.exit(FHIR_NS, name);
40960    }
40961  }
40962
40963  protected void composeConsentElements(Consent element) throws IOException {
40964    composeDomainResourceElements(element);
40965    if (element.hasIdentifier()) { 
40966      for (Identifier e : element.getIdentifier()) 
40967          composeIdentifier("identifier", e);
40968    }
40969    if (element.hasStatusElement())
40970      composeEnumeration("status", element.getStatusElement(), new Consent.ConsentStateEnumFactory());
40971    if (element.hasCategory()) { 
40972      for (CodeableConcept e : element.getCategory()) 
40973          composeCodeableConcept("category", e);
40974    }
40975    if (element.hasSubject()) {
40976      composeReference("subject", element.getSubject());
40977    }
40978    if (element.hasDateElement()) {
40979      composeDate("date", element.getDateElement());
40980    }
40981    if (element.hasPeriod()) {
40982      composePeriod("period", element.getPeriod());
40983    }
40984    if (element.hasGrantor()) { 
40985      for (Reference e : element.getGrantor()) 
40986          composeReference("grantor", e);
40987    }
40988    if (element.hasGrantee()) { 
40989      for (Reference e : element.getGrantee()) 
40990          composeReference("grantee", e);
40991    }
40992    if (element.hasManager()) { 
40993      for (Reference e : element.getManager()) 
40994          composeReference("manager", e);
40995    }
40996    if (element.hasController()) { 
40997      for (Reference e : element.getController()) 
40998          composeReference("controller", e);
40999    }
41000    if (element.hasSourceAttachment()) { 
41001      for (Attachment e : element.getSourceAttachment()) 
41002          composeAttachment("sourceAttachment", e);
41003    }
41004    if (element.hasSourceReference()) { 
41005      for (Reference e : element.getSourceReference()) 
41006          composeReference("sourceReference", e);
41007    }
41008    if (element.hasRegulatoryBasis()) { 
41009      for (CodeableConcept e : element.getRegulatoryBasis()) 
41010          composeCodeableConcept("regulatoryBasis", e);
41011    }
41012    if (element.hasPolicyBasis()) {
41013      composeConsentPolicyBasisComponent("policyBasis", element.getPolicyBasis());
41014    }
41015    if (element.hasPolicyText()) { 
41016      for (Reference e : element.getPolicyText()) 
41017          composeReference("policyText", e);
41018    }
41019    if (element.hasVerification()) { 
41020      for (Consent.ConsentVerificationComponent e : element.getVerification()) 
41021          composeConsentVerificationComponent("verification", e);
41022    }
41023    if (element.hasDecisionElement())
41024      composeEnumeration("decision", element.getDecisionElement(), new Enumerations.ConsentProvisionTypeEnumFactory());
41025    if (element.hasProvision()) { 
41026      for (Consent.ProvisionComponent e : element.getProvision()) 
41027          composeConsentProvisionComponent("provision", e);
41028    }
41029  }
41030
41031  protected void composeConsentPolicyBasisComponent(String name, Consent.ConsentPolicyBasisComponent element) throws IOException {
41032    if (element != null) {
41033    composeElementAttributes(element);
41034      xml.enter(FHIR_NS, name);
41035      composeConsentPolicyBasisComponentElements(element);
41036      composeElementClose(element);
41037      xml.exit(FHIR_NS, name);
41038    }
41039  }
41040
41041  protected void composeConsentPolicyBasisComponentElements(Consent.ConsentPolicyBasisComponent element) throws IOException {
41042    composeBackboneElementElements(element);
41043    if (element.hasReference()) {
41044      composeReference("reference", element.getReference());
41045    }
41046    if (element.hasUrlElement()) {
41047      composeUrl("url", element.getUrlElement());
41048    }
41049  }
41050
41051  protected void composeConsentVerificationComponent(String name, Consent.ConsentVerificationComponent element) throws IOException {
41052    if (element != null) {
41053    composeElementAttributes(element);
41054      xml.enter(FHIR_NS, name);
41055      composeConsentVerificationComponentElements(element);
41056      composeElementClose(element);
41057      xml.exit(FHIR_NS, name);
41058    }
41059  }
41060
41061  protected void composeConsentVerificationComponentElements(Consent.ConsentVerificationComponent element) throws IOException {
41062    composeBackboneElementElements(element);
41063    if (element.hasVerifiedElement()) {
41064      composeBoolean("verified", element.getVerifiedElement());
41065    }
41066    if (element.hasVerificationType()) {
41067      composeCodeableConcept("verificationType", element.getVerificationType());
41068    }
41069    if (element.hasVerifiedBy()) {
41070      composeReference("verifiedBy", element.getVerifiedBy());
41071    }
41072    if (element.hasVerifiedWith()) {
41073      composeReference("verifiedWith", element.getVerifiedWith());
41074    }
41075    if (element.hasVerificationDate()) { 
41076      for (DateTimeType e : element.getVerificationDate()) 
41077          composeDateTime("verificationDate", e);
41078    }
41079  }
41080
41081  protected void composeConsentProvisionComponent(String name, Consent.ProvisionComponent element) throws IOException {
41082    if (element != null) {
41083    composeElementAttributes(element);
41084      xml.enter(FHIR_NS, name);
41085      composeConsentProvisionComponentElements(element);
41086      composeElementClose(element);
41087      xml.exit(FHIR_NS, name);
41088    }
41089  }
41090
41091  protected void composeConsentProvisionComponentElements(Consent.ProvisionComponent element) throws IOException {
41092    composeBackboneElementElements(element);
41093    if (element.hasPeriod()) {
41094      composePeriod("period", element.getPeriod());
41095    }
41096    if (element.hasActor()) { 
41097      for (Consent.ProvisionActorComponent e : element.getActor()) 
41098          composeConsentProvisionActorComponent("actor", e);
41099    }
41100    if (element.hasAction()) { 
41101      for (CodeableConcept e : element.getAction()) 
41102          composeCodeableConcept("action", e);
41103    }
41104    if (element.hasSecurityLabel()) { 
41105      for (Coding e : element.getSecurityLabel()) 
41106          composeCoding("securityLabel", e);
41107    }
41108    if (element.hasPurpose()) { 
41109      for (Coding e : element.getPurpose()) 
41110          composeCoding("purpose", e);
41111    }
41112    if (element.hasDocumentType()) { 
41113      for (Coding e : element.getDocumentType()) 
41114          composeCoding("documentType", e);
41115    }
41116    if (element.hasResourceType()) { 
41117      for (Coding e : element.getResourceType()) 
41118          composeCoding("resourceType", e);
41119    }
41120    if (element.hasCode()) { 
41121      for (CodeableConcept e : element.getCode()) 
41122          composeCodeableConcept("code", e);
41123    }
41124    if (element.hasDataPeriod()) {
41125      composePeriod("dataPeriod", element.getDataPeriod());
41126    }
41127    if (element.hasData()) { 
41128      for (Consent.ProvisionDataComponent e : element.getData()) 
41129          composeConsentProvisionDataComponent("data", e);
41130    }
41131    if (element.hasExpression()) {
41132      composeExpression("expression", element.getExpression());
41133    }
41134    if (element.hasProvision()) { 
41135      for (Consent.ProvisionComponent e : element.getProvision()) 
41136          composeConsentProvisionComponent("provision", e);
41137    }
41138  }
41139
41140  protected void composeConsentProvisionActorComponent(String name, Consent.ProvisionActorComponent element) throws IOException {
41141    if (element != null) {
41142    composeElementAttributes(element);
41143      xml.enter(FHIR_NS, name);
41144      composeConsentProvisionActorComponentElements(element);
41145      composeElementClose(element);
41146      xml.exit(FHIR_NS, name);
41147    }
41148  }
41149
41150  protected void composeConsentProvisionActorComponentElements(Consent.ProvisionActorComponent element) throws IOException {
41151    composeBackboneElementElements(element);
41152    if (element.hasRole()) {
41153      composeCodeableConcept("role", element.getRole());
41154    }
41155    if (element.hasReference()) {
41156      composeReference("reference", element.getReference());
41157    }
41158  }
41159
41160  protected void composeConsentProvisionDataComponent(String name, Consent.ProvisionDataComponent element) throws IOException {
41161    if (element != null) {
41162    composeElementAttributes(element);
41163      xml.enter(FHIR_NS, name);
41164      composeConsentProvisionDataComponentElements(element);
41165      composeElementClose(element);
41166      xml.exit(FHIR_NS, name);
41167    }
41168  }
41169
41170  protected void composeConsentProvisionDataComponentElements(Consent.ProvisionDataComponent element) throws IOException {
41171    composeBackboneElementElements(element);
41172    if (element.hasMeaningElement())
41173      composeEnumeration("meaning", element.getMeaningElement(), new Enumerations.ConsentDataMeaningEnumFactory());
41174    if (element.hasReference()) {
41175      composeReference("reference", element.getReference());
41176    }
41177  }
41178
41179  protected void composeContract(String name, Contract element) throws IOException {
41180    if (element != null) {
41181    composeResourceAttributes(element);
41182      xml.enter(FHIR_NS, name);
41183      composeContractElements(element);
41184      composeElementClose(element);
41185      xml.exit(FHIR_NS, name);
41186    }
41187  }
41188
41189  protected void composeContractElements(Contract element) throws IOException {
41190    composeDomainResourceElements(element);
41191    if (element.hasIdentifier()) { 
41192      for (Identifier e : element.getIdentifier()) 
41193          composeIdentifier("identifier", e);
41194    }
41195    if (element.hasUrlElement()) {
41196      composeUri("url", element.getUrlElement());
41197    }
41198    if (element.hasVersionElement()) {
41199      composeString("version", element.getVersionElement());
41200    }
41201    if (element.hasStatusElement())
41202      composeEnumeration("status", element.getStatusElement(), new Contract.ContractResourceStatusCodesEnumFactory());
41203    if (element.hasLegalState()) {
41204      composeCodeableConcept("legalState", element.getLegalState());
41205    }
41206    if (element.hasInstantiatesCanonical()) {
41207      composeReference("instantiatesCanonical", element.getInstantiatesCanonical());
41208    }
41209    if (element.hasInstantiatesUriElement()) {
41210      composeUri("instantiatesUri", element.getInstantiatesUriElement());
41211    }
41212    if (element.hasContentDerivative()) {
41213      composeCodeableConcept("contentDerivative", element.getContentDerivative());
41214    }
41215    if (element.hasIssuedElement()) {
41216      composeDateTime("issued", element.getIssuedElement());
41217    }
41218    if (element.hasApplies()) {
41219      composePeriod("applies", element.getApplies());
41220    }
41221    if (element.hasExpirationType()) {
41222      composeCodeableConcept("expirationType", element.getExpirationType());
41223    }
41224    if (element.hasSubject()) { 
41225      for (Reference e : element.getSubject()) 
41226          composeReference("subject", e);
41227    }
41228    if (element.hasAuthority()) { 
41229      for (Reference e : element.getAuthority()) 
41230          composeReference("authority", e);
41231    }
41232    if (element.hasDomain()) { 
41233      for (Reference e : element.getDomain()) 
41234          composeReference("domain", e);
41235    }
41236    if (element.hasSite()) { 
41237      for (Reference e : element.getSite()) 
41238          composeReference("site", e);
41239    }
41240    if (element.hasNameElement()) {
41241      composeString("name", element.getNameElement());
41242    }
41243    if (element.hasTitleElement()) {
41244      composeString("title", element.getTitleElement());
41245    }
41246    if (element.hasSubtitleElement()) {
41247      composeString("subtitle", element.getSubtitleElement());
41248    }
41249    if (element.hasAlias()) { 
41250      for (StringType e : element.getAlias()) 
41251          composeString("alias", e);
41252    }
41253    if (element.hasAuthor()) {
41254      composeReference("author", element.getAuthor());
41255    }
41256    if (element.hasScope()) {
41257      composeCodeableConcept("scope", element.getScope());
41258    }
41259    if (element.hasTopic()) {
41260      composeType("topic", element.getTopic());
41261    }    if (element.hasType()) {
41262      composeCodeableConcept("type", element.getType());
41263    }
41264    if (element.hasSubType()) { 
41265      for (CodeableConcept e : element.getSubType()) 
41266          composeCodeableConcept("subType", e);
41267    }
41268    if (element.hasContentDefinition()) {
41269      composeContractContentDefinitionComponent("contentDefinition", element.getContentDefinition());
41270    }
41271    if (element.hasTerm()) { 
41272      for (Contract.TermComponent e : element.getTerm()) 
41273          composeContractTermComponent("term", e);
41274    }
41275    if (element.hasSupportingInfo()) { 
41276      for (Reference e : element.getSupportingInfo()) 
41277          composeReference("supportingInfo", e);
41278    }
41279    if (element.hasRelevantHistory()) { 
41280      for (Reference e : element.getRelevantHistory()) 
41281          composeReference("relevantHistory", e);
41282    }
41283    if (element.hasSigner()) { 
41284      for (Contract.SignatoryComponent e : element.getSigner()) 
41285          composeContractSignatoryComponent("signer", e);
41286    }
41287    if (element.hasFriendly()) { 
41288      for (Contract.FriendlyLanguageComponent e : element.getFriendly()) 
41289          composeContractFriendlyLanguageComponent("friendly", e);
41290    }
41291    if (element.hasLegal()) { 
41292      for (Contract.LegalLanguageComponent e : element.getLegal()) 
41293          composeContractLegalLanguageComponent("legal", e);
41294    }
41295    if (element.hasRule()) { 
41296      for (Contract.ComputableLanguageComponent e : element.getRule()) 
41297          composeContractComputableLanguageComponent("rule", e);
41298    }
41299    if (element.hasLegallyBinding()) {
41300      composeType("legallyBinding", element.getLegallyBinding());
41301    }  }
41302
41303  protected void composeContractContentDefinitionComponent(String name, Contract.ContentDefinitionComponent element) throws IOException {
41304    if (element != null) {
41305    composeElementAttributes(element);
41306      xml.enter(FHIR_NS, name);
41307      composeContractContentDefinitionComponentElements(element);
41308      composeElementClose(element);
41309      xml.exit(FHIR_NS, name);
41310    }
41311  }
41312
41313  protected void composeContractContentDefinitionComponentElements(Contract.ContentDefinitionComponent element) throws IOException {
41314    composeBackboneElementElements(element);
41315    if (element.hasType()) {
41316      composeCodeableConcept("type", element.getType());
41317    }
41318    if (element.hasSubType()) {
41319      composeCodeableConcept("subType", element.getSubType());
41320    }
41321    if (element.hasPublisher()) {
41322      composeReference("publisher", element.getPublisher());
41323    }
41324    if (element.hasPublicationDateElement()) {
41325      composeDateTime("publicationDate", element.getPublicationDateElement());
41326    }
41327    if (element.hasPublicationStatusElement())
41328      composeEnumeration("publicationStatus", element.getPublicationStatusElement(), new Contract.ContractResourcePublicationStatusCodesEnumFactory());
41329    if (element.hasCopyrightElement()) {
41330      composeMarkdown("copyright", element.getCopyrightElement());
41331    }
41332  }
41333
41334  protected void composeContractTermComponent(String name, Contract.TermComponent element) throws IOException {
41335    if (element != null) {
41336    composeElementAttributes(element);
41337      xml.enter(FHIR_NS, name);
41338      composeContractTermComponentElements(element);
41339      composeElementClose(element);
41340      xml.exit(FHIR_NS, name);
41341    }
41342  }
41343
41344  protected void composeContractTermComponentElements(Contract.TermComponent element) throws IOException {
41345    composeBackboneElementElements(element);
41346    if (element.hasIdentifier()) {
41347      composeIdentifier("identifier", element.getIdentifier());
41348    }
41349    if (element.hasIssuedElement()) {
41350      composeDateTime("issued", element.getIssuedElement());
41351    }
41352    if (element.hasApplies()) {
41353      composePeriod("applies", element.getApplies());
41354    }
41355    if (element.hasTopic()) {
41356      composeType("topic", element.getTopic());
41357    }    if (element.hasType()) {
41358      composeCodeableConcept("type", element.getType());
41359    }
41360    if (element.hasSubType()) {
41361      composeCodeableConcept("subType", element.getSubType());
41362    }
41363    if (element.hasTextElement()) {
41364      composeString("text", element.getTextElement());
41365    }
41366    if (element.hasSecurityLabel()) { 
41367      for (Contract.SecurityLabelComponent e : element.getSecurityLabel()) 
41368          composeContractSecurityLabelComponent("securityLabel", e);
41369    }
41370    if (element.hasOffer()) {
41371      composeContractOfferComponent("offer", element.getOffer());
41372    }
41373    if (element.hasAsset()) { 
41374      for (Contract.ContractAssetComponent e : element.getAsset()) 
41375          composeContractAssetComponent("asset", e);
41376    }
41377    if (element.hasAction()) { 
41378      for (Contract.ActionComponent e : element.getAction()) 
41379          composeContractActionComponent("action", e);
41380    }
41381    if (element.hasGroup()) { 
41382      for (Contract.TermComponent e : element.getGroup()) 
41383          composeContractTermComponent("group", e);
41384    }
41385  }
41386
41387  protected void composeContractSecurityLabelComponent(String name, Contract.SecurityLabelComponent element) throws IOException {
41388    if (element != null) {
41389    composeElementAttributes(element);
41390      xml.enter(FHIR_NS, name);
41391      composeContractSecurityLabelComponentElements(element);
41392      composeElementClose(element);
41393      xml.exit(FHIR_NS, name);
41394    }
41395  }
41396
41397  protected void composeContractSecurityLabelComponentElements(Contract.SecurityLabelComponent element) throws IOException {
41398    composeBackboneElementElements(element);
41399    if (element.hasNumber()) { 
41400      for (UnsignedIntType e : element.getNumber()) 
41401          composeUnsignedInt("number", e);
41402    }
41403    if (element.hasClassification()) {
41404      composeCoding("classification", element.getClassification());
41405    }
41406    if (element.hasCategory()) { 
41407      for (Coding e : element.getCategory()) 
41408          composeCoding("category", e);
41409    }
41410    if (element.hasControl()) { 
41411      for (Coding e : element.getControl()) 
41412          composeCoding("control", e);
41413    }
41414  }
41415
41416  protected void composeContractOfferComponent(String name, Contract.ContractOfferComponent element) throws IOException {
41417    if (element != null) {
41418    composeElementAttributes(element);
41419      xml.enter(FHIR_NS, name);
41420      composeContractOfferComponentElements(element);
41421      composeElementClose(element);
41422      xml.exit(FHIR_NS, name);
41423    }
41424  }
41425
41426  protected void composeContractOfferComponentElements(Contract.ContractOfferComponent element) throws IOException {
41427    composeBackboneElementElements(element);
41428    if (element.hasIdentifier()) { 
41429      for (Identifier e : element.getIdentifier()) 
41430          composeIdentifier("identifier", e);
41431    }
41432    if (element.hasParty()) { 
41433      for (Contract.ContractPartyComponent e : element.getParty()) 
41434          composeContractPartyComponent("party", e);
41435    }
41436    if (element.hasTopic()) {
41437      composeReference("topic", element.getTopic());
41438    }
41439    if (element.hasType()) {
41440      composeCodeableConcept("type", element.getType());
41441    }
41442    if (element.hasDecision()) {
41443      composeCodeableConcept("decision", element.getDecision());
41444    }
41445    if (element.hasDecisionMode()) { 
41446      for (CodeableConcept e : element.getDecisionMode()) 
41447          composeCodeableConcept("decisionMode", e);
41448    }
41449    if (element.hasAnswer()) { 
41450      for (Contract.AnswerComponent e : element.getAnswer()) 
41451          composeContractAnswerComponent("answer", e);
41452    }
41453    if (element.hasTextElement()) {
41454      composeString("text", element.getTextElement());
41455    }
41456    if (element.hasLinkId()) { 
41457      for (StringType e : element.getLinkId()) 
41458          composeString("linkId", e);
41459    }
41460    if (element.hasSecurityLabelNumber()) { 
41461      for (UnsignedIntType e : element.getSecurityLabelNumber()) 
41462          composeUnsignedInt("securityLabelNumber", e);
41463    }
41464  }
41465
41466  protected void composeContractPartyComponent(String name, Contract.ContractPartyComponent element) throws IOException {
41467    if (element != null) {
41468    composeElementAttributes(element);
41469      xml.enter(FHIR_NS, name);
41470      composeContractPartyComponentElements(element);
41471      composeElementClose(element);
41472      xml.exit(FHIR_NS, name);
41473    }
41474  }
41475
41476  protected void composeContractPartyComponentElements(Contract.ContractPartyComponent element) throws IOException {
41477    composeBackboneElementElements(element);
41478    if (element.hasReference()) { 
41479      for (Reference e : element.getReference()) 
41480          composeReference("reference", e);
41481    }
41482    if (element.hasRole()) {
41483      composeCodeableConcept("role", element.getRole());
41484    }
41485  }
41486
41487  protected void composeContractAnswerComponent(String name, Contract.AnswerComponent element) throws IOException {
41488    if (element != null) {
41489    composeElementAttributes(element);
41490      xml.enter(FHIR_NS, name);
41491      composeContractAnswerComponentElements(element);
41492      composeElementClose(element);
41493      xml.exit(FHIR_NS, name);
41494    }
41495  }
41496
41497  protected void composeContractAnswerComponentElements(Contract.AnswerComponent element) throws IOException {
41498    composeBackboneElementElements(element);
41499    if (element.hasValue()) {
41500      composeType("value", element.getValue());
41501    }  }
41502
41503  protected void composeContractAssetComponent(String name, Contract.ContractAssetComponent element) throws IOException {
41504    if (element != null) {
41505    composeElementAttributes(element);
41506      xml.enter(FHIR_NS, name);
41507      composeContractAssetComponentElements(element);
41508      composeElementClose(element);
41509      xml.exit(FHIR_NS, name);
41510    }
41511  }
41512
41513  protected void composeContractAssetComponentElements(Contract.ContractAssetComponent element) throws IOException {
41514    composeBackboneElementElements(element);
41515    if (element.hasScope()) {
41516      composeCodeableConcept("scope", element.getScope());
41517    }
41518    if (element.hasType()) { 
41519      for (CodeableConcept e : element.getType()) 
41520          composeCodeableConcept("type", e);
41521    }
41522    if (element.hasTypeReference()) { 
41523      for (Reference e : element.getTypeReference()) 
41524          composeReference("typeReference", e);
41525    }
41526    if (element.hasSubtype()) { 
41527      for (CodeableConcept e : element.getSubtype()) 
41528          composeCodeableConcept("subtype", e);
41529    }
41530    if (element.hasRelationship()) {
41531      composeCoding("relationship", element.getRelationship());
41532    }
41533    if (element.hasContext()) { 
41534      for (Contract.AssetContextComponent e : element.getContext()) 
41535          composeContractAssetContextComponent("context", e);
41536    }
41537    if (element.hasConditionElement()) {
41538      composeString("condition", element.getConditionElement());
41539    }
41540    if (element.hasPeriodType()) { 
41541      for (CodeableConcept e : element.getPeriodType()) 
41542          composeCodeableConcept("periodType", e);
41543    }
41544    if (element.hasPeriod()) { 
41545      for (Period e : element.getPeriod()) 
41546          composePeriod("period", e);
41547    }
41548    if (element.hasUsePeriod()) { 
41549      for (Period e : element.getUsePeriod()) 
41550          composePeriod("usePeriod", e);
41551    }
41552    if (element.hasTextElement()) {
41553      composeString("text", element.getTextElement());
41554    }
41555    if (element.hasLinkId()) { 
41556      for (StringType e : element.getLinkId()) 
41557          composeString("linkId", e);
41558    }
41559    if (element.hasAnswer()) { 
41560      for (Contract.AnswerComponent e : element.getAnswer()) 
41561          composeContractAnswerComponent("answer", e);
41562    }
41563    if (element.hasSecurityLabelNumber()) { 
41564      for (UnsignedIntType e : element.getSecurityLabelNumber()) 
41565          composeUnsignedInt("securityLabelNumber", e);
41566    }
41567    if (element.hasValuedItem()) { 
41568      for (Contract.ValuedItemComponent e : element.getValuedItem()) 
41569          composeContractValuedItemComponent("valuedItem", e);
41570    }
41571  }
41572
41573  protected void composeContractAssetContextComponent(String name, Contract.AssetContextComponent element) throws IOException {
41574    if (element != null) {
41575    composeElementAttributes(element);
41576      xml.enter(FHIR_NS, name);
41577      composeContractAssetContextComponentElements(element);
41578      composeElementClose(element);
41579      xml.exit(FHIR_NS, name);
41580    }
41581  }
41582
41583  protected void composeContractAssetContextComponentElements(Contract.AssetContextComponent element) throws IOException {
41584    composeBackboneElementElements(element);
41585    if (element.hasReference()) {
41586      composeReference("reference", element.getReference());
41587    }
41588    if (element.hasCode()) { 
41589      for (CodeableConcept e : element.getCode()) 
41590          composeCodeableConcept("code", e);
41591    }
41592    if (element.hasTextElement()) {
41593      composeString("text", element.getTextElement());
41594    }
41595  }
41596
41597  protected void composeContractValuedItemComponent(String name, Contract.ValuedItemComponent element) throws IOException {
41598    if (element != null) {
41599    composeElementAttributes(element);
41600      xml.enter(FHIR_NS, name);
41601      composeContractValuedItemComponentElements(element);
41602      composeElementClose(element);
41603      xml.exit(FHIR_NS, name);
41604    }
41605  }
41606
41607  protected void composeContractValuedItemComponentElements(Contract.ValuedItemComponent element) throws IOException {
41608    composeBackboneElementElements(element);
41609    if (element.hasEntity()) {
41610      composeType("entity", element.getEntity());
41611    }    if (element.hasIdentifier()) {
41612      composeIdentifier("identifier", element.getIdentifier());
41613    }
41614    if (element.hasEffectiveTimeElement()) {
41615      composeDateTime("effectiveTime", element.getEffectiveTimeElement());
41616    }
41617    if (element.hasQuantity()) {
41618      composeQuantity("quantity", element.getQuantity());
41619    }
41620    if (element.hasUnitPrice()) {
41621      composeMoney("unitPrice", element.getUnitPrice());
41622    }
41623    if (element.hasFactorElement()) {
41624      composeDecimal("factor", element.getFactorElement());
41625    }
41626    if (element.hasPointsElement()) {
41627      composeDecimal("points", element.getPointsElement());
41628    }
41629    if (element.hasNet()) {
41630      composeMoney("net", element.getNet());
41631    }
41632    if (element.hasPaymentElement()) {
41633      composeString("payment", element.getPaymentElement());
41634    }
41635    if (element.hasPaymentDateElement()) {
41636      composeDateTime("paymentDate", element.getPaymentDateElement());
41637    }
41638    if (element.hasResponsible()) {
41639      composeReference("responsible", element.getResponsible());
41640    }
41641    if (element.hasRecipient()) {
41642      composeReference("recipient", element.getRecipient());
41643    }
41644    if (element.hasLinkId()) { 
41645      for (StringType e : element.getLinkId()) 
41646          composeString("linkId", e);
41647    }
41648    if (element.hasSecurityLabelNumber()) { 
41649      for (UnsignedIntType e : element.getSecurityLabelNumber()) 
41650          composeUnsignedInt("securityLabelNumber", e);
41651    }
41652  }
41653
41654  protected void composeContractActionComponent(String name, Contract.ActionComponent element) throws IOException {
41655    if (element != null) {
41656    composeElementAttributes(element);
41657      xml.enter(FHIR_NS, name);
41658      composeContractActionComponentElements(element);
41659      composeElementClose(element);
41660      xml.exit(FHIR_NS, name);
41661    }
41662  }
41663
41664  protected void composeContractActionComponentElements(Contract.ActionComponent element) throws IOException {
41665    composeBackboneElementElements(element);
41666    if (element.hasDoNotPerformElement()) {
41667      composeBoolean("doNotPerform", element.getDoNotPerformElement());
41668    }
41669    if (element.hasType()) {
41670      composeCodeableConcept("type", element.getType());
41671    }
41672    if (element.hasSubject()) { 
41673      for (Contract.ActionSubjectComponent e : element.getSubject()) 
41674          composeContractActionSubjectComponent("subject", e);
41675    }
41676    if (element.hasIntent()) {
41677      composeCodeableConcept("intent", element.getIntent());
41678    }
41679    if (element.hasLinkId()) { 
41680      for (StringType e : element.getLinkId()) 
41681          composeString("linkId", e);
41682    }
41683    if (element.hasStatus()) {
41684      composeCodeableConcept("status", element.getStatus());
41685    }
41686    if (element.hasContext()) {
41687      composeReference("context", element.getContext());
41688    }
41689    if (element.hasContextLinkId()) { 
41690      for (StringType e : element.getContextLinkId()) 
41691          composeString("contextLinkId", e);
41692    }
41693    if (element.hasOccurrence()) {
41694      composeType("occurrence", element.getOccurrence());
41695    }    if (element.hasRequester()) { 
41696      for (Reference e : element.getRequester()) 
41697          composeReference("requester", e);
41698    }
41699    if (element.hasRequesterLinkId()) { 
41700      for (StringType e : element.getRequesterLinkId()) 
41701          composeString("requesterLinkId", e);
41702    }
41703    if (element.hasPerformerType()) { 
41704      for (CodeableConcept e : element.getPerformerType()) 
41705          composeCodeableConcept("performerType", e);
41706    }
41707    if (element.hasPerformerRole()) {
41708      composeCodeableConcept("performerRole", element.getPerformerRole());
41709    }
41710    if (element.hasPerformer()) {
41711      composeReference("performer", element.getPerformer());
41712    }
41713    if (element.hasPerformerLinkId()) { 
41714      for (StringType e : element.getPerformerLinkId()) 
41715          composeString("performerLinkId", e);
41716    }
41717    if (element.hasReason()) { 
41718      for (CodeableReference e : element.getReason()) 
41719          composeCodeableReference("reason", e);
41720    }
41721    if (element.hasReasonLinkId()) { 
41722      for (StringType e : element.getReasonLinkId()) 
41723          composeString("reasonLinkId", e);
41724    }
41725    if (element.hasNote()) { 
41726      for (Annotation e : element.getNote()) 
41727          composeAnnotation("note", e);
41728    }
41729    if (element.hasSecurityLabelNumber()) { 
41730      for (UnsignedIntType e : element.getSecurityLabelNumber()) 
41731          composeUnsignedInt("securityLabelNumber", e);
41732    }
41733  }
41734
41735  protected void composeContractActionSubjectComponent(String name, Contract.ActionSubjectComponent element) throws IOException {
41736    if (element != null) {
41737    composeElementAttributes(element);
41738      xml.enter(FHIR_NS, name);
41739      composeContractActionSubjectComponentElements(element);
41740      composeElementClose(element);
41741      xml.exit(FHIR_NS, name);
41742    }
41743  }
41744
41745  protected void composeContractActionSubjectComponentElements(Contract.ActionSubjectComponent element) throws IOException {
41746    composeBackboneElementElements(element);
41747    if (element.hasReference()) { 
41748      for (Reference e : element.getReference()) 
41749          composeReference("reference", e);
41750    }
41751    if (element.hasRole()) {
41752      composeCodeableConcept("role", element.getRole());
41753    }
41754  }
41755
41756  protected void composeContractSignatoryComponent(String name, Contract.SignatoryComponent element) throws IOException {
41757    if (element != null) {
41758    composeElementAttributes(element);
41759      xml.enter(FHIR_NS, name);
41760      composeContractSignatoryComponentElements(element);
41761      composeElementClose(element);
41762      xml.exit(FHIR_NS, name);
41763    }
41764  }
41765
41766  protected void composeContractSignatoryComponentElements(Contract.SignatoryComponent element) throws IOException {
41767    composeBackboneElementElements(element);
41768    if (element.hasType()) {
41769      composeCoding("type", element.getType());
41770    }
41771    if (element.hasParty()) {
41772      composeReference("party", element.getParty());
41773    }
41774    if (element.hasSignature()) { 
41775      for (Signature e : element.getSignature()) 
41776          composeSignature("signature", e);
41777    }
41778  }
41779
41780  protected void composeContractFriendlyLanguageComponent(String name, Contract.FriendlyLanguageComponent element) throws IOException {
41781    if (element != null) {
41782    composeElementAttributes(element);
41783      xml.enter(FHIR_NS, name);
41784      composeContractFriendlyLanguageComponentElements(element);
41785      composeElementClose(element);
41786      xml.exit(FHIR_NS, name);
41787    }
41788  }
41789
41790  protected void composeContractFriendlyLanguageComponentElements(Contract.FriendlyLanguageComponent element) throws IOException {
41791    composeBackboneElementElements(element);
41792    if (element.hasContent()) {
41793      composeType("content", element.getContent());
41794    }  }
41795
41796  protected void composeContractLegalLanguageComponent(String name, Contract.LegalLanguageComponent element) throws IOException {
41797    if (element != null) {
41798    composeElementAttributes(element);
41799      xml.enter(FHIR_NS, name);
41800      composeContractLegalLanguageComponentElements(element);
41801      composeElementClose(element);
41802      xml.exit(FHIR_NS, name);
41803    }
41804  }
41805
41806  protected void composeContractLegalLanguageComponentElements(Contract.LegalLanguageComponent element) throws IOException {
41807    composeBackboneElementElements(element);
41808    if (element.hasContent()) {
41809      composeType("content", element.getContent());
41810    }  }
41811
41812  protected void composeContractComputableLanguageComponent(String name, Contract.ComputableLanguageComponent element) throws IOException {
41813    if (element != null) {
41814    composeElementAttributes(element);
41815      xml.enter(FHIR_NS, name);
41816      composeContractComputableLanguageComponentElements(element);
41817      composeElementClose(element);
41818      xml.exit(FHIR_NS, name);
41819    }
41820  }
41821
41822  protected void composeContractComputableLanguageComponentElements(Contract.ComputableLanguageComponent element) throws IOException {
41823    composeBackboneElementElements(element);
41824    if (element.hasContent()) {
41825      composeType("content", element.getContent());
41826    }  }
41827
41828  protected void composeCoverage(String name, Coverage element) throws IOException {
41829    if (element != null) {
41830    composeResourceAttributes(element);
41831      xml.enter(FHIR_NS, name);
41832      composeCoverageElements(element);
41833      composeElementClose(element);
41834      xml.exit(FHIR_NS, name);
41835    }
41836  }
41837
41838  protected void composeCoverageElements(Coverage element) throws IOException {
41839    composeDomainResourceElements(element);
41840    if (element.hasIdentifier()) { 
41841      for (Identifier e : element.getIdentifier()) 
41842          composeIdentifier("identifier", e);
41843    }
41844    if (element.hasStatusElement())
41845      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
41846    if (element.hasKindElement())
41847      composeEnumeration("kind", element.getKindElement(), new Coverage.KindEnumFactory());
41848    if (element.hasPaymentBy()) { 
41849      for (Coverage.CoveragePaymentByComponent e : element.getPaymentBy()) 
41850          composeCoveragePaymentByComponent("paymentBy", e);
41851    }
41852    if (element.hasType()) {
41853      composeCodeableConcept("type", element.getType());
41854    }
41855    if (element.hasPolicyHolder()) {
41856      composeReference("policyHolder", element.getPolicyHolder());
41857    }
41858    if (element.hasSubscriber()) {
41859      composeReference("subscriber", element.getSubscriber());
41860    }
41861    if (element.hasSubscriberId()) { 
41862      for (Identifier e : element.getSubscriberId()) 
41863          composeIdentifier("subscriberId", e);
41864    }
41865    if (element.hasBeneficiary()) {
41866      composeReference("beneficiary", element.getBeneficiary());
41867    }
41868    if (element.hasDependentElement()) {
41869      composeString("dependent", element.getDependentElement());
41870    }
41871    if (element.hasRelationship()) {
41872      composeCodeableConcept("relationship", element.getRelationship());
41873    }
41874    if (element.hasPeriod()) {
41875      composePeriod("period", element.getPeriod());
41876    }
41877    if (element.hasInsurer()) {
41878      composeReference("insurer", element.getInsurer());
41879    }
41880    if (element.hasClass_()) { 
41881      for (Coverage.ClassComponent e : element.getClass_()) 
41882          composeCoverageClassComponent("class", e);
41883    }
41884    if (element.hasOrderElement()) {
41885      composePositiveInt("order", element.getOrderElement());
41886    }
41887    if (element.hasNetworkElement()) {
41888      composeString("network", element.getNetworkElement());
41889    }
41890    if (element.hasCostToBeneficiary()) { 
41891      for (Coverage.CostToBeneficiaryComponent e : element.getCostToBeneficiary()) 
41892          composeCoverageCostToBeneficiaryComponent("costToBeneficiary", e);
41893    }
41894    if (element.hasSubrogationElement()) {
41895      composeBoolean("subrogation", element.getSubrogationElement());
41896    }
41897    if (element.hasContract()) { 
41898      for (Reference e : element.getContract()) 
41899          composeReference("contract", e);
41900    }
41901    if (element.hasInsurancePlan()) {
41902      composeReference("insurancePlan", element.getInsurancePlan());
41903    }
41904  }
41905
41906  protected void composeCoveragePaymentByComponent(String name, Coverage.CoveragePaymentByComponent element) throws IOException {
41907    if (element != null) {
41908    composeElementAttributes(element);
41909      xml.enter(FHIR_NS, name);
41910      composeCoveragePaymentByComponentElements(element);
41911      composeElementClose(element);
41912      xml.exit(FHIR_NS, name);
41913    }
41914  }
41915
41916  protected void composeCoveragePaymentByComponentElements(Coverage.CoveragePaymentByComponent element) throws IOException {
41917    composeBackboneElementElements(element);
41918    if (element.hasParty()) {
41919      composeReference("party", element.getParty());
41920    }
41921    if (element.hasResponsibilityElement()) {
41922      composeString("responsibility", element.getResponsibilityElement());
41923    }
41924  }
41925
41926  protected void composeCoverageClassComponent(String name, Coverage.ClassComponent element) throws IOException {
41927    if (element != null) {
41928    composeElementAttributes(element);
41929      xml.enter(FHIR_NS, name);
41930      composeCoverageClassComponentElements(element);
41931      composeElementClose(element);
41932      xml.exit(FHIR_NS, name);
41933    }
41934  }
41935
41936  protected void composeCoverageClassComponentElements(Coverage.ClassComponent element) throws IOException {
41937    composeBackboneElementElements(element);
41938    if (element.hasType()) {
41939      composeCodeableConcept("type", element.getType());
41940    }
41941    if (element.hasValue()) {
41942      composeIdentifier("value", element.getValue());
41943    }
41944    if (element.hasNameElement()) {
41945      composeString("name", element.getNameElement());
41946    }
41947  }
41948
41949  protected void composeCoverageCostToBeneficiaryComponent(String name, Coverage.CostToBeneficiaryComponent element) throws IOException {
41950    if (element != null) {
41951    composeElementAttributes(element);
41952      xml.enter(FHIR_NS, name);
41953      composeCoverageCostToBeneficiaryComponentElements(element);
41954      composeElementClose(element);
41955      xml.exit(FHIR_NS, name);
41956    }
41957  }
41958
41959  protected void composeCoverageCostToBeneficiaryComponentElements(Coverage.CostToBeneficiaryComponent element) throws IOException {
41960    composeBackboneElementElements(element);
41961    if (element.hasType()) {
41962      composeCodeableConcept("type", element.getType());
41963    }
41964    if (element.hasCategory()) {
41965      composeCodeableConcept("category", element.getCategory());
41966    }
41967    if (element.hasNetwork()) {
41968      composeCodeableConcept("network", element.getNetwork());
41969    }
41970    if (element.hasUnit()) {
41971      composeCodeableConcept("unit", element.getUnit());
41972    }
41973    if (element.hasTerm()) {
41974      composeCodeableConcept("term", element.getTerm());
41975    }
41976    if (element.hasValue()) {
41977      composeType("value", element.getValue());
41978    }    if (element.hasException()) { 
41979      for (Coverage.ExemptionComponent e : element.getException()) 
41980          composeCoverageExemptionComponent("exception", e);
41981    }
41982  }
41983
41984  protected void composeCoverageExemptionComponent(String name, Coverage.ExemptionComponent element) throws IOException {
41985    if (element != null) {
41986    composeElementAttributes(element);
41987      xml.enter(FHIR_NS, name);
41988      composeCoverageExemptionComponentElements(element);
41989      composeElementClose(element);
41990      xml.exit(FHIR_NS, name);
41991    }
41992  }
41993
41994  protected void composeCoverageExemptionComponentElements(Coverage.ExemptionComponent element) throws IOException {
41995    composeBackboneElementElements(element);
41996    if (element.hasType()) {
41997      composeCodeableConcept("type", element.getType());
41998    }
41999    if (element.hasPeriod()) {
42000      composePeriod("period", element.getPeriod());
42001    }
42002  }
42003
42004  protected void composeCoverageEligibilityRequest(String name, CoverageEligibilityRequest element) throws IOException {
42005    if (element != null) {
42006    composeResourceAttributes(element);
42007      xml.enter(FHIR_NS, name);
42008      composeCoverageEligibilityRequestElements(element);
42009      composeElementClose(element);
42010      xml.exit(FHIR_NS, name);
42011    }
42012  }
42013
42014  protected void composeCoverageEligibilityRequestElements(CoverageEligibilityRequest element) throws IOException {
42015    composeDomainResourceElements(element);
42016    if (element.hasIdentifier()) { 
42017      for (Identifier e : element.getIdentifier()) 
42018          composeIdentifier("identifier", e);
42019    }
42020    if (element.hasStatusElement())
42021      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
42022    if (element.hasPriority()) {
42023      composeCodeableConcept("priority", element.getPriority());
42024    }
42025      if (element.hasPurpose()) 
42026        for (Enumeration<CoverageEligibilityRequest.EligibilityRequestPurpose> e : element.getPurpose()) 
42027          composeEnumeration("purpose", e, new CoverageEligibilityRequest.EligibilityRequestPurposeEnumFactory());
42028    if (element.hasPatient()) {
42029      composeReference("patient", element.getPatient());
42030    }
42031    if (element.hasEvent()) { 
42032      for (CoverageEligibilityRequest.CoverageEligibilityRequestEventComponent e : element.getEvent()) 
42033          composeCoverageEligibilityRequestEventComponent("event", e);
42034    }
42035    if (element.hasServiced()) {
42036      composeType("serviced", element.getServiced());
42037    }    if (element.hasCreatedElement()) {
42038      composeDateTime("created", element.getCreatedElement());
42039    }
42040    if (element.hasEnterer()) {
42041      composeReference("enterer", element.getEnterer());
42042    }
42043    if (element.hasProvider()) {
42044      composeReference("provider", element.getProvider());
42045    }
42046    if (element.hasInsurer()) {
42047      composeReference("insurer", element.getInsurer());
42048    }
42049    if (element.hasFacility()) {
42050      composeReference("facility", element.getFacility());
42051    }
42052    if (element.hasSupportingInfo()) { 
42053      for (CoverageEligibilityRequest.SupportingInformationComponent e : element.getSupportingInfo()) 
42054          composeCoverageEligibilityRequestSupportingInformationComponent("supportingInfo", e);
42055    }
42056    if (element.hasInsurance()) { 
42057      for (CoverageEligibilityRequest.InsuranceComponent e : element.getInsurance()) 
42058          composeCoverageEligibilityRequestInsuranceComponent("insurance", e);
42059    }
42060    if (element.hasItem()) { 
42061      for (CoverageEligibilityRequest.DetailsComponent e : element.getItem()) 
42062          composeCoverageEligibilityRequestDetailsComponent("item", e);
42063    }
42064  }
42065
42066  protected void composeCoverageEligibilityRequestEventComponent(String name, CoverageEligibilityRequest.CoverageEligibilityRequestEventComponent element) throws IOException {
42067    if (element != null) {
42068    composeElementAttributes(element);
42069      xml.enter(FHIR_NS, name);
42070      composeCoverageEligibilityRequestEventComponentElements(element);
42071      composeElementClose(element);
42072      xml.exit(FHIR_NS, name);
42073    }
42074  }
42075
42076  protected void composeCoverageEligibilityRequestEventComponentElements(CoverageEligibilityRequest.CoverageEligibilityRequestEventComponent element) throws IOException {
42077    composeBackboneElementElements(element);
42078    if (element.hasType()) {
42079      composeCodeableConcept("type", element.getType());
42080    }
42081    if (element.hasWhen()) {
42082      composeType("when", element.getWhen());
42083    }  }
42084
42085  protected void composeCoverageEligibilityRequestSupportingInformationComponent(String name, CoverageEligibilityRequest.SupportingInformationComponent element) throws IOException {
42086    if (element != null) {
42087    composeElementAttributes(element);
42088      xml.enter(FHIR_NS, name);
42089      composeCoverageEligibilityRequestSupportingInformationComponentElements(element);
42090      composeElementClose(element);
42091      xml.exit(FHIR_NS, name);
42092    }
42093  }
42094
42095  protected void composeCoverageEligibilityRequestSupportingInformationComponentElements(CoverageEligibilityRequest.SupportingInformationComponent element) throws IOException {
42096    composeBackboneElementElements(element);
42097    if (element.hasSequenceElement()) {
42098      composePositiveInt("sequence", element.getSequenceElement());
42099    }
42100    if (element.hasInformation()) {
42101      composeReference("information", element.getInformation());
42102    }
42103    if (element.hasAppliesToAllElement()) {
42104      composeBoolean("appliesToAll", element.getAppliesToAllElement());
42105    }
42106  }
42107
42108  protected void composeCoverageEligibilityRequestInsuranceComponent(String name, CoverageEligibilityRequest.InsuranceComponent element) throws IOException {
42109    if (element != null) {
42110    composeElementAttributes(element);
42111      xml.enter(FHIR_NS, name);
42112      composeCoverageEligibilityRequestInsuranceComponentElements(element);
42113      composeElementClose(element);
42114      xml.exit(FHIR_NS, name);
42115    }
42116  }
42117
42118  protected void composeCoverageEligibilityRequestInsuranceComponentElements(CoverageEligibilityRequest.InsuranceComponent element) throws IOException {
42119    composeBackboneElementElements(element);
42120    if (element.hasFocalElement()) {
42121      composeBoolean("focal", element.getFocalElement());
42122    }
42123    if (element.hasCoverage()) {
42124      composeReference("coverage", element.getCoverage());
42125    }
42126    if (element.hasBusinessArrangementElement()) {
42127      composeString("businessArrangement", element.getBusinessArrangementElement());
42128    }
42129  }
42130
42131  protected void composeCoverageEligibilityRequestDetailsComponent(String name, CoverageEligibilityRequest.DetailsComponent element) throws IOException {
42132    if (element != null) {
42133    composeElementAttributes(element);
42134      xml.enter(FHIR_NS, name);
42135      composeCoverageEligibilityRequestDetailsComponentElements(element);
42136      composeElementClose(element);
42137      xml.exit(FHIR_NS, name);
42138    }
42139  }
42140
42141  protected void composeCoverageEligibilityRequestDetailsComponentElements(CoverageEligibilityRequest.DetailsComponent element) throws IOException {
42142    composeBackboneElementElements(element);
42143    if (element.hasSupportingInfoSequence()) { 
42144      for (PositiveIntType e : element.getSupportingInfoSequence()) 
42145          composePositiveInt("supportingInfoSequence", e);
42146    }
42147    if (element.hasCategory()) {
42148      composeCodeableConcept("category", element.getCategory());
42149    }
42150    if (element.hasProductOrService()) {
42151      composeCodeableConcept("productOrService", element.getProductOrService());
42152    }
42153    if (element.hasModifier()) { 
42154      for (CodeableConcept e : element.getModifier()) 
42155          composeCodeableConcept("modifier", e);
42156    }
42157    if (element.hasProvider()) {
42158      composeReference("provider", element.getProvider());
42159    }
42160    if (element.hasQuantity()) {
42161      composeQuantity("quantity", element.getQuantity());
42162    }
42163    if (element.hasUnitPrice()) {
42164      composeMoney("unitPrice", element.getUnitPrice());
42165    }
42166    if (element.hasFacility()) {
42167      composeReference("facility", element.getFacility());
42168    }
42169    if (element.hasDiagnosis()) { 
42170      for (CoverageEligibilityRequest.DiagnosisComponent e : element.getDiagnosis()) 
42171          composeCoverageEligibilityRequestDiagnosisComponent("diagnosis", e);
42172    }
42173    if (element.hasDetail()) { 
42174      for (Reference e : element.getDetail()) 
42175          composeReference("detail", e);
42176    }
42177  }
42178
42179  protected void composeCoverageEligibilityRequestDiagnosisComponent(String name, CoverageEligibilityRequest.DiagnosisComponent element) throws IOException {
42180    if (element != null) {
42181    composeElementAttributes(element);
42182      xml.enter(FHIR_NS, name);
42183      composeCoverageEligibilityRequestDiagnosisComponentElements(element);
42184      composeElementClose(element);
42185      xml.exit(FHIR_NS, name);
42186    }
42187  }
42188
42189  protected void composeCoverageEligibilityRequestDiagnosisComponentElements(CoverageEligibilityRequest.DiagnosisComponent element) throws IOException {
42190    composeBackboneElementElements(element);
42191    if (element.hasDiagnosis()) {
42192      composeType("diagnosis", element.getDiagnosis());
42193    }  }
42194
42195  protected void composeCoverageEligibilityResponse(String name, CoverageEligibilityResponse element) throws IOException {
42196    if (element != null) {
42197    composeResourceAttributes(element);
42198      xml.enter(FHIR_NS, name);
42199      composeCoverageEligibilityResponseElements(element);
42200      composeElementClose(element);
42201      xml.exit(FHIR_NS, name);
42202    }
42203  }
42204
42205  protected void composeCoverageEligibilityResponseElements(CoverageEligibilityResponse element) throws IOException {
42206    composeDomainResourceElements(element);
42207    if (element.hasIdentifier()) { 
42208      for (Identifier e : element.getIdentifier()) 
42209          composeIdentifier("identifier", e);
42210    }
42211    if (element.hasStatusElement())
42212      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
42213      if (element.hasPurpose()) 
42214        for (Enumeration<CoverageEligibilityResponse.EligibilityResponsePurpose> e : element.getPurpose()) 
42215          composeEnumeration("purpose", e, new CoverageEligibilityResponse.EligibilityResponsePurposeEnumFactory());
42216    if (element.hasPatient()) {
42217      composeReference("patient", element.getPatient());
42218    }
42219    if (element.hasEvent()) { 
42220      for (CoverageEligibilityResponse.CoverageEligibilityResponseEventComponent e : element.getEvent()) 
42221          composeCoverageEligibilityResponseEventComponent("event", e);
42222    }
42223    if (element.hasServiced()) {
42224      composeType("serviced", element.getServiced());
42225    }    if (element.hasCreatedElement()) {
42226      composeDateTime("created", element.getCreatedElement());
42227    }
42228    if (element.hasRequestor()) {
42229      composeReference("requestor", element.getRequestor());
42230    }
42231    if (element.hasRequest()) {
42232      composeReference("request", element.getRequest());
42233    }
42234    if (element.hasOutcomeElement())
42235      composeEnumeration("outcome", element.getOutcomeElement(), new CoverageEligibilityResponse.EligibilityOutcomeEnumFactory());
42236    if (element.hasDispositionElement()) {
42237      composeString("disposition", element.getDispositionElement());
42238    }
42239    if (element.hasInsurer()) {
42240      composeReference("insurer", element.getInsurer());
42241    }
42242    if (element.hasInsurance()) { 
42243      for (CoverageEligibilityResponse.InsuranceComponent e : element.getInsurance()) 
42244          composeCoverageEligibilityResponseInsuranceComponent("insurance", e);
42245    }
42246    if (element.hasPreAuthRefElement()) {
42247      composeString("preAuthRef", element.getPreAuthRefElement());
42248    }
42249    if (element.hasForm()) {
42250      composeCodeableConcept("form", element.getForm());
42251    }
42252    if (element.hasError()) { 
42253      for (CoverageEligibilityResponse.ErrorsComponent e : element.getError()) 
42254          composeCoverageEligibilityResponseErrorsComponent("error", e);
42255    }
42256  }
42257
42258  protected void composeCoverageEligibilityResponseEventComponent(String name, CoverageEligibilityResponse.CoverageEligibilityResponseEventComponent element) throws IOException {
42259    if (element != null) {
42260    composeElementAttributes(element);
42261      xml.enter(FHIR_NS, name);
42262      composeCoverageEligibilityResponseEventComponentElements(element);
42263      composeElementClose(element);
42264      xml.exit(FHIR_NS, name);
42265    }
42266  }
42267
42268  protected void composeCoverageEligibilityResponseEventComponentElements(CoverageEligibilityResponse.CoverageEligibilityResponseEventComponent element) throws IOException {
42269    composeBackboneElementElements(element);
42270    if (element.hasType()) {
42271      composeCodeableConcept("type", element.getType());
42272    }
42273    if (element.hasWhen()) {
42274      composeType("when", element.getWhen());
42275    }  }
42276
42277  protected void composeCoverageEligibilityResponseInsuranceComponent(String name, CoverageEligibilityResponse.InsuranceComponent element) throws IOException {
42278    if (element != null) {
42279    composeElementAttributes(element);
42280      xml.enter(FHIR_NS, name);
42281      composeCoverageEligibilityResponseInsuranceComponentElements(element);
42282      composeElementClose(element);
42283      xml.exit(FHIR_NS, name);
42284    }
42285  }
42286
42287  protected void composeCoverageEligibilityResponseInsuranceComponentElements(CoverageEligibilityResponse.InsuranceComponent element) throws IOException {
42288    composeBackboneElementElements(element);
42289    if (element.hasCoverage()) {
42290      composeReference("coverage", element.getCoverage());
42291    }
42292    if (element.hasInforceElement()) {
42293      composeBoolean("inforce", element.getInforceElement());
42294    }
42295    if (element.hasBenefitPeriod()) {
42296      composePeriod("benefitPeriod", element.getBenefitPeriod());
42297    }
42298    if (element.hasItem()) { 
42299      for (CoverageEligibilityResponse.ItemsComponent e : element.getItem()) 
42300          composeCoverageEligibilityResponseItemsComponent("item", e);
42301    }
42302  }
42303
42304  protected void composeCoverageEligibilityResponseItemsComponent(String name, CoverageEligibilityResponse.ItemsComponent element) throws IOException {
42305    if (element != null) {
42306    composeElementAttributes(element);
42307      xml.enter(FHIR_NS, name);
42308      composeCoverageEligibilityResponseItemsComponentElements(element);
42309      composeElementClose(element);
42310      xml.exit(FHIR_NS, name);
42311    }
42312  }
42313
42314  protected void composeCoverageEligibilityResponseItemsComponentElements(CoverageEligibilityResponse.ItemsComponent element) throws IOException {
42315    composeBackboneElementElements(element);
42316    if (element.hasCategory()) {
42317      composeCodeableConcept("category", element.getCategory());
42318    }
42319    if (element.hasProductOrService()) {
42320      composeCodeableConcept("productOrService", element.getProductOrService());
42321    }
42322    if (element.hasModifier()) { 
42323      for (CodeableConcept e : element.getModifier()) 
42324          composeCodeableConcept("modifier", e);
42325    }
42326    if (element.hasProvider()) {
42327      composeReference("provider", element.getProvider());
42328    }
42329    if (element.hasExcludedElement()) {
42330      composeBoolean("excluded", element.getExcludedElement());
42331    }
42332    if (element.hasNameElement()) {
42333      composeString("name", element.getNameElement());
42334    }
42335    if (element.hasDescriptionElement()) {
42336      composeString("description", element.getDescriptionElement());
42337    }
42338    if (element.hasNetwork()) {
42339      composeCodeableConcept("network", element.getNetwork());
42340    }
42341    if (element.hasUnit()) {
42342      composeCodeableConcept("unit", element.getUnit());
42343    }
42344    if (element.hasTerm()) {
42345      composeCodeableConcept("term", element.getTerm());
42346    }
42347    if (element.hasBenefit()) { 
42348      for (CoverageEligibilityResponse.BenefitComponent e : element.getBenefit()) 
42349          composeCoverageEligibilityResponseBenefitComponent("benefit", e);
42350    }
42351    if (element.hasAuthorizationRequiredElement()) {
42352      composeBoolean("authorizationRequired", element.getAuthorizationRequiredElement());
42353    }
42354    if (element.hasAuthorizationSupporting()) { 
42355      for (CodeableConcept e : element.getAuthorizationSupporting()) 
42356          composeCodeableConcept("authorizationSupporting", e);
42357    }
42358    if (element.hasAuthorizationUrlElement()) {
42359      composeUri("authorizationUrl", element.getAuthorizationUrlElement());
42360    }
42361  }
42362
42363  protected void composeCoverageEligibilityResponseBenefitComponent(String name, CoverageEligibilityResponse.BenefitComponent element) throws IOException {
42364    if (element != null) {
42365    composeElementAttributes(element);
42366      xml.enter(FHIR_NS, name);
42367      composeCoverageEligibilityResponseBenefitComponentElements(element);
42368      composeElementClose(element);
42369      xml.exit(FHIR_NS, name);
42370    }
42371  }
42372
42373  protected void composeCoverageEligibilityResponseBenefitComponentElements(CoverageEligibilityResponse.BenefitComponent element) throws IOException {
42374    composeBackboneElementElements(element);
42375    if (element.hasType()) {
42376      composeCodeableConcept("type", element.getType());
42377    }
42378    if (element.hasAllowed()) {
42379      composeType("allowed", element.getAllowed());
42380    }    if (element.hasUsed()) {
42381      composeType("used", element.getUsed());
42382    }  }
42383
42384  protected void composeCoverageEligibilityResponseErrorsComponent(String name, CoverageEligibilityResponse.ErrorsComponent element) throws IOException {
42385    if (element != null) {
42386    composeElementAttributes(element);
42387      xml.enter(FHIR_NS, name);
42388      composeCoverageEligibilityResponseErrorsComponentElements(element);
42389      composeElementClose(element);
42390      xml.exit(FHIR_NS, name);
42391    }
42392  }
42393
42394  protected void composeCoverageEligibilityResponseErrorsComponentElements(CoverageEligibilityResponse.ErrorsComponent element) throws IOException {
42395    composeBackboneElementElements(element);
42396    if (element.hasCode()) {
42397      composeCodeableConcept("code", element.getCode());
42398    }
42399    if (element.hasExpression()) { 
42400      for (StringType e : element.getExpression()) 
42401          composeString("expression", e);
42402    }
42403  }
42404
42405  protected void composeDetectedIssue(String name, DetectedIssue element) throws IOException {
42406    if (element != null) {
42407    composeResourceAttributes(element);
42408      xml.enter(FHIR_NS, name);
42409      composeDetectedIssueElements(element);
42410      composeElementClose(element);
42411      xml.exit(FHIR_NS, name);
42412    }
42413  }
42414
42415  protected void composeDetectedIssueElements(DetectedIssue element) throws IOException {
42416    composeDomainResourceElements(element);
42417    if (element.hasIdentifier()) { 
42418      for (Identifier e : element.getIdentifier()) 
42419          composeIdentifier("identifier", e);
42420    }
42421    if (element.hasStatusElement())
42422      composeEnumeration("status", element.getStatusElement(), new DetectedIssue.DetectedIssueStatusEnumFactory());
42423    if (element.hasCategory()) { 
42424      for (CodeableConcept e : element.getCategory()) 
42425          composeCodeableConcept("category", e);
42426    }
42427    if (element.hasCode()) {
42428      composeCodeableConcept("code", element.getCode());
42429    }
42430    if (element.hasSeverityElement())
42431      composeEnumeration("severity", element.getSeverityElement(), new DetectedIssue.DetectedIssueSeverityEnumFactory());
42432    if (element.hasSubject()) {
42433      composeReference("subject", element.getSubject());
42434    }
42435    if (element.hasEncounter()) {
42436      composeReference("encounter", element.getEncounter());
42437    }
42438    if (element.hasIdentified()) {
42439      composeType("identified", element.getIdentified());
42440    }    if (element.hasAuthor()) {
42441      composeReference("author", element.getAuthor());
42442    }
42443    if (element.hasImplicated()) { 
42444      for (Reference e : element.getImplicated()) 
42445          composeReference("implicated", e);
42446    }
42447    if (element.hasEvidence()) { 
42448      for (DetectedIssue.DetectedIssueEvidenceComponent e : element.getEvidence()) 
42449          composeDetectedIssueEvidenceComponent("evidence", e);
42450    }
42451    if (element.hasDetailElement()) {
42452      composeMarkdown("detail", element.getDetailElement());
42453    }
42454    if (element.hasReferenceElement()) {
42455      composeUri("reference", element.getReferenceElement());
42456    }
42457    if (element.hasMitigation()) { 
42458      for (DetectedIssue.DetectedIssueMitigationComponent e : element.getMitigation()) 
42459          composeDetectedIssueMitigationComponent("mitigation", e);
42460    }
42461  }
42462
42463  protected void composeDetectedIssueEvidenceComponent(String name, DetectedIssue.DetectedIssueEvidenceComponent element) throws IOException {
42464    if (element != null) {
42465    composeElementAttributes(element);
42466      xml.enter(FHIR_NS, name);
42467      composeDetectedIssueEvidenceComponentElements(element);
42468      composeElementClose(element);
42469      xml.exit(FHIR_NS, name);
42470    }
42471  }
42472
42473  protected void composeDetectedIssueEvidenceComponentElements(DetectedIssue.DetectedIssueEvidenceComponent element) throws IOException {
42474    composeBackboneElementElements(element);
42475    if (element.hasCode()) { 
42476      for (CodeableConcept e : element.getCode()) 
42477          composeCodeableConcept("code", e);
42478    }
42479    if (element.hasDetail()) { 
42480      for (Reference e : element.getDetail()) 
42481          composeReference("detail", e);
42482    }
42483  }
42484
42485  protected void composeDetectedIssueMitigationComponent(String name, DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
42486    if (element != null) {
42487    composeElementAttributes(element);
42488      xml.enter(FHIR_NS, name);
42489      composeDetectedIssueMitigationComponentElements(element);
42490      composeElementClose(element);
42491      xml.exit(FHIR_NS, name);
42492    }
42493  }
42494
42495  protected void composeDetectedIssueMitigationComponentElements(DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
42496    composeBackboneElementElements(element);
42497    if (element.hasAction()) {
42498      composeCodeableConcept("action", element.getAction());
42499    }
42500    if (element.hasDateElement()) {
42501      composeDateTime("date", element.getDateElement());
42502    }
42503    if (element.hasAuthor()) {
42504      composeReference("author", element.getAuthor());
42505    }
42506    if (element.hasNote()) { 
42507      for (Annotation e : element.getNote()) 
42508          composeAnnotation("note", e);
42509    }
42510  }
42511
42512  protected void composeDevice(String name, Device element) throws IOException {
42513    if (element != null) {
42514    composeResourceAttributes(element);
42515      xml.enter(FHIR_NS, name);
42516      composeDeviceElements(element);
42517      composeElementClose(element);
42518      xml.exit(FHIR_NS, name);
42519    }
42520  }
42521
42522  protected void composeDeviceElements(Device element) throws IOException {
42523    composeDomainResourceElements(element);
42524    if (element.hasIdentifier()) { 
42525      for (Identifier e : element.getIdentifier()) 
42526          composeIdentifier("identifier", e);
42527    }
42528    if (element.hasDisplayNameElement()) {
42529      composeString("displayName", element.getDisplayNameElement());
42530    }
42531    if (element.hasDefinition()) {
42532      composeCodeableReference("definition", element.getDefinition());
42533    }
42534    if (element.hasUdiCarrier()) { 
42535      for (Device.DeviceUdiCarrierComponent e : element.getUdiCarrier()) 
42536          composeDeviceUdiCarrierComponent("udiCarrier", e);
42537    }
42538    if (element.hasStatusElement())
42539      composeEnumeration("status", element.getStatusElement(), new Device.FHIRDeviceStatusEnumFactory());
42540    if (element.hasAvailabilityStatus()) {
42541      composeCodeableConcept("availabilityStatus", element.getAvailabilityStatus());
42542    }
42543    if (element.hasBiologicalSourceEvent()) {
42544      composeIdentifier("biologicalSourceEvent", element.getBiologicalSourceEvent());
42545    }
42546    if (element.hasManufacturerElement()) {
42547      composeString("manufacturer", element.getManufacturerElement());
42548    }
42549    if (element.hasManufactureDateElement()) {
42550      composeDateTime("manufactureDate", element.getManufactureDateElement());
42551    }
42552    if (element.hasExpirationDateElement()) {
42553      composeDateTime("expirationDate", element.getExpirationDateElement());
42554    }
42555    if (element.hasLotNumberElement()) {
42556      composeString("lotNumber", element.getLotNumberElement());
42557    }
42558    if (element.hasSerialNumberElement()) {
42559      composeString("serialNumber", element.getSerialNumberElement());
42560    }
42561    if (element.hasName()) { 
42562      for (Device.DeviceNameComponent e : element.getName()) 
42563          composeDeviceNameComponent("name", e);
42564    }
42565    if (element.hasModelNumberElement()) {
42566      composeString("modelNumber", element.getModelNumberElement());
42567    }
42568    if (element.hasPartNumberElement()) {
42569      composeString("partNumber", element.getPartNumberElement());
42570    }
42571    if (element.hasCategory()) { 
42572      for (CodeableConcept e : element.getCategory()) 
42573          composeCodeableConcept("category", e);
42574    }
42575    if (element.hasType()) { 
42576      for (CodeableConcept e : element.getType()) 
42577          composeCodeableConcept("type", e);
42578    }
42579    if (element.hasVersion()) { 
42580      for (Device.DeviceVersionComponent e : element.getVersion()) 
42581          composeDeviceVersionComponent("version", e);
42582    }
42583    if (element.hasConformsTo()) { 
42584      for (Device.DeviceConformsToComponent e : element.getConformsTo()) 
42585          composeDeviceConformsToComponent("conformsTo", e);
42586    }
42587    if (element.hasProperty()) { 
42588      for (Device.DevicePropertyComponent e : element.getProperty()) 
42589          composeDevicePropertyComponent("property", e);
42590    }
42591    if (element.hasMode()) {
42592      composeCodeableConcept("mode", element.getMode());
42593    }
42594    if (element.hasCycle()) {
42595      composeCount("cycle", element.getCycle());
42596    }
42597    if (element.hasDuration()) {
42598      composeDuration("duration", element.getDuration());
42599    }
42600    if (element.hasOwner()) {
42601      composeReference("owner", element.getOwner());
42602    }
42603    if (element.hasContact()) { 
42604      for (ContactPoint e : element.getContact()) 
42605          composeContactPoint("contact", e);
42606    }
42607    if (element.hasLocation()) {
42608      composeReference("location", element.getLocation());
42609    }
42610    if (element.hasUrlElement()) {
42611      composeUri("url", element.getUrlElement());
42612    }
42613    if (element.hasEndpoint()) { 
42614      for (Reference e : element.getEndpoint()) 
42615          composeReference("endpoint", e);
42616    }
42617    if (element.hasGateway()) { 
42618      for (CodeableReference e : element.getGateway()) 
42619          composeCodeableReference("gateway", e);
42620    }
42621    if (element.hasNote()) { 
42622      for (Annotation e : element.getNote()) 
42623          composeAnnotation("note", e);
42624    }
42625    if (element.hasSafety()) { 
42626      for (CodeableConcept e : element.getSafety()) 
42627          composeCodeableConcept("safety", e);
42628    }
42629    if (element.hasParent()) {
42630      composeReference("parent", element.getParent());
42631    }
42632  }
42633
42634  protected void composeDeviceUdiCarrierComponent(String name, Device.DeviceUdiCarrierComponent element) throws IOException {
42635    if (element != null) {
42636    composeElementAttributes(element);
42637      xml.enter(FHIR_NS, name);
42638      composeDeviceUdiCarrierComponentElements(element);
42639      composeElementClose(element);
42640      xml.exit(FHIR_NS, name);
42641    }
42642  }
42643
42644  protected void composeDeviceUdiCarrierComponentElements(Device.DeviceUdiCarrierComponent element) throws IOException {
42645    composeBackboneElementElements(element);
42646    if (element.hasDeviceIdentifierElement()) {
42647      composeString("deviceIdentifier", element.getDeviceIdentifierElement());
42648    }
42649    if (element.hasIssuerElement()) {
42650      composeUri("issuer", element.getIssuerElement());
42651    }
42652    if (element.hasJurisdictionElement()) {
42653      composeUri("jurisdiction", element.getJurisdictionElement());
42654    }
42655    if (element.hasCarrierAIDCElement()) {
42656      composeBase64Binary("carrierAIDC", element.getCarrierAIDCElement());
42657    }
42658    if (element.hasCarrierHRFElement()) {
42659      composeString("carrierHRF", element.getCarrierHRFElement());
42660    }
42661    if (element.hasEntryTypeElement())
42662      composeEnumeration("entryType", element.getEntryTypeElement(), new Device.UDIEntryTypeEnumFactory());
42663  }
42664
42665  protected void composeDeviceNameComponent(String name, Device.DeviceNameComponent element) throws IOException {
42666    if (element != null) {
42667    composeElementAttributes(element);
42668      xml.enter(FHIR_NS, name);
42669      composeDeviceNameComponentElements(element);
42670      composeElementClose(element);
42671      xml.exit(FHIR_NS, name);
42672    }
42673  }
42674
42675  protected void composeDeviceNameComponentElements(Device.DeviceNameComponent element) throws IOException {
42676    composeBackboneElementElements(element);
42677    if (element.hasValueElement()) {
42678      composeString("value", element.getValueElement());
42679    }
42680    if (element.hasTypeElement())
42681      composeEnumeration("type", element.getTypeElement(), new Enumerations.DeviceNameTypeEnumFactory());
42682    if (element.hasDisplayElement()) {
42683      composeBoolean("display", element.getDisplayElement());
42684    }
42685  }
42686
42687  protected void composeDeviceVersionComponent(String name, Device.DeviceVersionComponent element) throws IOException {
42688    if (element != null) {
42689    composeElementAttributes(element);
42690      xml.enter(FHIR_NS, name);
42691      composeDeviceVersionComponentElements(element);
42692      composeElementClose(element);
42693      xml.exit(FHIR_NS, name);
42694    }
42695  }
42696
42697  protected void composeDeviceVersionComponentElements(Device.DeviceVersionComponent element) throws IOException {
42698    composeBackboneElementElements(element);
42699    if (element.hasType()) {
42700      composeCodeableConcept("type", element.getType());
42701    }
42702    if (element.hasComponent()) {
42703      composeIdentifier("component", element.getComponent());
42704    }
42705    if (element.hasInstallDateElement()) {
42706      composeDateTime("installDate", element.getInstallDateElement());
42707    }
42708    if (element.hasValueElement()) {
42709      composeString("value", element.getValueElement());
42710    }
42711  }
42712
42713  protected void composeDeviceConformsToComponent(String name, Device.DeviceConformsToComponent element) throws IOException {
42714    if (element != null) {
42715    composeElementAttributes(element);
42716      xml.enter(FHIR_NS, name);
42717      composeDeviceConformsToComponentElements(element);
42718      composeElementClose(element);
42719      xml.exit(FHIR_NS, name);
42720    }
42721  }
42722
42723  protected void composeDeviceConformsToComponentElements(Device.DeviceConformsToComponent element) throws IOException {
42724    composeBackboneElementElements(element);
42725    if (element.hasCategory()) {
42726      composeCodeableConcept("category", element.getCategory());
42727    }
42728    if (element.hasSpecification()) {
42729      composeCodeableConcept("specification", element.getSpecification());
42730    }
42731    if (element.hasVersionElement()) {
42732      composeString("version", element.getVersionElement());
42733    }
42734  }
42735
42736  protected void composeDevicePropertyComponent(String name, Device.DevicePropertyComponent element) throws IOException {
42737    if (element != null) {
42738    composeElementAttributes(element);
42739      xml.enter(FHIR_NS, name);
42740      composeDevicePropertyComponentElements(element);
42741      composeElementClose(element);
42742      xml.exit(FHIR_NS, name);
42743    }
42744  }
42745
42746  protected void composeDevicePropertyComponentElements(Device.DevicePropertyComponent element) throws IOException {
42747    composeBackboneElementElements(element);
42748    if (element.hasType()) {
42749      composeCodeableConcept("type", element.getType());
42750    }
42751    if (element.hasValue()) {
42752      composeType("value", element.getValue());
42753    }  }
42754
42755  protected void composeDeviceAssociation(String name, DeviceAssociation element) throws IOException {
42756    if (element != null) {
42757    composeResourceAttributes(element);
42758      xml.enter(FHIR_NS, name);
42759      composeDeviceAssociationElements(element);
42760      composeElementClose(element);
42761      xml.exit(FHIR_NS, name);
42762    }
42763  }
42764
42765  protected void composeDeviceAssociationElements(DeviceAssociation element) throws IOException {
42766    composeDomainResourceElements(element);
42767    if (element.hasIdentifier()) { 
42768      for (Identifier e : element.getIdentifier()) 
42769          composeIdentifier("identifier", e);
42770    }
42771    if (element.hasDevice()) {
42772      composeReference("device", element.getDevice());
42773    }
42774    if (element.hasCategory()) { 
42775      for (CodeableConcept e : element.getCategory()) 
42776          composeCodeableConcept("category", e);
42777    }
42778    if (element.hasStatus()) {
42779      composeCodeableConcept("status", element.getStatus());
42780    }
42781    if (element.hasStatusReason()) { 
42782      for (CodeableConcept e : element.getStatusReason()) 
42783          composeCodeableConcept("statusReason", e);
42784    }
42785    if (element.hasSubject()) {
42786      composeReference("subject", element.getSubject());
42787    }
42788    if (element.hasBodyStructure()) {
42789      composeReference("bodyStructure", element.getBodyStructure());
42790    }
42791    if (element.hasPeriod()) {
42792      composePeriod("period", element.getPeriod());
42793    }
42794    if (element.hasOperation()) { 
42795      for (DeviceAssociation.DeviceAssociationOperationComponent e : element.getOperation()) 
42796          composeDeviceAssociationOperationComponent("operation", e);
42797    }
42798  }
42799
42800  protected void composeDeviceAssociationOperationComponent(String name, DeviceAssociation.DeviceAssociationOperationComponent element) throws IOException {
42801    if (element != null) {
42802    composeElementAttributes(element);
42803      xml.enter(FHIR_NS, name);
42804      composeDeviceAssociationOperationComponentElements(element);
42805      composeElementClose(element);
42806      xml.exit(FHIR_NS, name);
42807    }
42808  }
42809
42810  protected void composeDeviceAssociationOperationComponentElements(DeviceAssociation.DeviceAssociationOperationComponent element) throws IOException {
42811    composeBackboneElementElements(element);
42812    if (element.hasStatus()) {
42813      composeCodeableConcept("status", element.getStatus());
42814    }
42815    if (element.hasOperator()) { 
42816      for (Reference e : element.getOperator()) 
42817          composeReference("operator", e);
42818    }
42819    if (element.hasPeriod()) {
42820      composePeriod("period", element.getPeriod());
42821    }
42822  }
42823
42824  protected void composeDeviceDefinition(String name, DeviceDefinition element) throws IOException {
42825    if (element != null) {
42826    composeResourceAttributes(element);
42827      xml.enter(FHIR_NS, name);
42828      composeDeviceDefinitionElements(element);
42829      composeElementClose(element);
42830      xml.exit(FHIR_NS, name);
42831    }
42832  }
42833
42834  protected void composeDeviceDefinitionElements(DeviceDefinition element) throws IOException {
42835    composeDomainResourceElements(element);
42836    if (element.hasDescriptionElement()) {
42837      composeMarkdown("description", element.getDescriptionElement());
42838    }
42839    if (element.hasIdentifier()) { 
42840      for (Identifier e : element.getIdentifier()) 
42841          composeIdentifier("identifier", e);
42842    }
42843    if (element.hasUdiDeviceIdentifier()) { 
42844      for (DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent e : element.getUdiDeviceIdentifier()) 
42845          composeDeviceDefinitionUdiDeviceIdentifierComponent("udiDeviceIdentifier", e);
42846    }
42847    if (element.hasRegulatoryIdentifier()) { 
42848      for (DeviceDefinition.DeviceDefinitionRegulatoryIdentifierComponent e : element.getRegulatoryIdentifier()) 
42849          composeDeviceDefinitionRegulatoryIdentifierComponent("regulatoryIdentifier", e);
42850    }
42851    if (element.hasPartNumberElement()) {
42852      composeString("partNumber", element.getPartNumberElement());
42853    }
42854    if (element.hasManufacturer()) {
42855      composeReference("manufacturer", element.getManufacturer());
42856    }
42857    if (element.hasDeviceName()) { 
42858      for (DeviceDefinition.DeviceDefinitionDeviceNameComponent e : element.getDeviceName()) 
42859          composeDeviceDefinitionDeviceNameComponent("deviceName", e);
42860    }
42861    if (element.hasModelNumberElement()) {
42862      composeString("modelNumber", element.getModelNumberElement());
42863    }
42864    if (element.hasClassification()) { 
42865      for (DeviceDefinition.DeviceDefinitionClassificationComponent e : element.getClassification()) 
42866          composeDeviceDefinitionClassificationComponent("classification", e);
42867    }
42868    if (element.hasConformsTo()) { 
42869      for (DeviceDefinition.DeviceDefinitionConformsToComponent e : element.getConformsTo()) 
42870          composeDeviceDefinitionConformsToComponent("conformsTo", e);
42871    }
42872    if (element.hasHasPart()) { 
42873      for (DeviceDefinition.DeviceDefinitionHasPartComponent e : element.getHasPart()) 
42874          composeDeviceDefinitionHasPartComponent("hasPart", e);
42875    }
42876    if (element.hasPackaging()) { 
42877      for (DeviceDefinition.DeviceDefinitionPackagingComponent e : element.getPackaging()) 
42878          composeDeviceDefinitionPackagingComponent("packaging", e);
42879    }
42880    if (element.hasVersion()) { 
42881      for (DeviceDefinition.DeviceDefinitionVersionComponent e : element.getVersion()) 
42882          composeDeviceDefinitionVersionComponent("version", e);
42883    }
42884    if (element.hasSafety()) { 
42885      for (CodeableConcept e : element.getSafety()) 
42886          composeCodeableConcept("safety", e);
42887    }
42888    if (element.hasShelfLifeStorage()) { 
42889      for (ProductShelfLife e : element.getShelfLifeStorage()) 
42890          composeProductShelfLife("shelfLifeStorage", e);
42891    }
42892    if (element.hasLanguageCode()) { 
42893      for (CodeableConcept e : element.getLanguageCode()) 
42894          composeCodeableConcept("languageCode", e);
42895    }
42896    if (element.hasProperty()) { 
42897      for (DeviceDefinition.DeviceDefinitionPropertyComponent e : element.getProperty()) 
42898          composeDeviceDefinitionPropertyComponent("property", e);
42899    }
42900    if (element.hasOwner()) {
42901      composeReference("owner", element.getOwner());
42902    }
42903    if (element.hasContact()) { 
42904      for (ContactPoint e : element.getContact()) 
42905          composeContactPoint("contact", e);
42906    }
42907    if (element.hasLink()) { 
42908      for (DeviceDefinition.DeviceDefinitionLinkComponent e : element.getLink()) 
42909          composeDeviceDefinitionLinkComponent("link", e);
42910    }
42911    if (element.hasNote()) { 
42912      for (Annotation e : element.getNote()) 
42913          composeAnnotation("note", e);
42914    }
42915    if (element.hasMaterial()) { 
42916      for (DeviceDefinition.DeviceDefinitionMaterialComponent e : element.getMaterial()) 
42917          composeDeviceDefinitionMaterialComponent("material", e);
42918    }
42919      if (element.hasProductionIdentifierInUDI()) 
42920        for (Enumeration<DeviceDefinition.DeviceProductionIdentifierInUDI> e : element.getProductionIdentifierInUDI()) 
42921          composeEnumeration("productionIdentifierInUDI", e, new DeviceDefinition.DeviceProductionIdentifierInUDIEnumFactory());
42922    if (element.hasGuideline()) {
42923      composeDeviceDefinitionGuidelineComponent("guideline", element.getGuideline());
42924    }
42925    if (element.hasCorrectiveAction()) {
42926      composeDeviceDefinitionCorrectiveActionComponent("correctiveAction", element.getCorrectiveAction());
42927    }
42928    if (element.hasChargeItem()) { 
42929      for (DeviceDefinition.DeviceDefinitionChargeItemComponent e : element.getChargeItem()) 
42930          composeDeviceDefinitionChargeItemComponent("chargeItem", e);
42931    }
42932  }
42933
42934  protected void composeDeviceDefinitionUdiDeviceIdentifierComponent(String name, DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent element) throws IOException {
42935    if (element != null) {
42936    composeElementAttributes(element);
42937      xml.enter(FHIR_NS, name);
42938      composeDeviceDefinitionUdiDeviceIdentifierComponentElements(element);
42939      composeElementClose(element);
42940      xml.exit(FHIR_NS, name);
42941    }
42942  }
42943
42944  protected void composeDeviceDefinitionUdiDeviceIdentifierComponentElements(DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent element) throws IOException {
42945    composeBackboneElementElements(element);
42946    if (element.hasDeviceIdentifierElement()) {
42947      composeString("deviceIdentifier", element.getDeviceIdentifierElement());
42948    }
42949    if (element.hasIssuerElement()) {
42950      composeUri("issuer", element.getIssuerElement());
42951    }
42952    if (element.hasJurisdictionElement()) {
42953      composeUri("jurisdiction", element.getJurisdictionElement());
42954    }
42955    if (element.hasMarketDistribution()) { 
42956      for (DeviceDefinition.UdiDeviceIdentifierMarketDistributionComponent e : element.getMarketDistribution()) 
42957          composeDeviceDefinitionUdiDeviceIdentifierMarketDistributionComponent("marketDistribution", e);
42958    }
42959  }
42960
42961  protected void composeDeviceDefinitionUdiDeviceIdentifierMarketDistributionComponent(String name, DeviceDefinition.UdiDeviceIdentifierMarketDistributionComponent element) throws IOException {
42962    if (element != null) {
42963    composeElementAttributes(element);
42964      xml.enter(FHIR_NS, name);
42965      composeDeviceDefinitionUdiDeviceIdentifierMarketDistributionComponentElements(element);
42966      composeElementClose(element);
42967      xml.exit(FHIR_NS, name);
42968    }
42969  }
42970
42971  protected void composeDeviceDefinitionUdiDeviceIdentifierMarketDistributionComponentElements(DeviceDefinition.UdiDeviceIdentifierMarketDistributionComponent element) throws IOException {
42972    composeBackboneElementElements(element);
42973    if (element.hasMarketPeriod()) {
42974      composePeriod("marketPeriod", element.getMarketPeriod());
42975    }
42976    if (element.hasSubJurisdictionElement()) {
42977      composeUri("subJurisdiction", element.getSubJurisdictionElement());
42978    }
42979  }
42980
42981  protected void composeDeviceDefinitionRegulatoryIdentifierComponent(String name, DeviceDefinition.DeviceDefinitionRegulatoryIdentifierComponent element) throws IOException {
42982    if (element != null) {
42983    composeElementAttributes(element);
42984      xml.enter(FHIR_NS, name);
42985      composeDeviceDefinitionRegulatoryIdentifierComponentElements(element);
42986      composeElementClose(element);
42987      xml.exit(FHIR_NS, name);
42988    }
42989  }
42990
42991  protected void composeDeviceDefinitionRegulatoryIdentifierComponentElements(DeviceDefinition.DeviceDefinitionRegulatoryIdentifierComponent element) throws IOException {
42992    composeBackboneElementElements(element);
42993    if (element.hasTypeElement())
42994      composeEnumeration("type", element.getTypeElement(), new DeviceDefinition.DeviceDefinitionRegulatoryIdentifierTypeEnumFactory());
42995    if (element.hasDeviceIdentifierElement()) {
42996      composeString("deviceIdentifier", element.getDeviceIdentifierElement());
42997    }
42998    if (element.hasIssuerElement()) {
42999      composeUri("issuer", element.getIssuerElement());
43000    }
43001    if (element.hasJurisdictionElement()) {
43002      composeUri("jurisdiction", element.getJurisdictionElement());
43003    }
43004  }
43005
43006  protected void composeDeviceDefinitionDeviceNameComponent(String name, DeviceDefinition.DeviceDefinitionDeviceNameComponent element) throws IOException {
43007    if (element != null) {
43008    composeElementAttributes(element);
43009      xml.enter(FHIR_NS, name);
43010      composeDeviceDefinitionDeviceNameComponentElements(element);
43011      composeElementClose(element);
43012      xml.exit(FHIR_NS, name);
43013    }
43014  }
43015
43016  protected void composeDeviceDefinitionDeviceNameComponentElements(DeviceDefinition.DeviceDefinitionDeviceNameComponent element) throws IOException {
43017    composeBackboneElementElements(element);
43018    if (element.hasNameElement()) {
43019      composeString("name", element.getNameElement());
43020    }
43021    if (element.hasTypeElement())
43022      composeEnumeration("type", element.getTypeElement(), new Enumerations.DeviceNameTypeEnumFactory());
43023  }
43024
43025  protected void composeDeviceDefinitionClassificationComponent(String name, DeviceDefinition.DeviceDefinitionClassificationComponent element) throws IOException {
43026    if (element != null) {
43027    composeElementAttributes(element);
43028      xml.enter(FHIR_NS, name);
43029      composeDeviceDefinitionClassificationComponentElements(element);
43030      composeElementClose(element);
43031      xml.exit(FHIR_NS, name);
43032    }
43033  }
43034
43035  protected void composeDeviceDefinitionClassificationComponentElements(DeviceDefinition.DeviceDefinitionClassificationComponent element) throws IOException {
43036    composeBackboneElementElements(element);
43037    if (element.hasType()) {
43038      composeCodeableConcept("type", element.getType());
43039    }
43040    if (element.hasJustification()) { 
43041      for (RelatedArtifact e : element.getJustification()) 
43042          composeRelatedArtifact("justification", e);
43043    }
43044  }
43045
43046  protected void composeDeviceDefinitionConformsToComponent(String name, DeviceDefinition.DeviceDefinitionConformsToComponent element) throws IOException {
43047    if (element != null) {
43048    composeElementAttributes(element);
43049      xml.enter(FHIR_NS, name);
43050      composeDeviceDefinitionConformsToComponentElements(element);
43051      composeElementClose(element);
43052      xml.exit(FHIR_NS, name);
43053    }
43054  }
43055
43056  protected void composeDeviceDefinitionConformsToComponentElements(DeviceDefinition.DeviceDefinitionConformsToComponent element) throws IOException {
43057    composeBackboneElementElements(element);
43058    if (element.hasCategory()) {
43059      composeCodeableConcept("category", element.getCategory());
43060    }
43061    if (element.hasSpecification()) {
43062      composeCodeableConcept("specification", element.getSpecification());
43063    }
43064    if (element.hasVersion()) { 
43065      for (StringType e : element.getVersion()) 
43066          composeString("version", e);
43067    }
43068    if (element.hasSource()) { 
43069      for (RelatedArtifact e : element.getSource()) 
43070          composeRelatedArtifact("source", e);
43071    }
43072  }
43073
43074  protected void composeDeviceDefinitionHasPartComponent(String name, DeviceDefinition.DeviceDefinitionHasPartComponent element) throws IOException {
43075    if (element != null) {
43076    composeElementAttributes(element);
43077      xml.enter(FHIR_NS, name);
43078      composeDeviceDefinitionHasPartComponentElements(element);
43079      composeElementClose(element);
43080      xml.exit(FHIR_NS, name);
43081    }
43082  }
43083
43084  protected void composeDeviceDefinitionHasPartComponentElements(DeviceDefinition.DeviceDefinitionHasPartComponent element) throws IOException {
43085    composeBackboneElementElements(element);
43086    if (element.hasReference()) {
43087      composeReference("reference", element.getReference());
43088    }
43089    if (element.hasCountElement()) {
43090      composeInteger("count", element.getCountElement());
43091    }
43092  }
43093
43094  protected void composeDeviceDefinitionPackagingComponent(String name, DeviceDefinition.DeviceDefinitionPackagingComponent element) throws IOException {
43095    if (element != null) {
43096    composeElementAttributes(element);
43097      xml.enter(FHIR_NS, name);
43098      composeDeviceDefinitionPackagingComponentElements(element);
43099      composeElementClose(element);
43100      xml.exit(FHIR_NS, name);
43101    }
43102  }
43103
43104  protected void composeDeviceDefinitionPackagingComponentElements(DeviceDefinition.DeviceDefinitionPackagingComponent element) throws IOException {
43105    composeBackboneElementElements(element);
43106    if (element.hasIdentifier()) {
43107      composeIdentifier("identifier", element.getIdentifier());
43108    }
43109    if (element.hasType()) {
43110      composeCodeableConcept("type", element.getType());
43111    }
43112    if (element.hasCountElement()) {
43113      composeInteger("count", element.getCountElement());
43114    }
43115    if (element.hasDistributor()) { 
43116      for (DeviceDefinition.PackagingDistributorComponent e : element.getDistributor()) 
43117          composeDeviceDefinitionPackagingDistributorComponent("distributor", e);
43118    }
43119    if (element.hasUdiDeviceIdentifier()) { 
43120      for (DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent e : element.getUdiDeviceIdentifier()) 
43121          composeDeviceDefinitionUdiDeviceIdentifierComponent("udiDeviceIdentifier", e);
43122    }
43123    if (element.hasPackaging()) { 
43124      for (DeviceDefinition.DeviceDefinitionPackagingComponent e : element.getPackaging()) 
43125          composeDeviceDefinitionPackagingComponent("packaging", e);
43126    }
43127  }
43128
43129  protected void composeDeviceDefinitionPackagingDistributorComponent(String name, DeviceDefinition.PackagingDistributorComponent element) throws IOException {
43130    if (element != null) {
43131    composeElementAttributes(element);
43132      xml.enter(FHIR_NS, name);
43133      composeDeviceDefinitionPackagingDistributorComponentElements(element);
43134      composeElementClose(element);
43135      xml.exit(FHIR_NS, name);
43136    }
43137  }
43138
43139  protected void composeDeviceDefinitionPackagingDistributorComponentElements(DeviceDefinition.PackagingDistributorComponent element) throws IOException {
43140    composeBackboneElementElements(element);
43141    if (element.hasNameElement()) {
43142      composeString("name", element.getNameElement());
43143    }
43144    if (element.hasOrganizationReference()) { 
43145      for (Reference e : element.getOrganizationReference()) 
43146          composeReference("organizationReference", e);
43147    }
43148  }
43149
43150  protected void composeDeviceDefinitionVersionComponent(String name, DeviceDefinition.DeviceDefinitionVersionComponent element) throws IOException {
43151    if (element != null) {
43152    composeElementAttributes(element);
43153      xml.enter(FHIR_NS, name);
43154      composeDeviceDefinitionVersionComponentElements(element);
43155      composeElementClose(element);
43156      xml.exit(FHIR_NS, name);
43157    }
43158  }
43159
43160  protected void composeDeviceDefinitionVersionComponentElements(DeviceDefinition.DeviceDefinitionVersionComponent element) throws IOException {
43161    composeBackboneElementElements(element);
43162    if (element.hasType()) {
43163      composeCodeableConcept("type", element.getType());
43164    }
43165    if (element.hasComponent()) {
43166      composeIdentifier("component", element.getComponent());
43167    }
43168    if (element.hasValueElement()) {
43169      composeString("value", element.getValueElement());
43170    }
43171  }
43172
43173  protected void composeDeviceDefinitionPropertyComponent(String name, DeviceDefinition.DeviceDefinitionPropertyComponent element) throws IOException {
43174    if (element != null) {
43175    composeElementAttributes(element);
43176      xml.enter(FHIR_NS, name);
43177      composeDeviceDefinitionPropertyComponentElements(element);
43178      composeElementClose(element);
43179      xml.exit(FHIR_NS, name);
43180    }
43181  }
43182
43183  protected void composeDeviceDefinitionPropertyComponentElements(DeviceDefinition.DeviceDefinitionPropertyComponent element) throws IOException {
43184    composeBackboneElementElements(element);
43185    if (element.hasType()) {
43186      composeCodeableConcept("type", element.getType());
43187    }
43188    if (element.hasValue()) {
43189      composeType("value", element.getValue());
43190    }  }
43191
43192  protected void composeDeviceDefinitionLinkComponent(String name, DeviceDefinition.DeviceDefinitionLinkComponent element) throws IOException {
43193    if (element != null) {
43194    composeElementAttributes(element);
43195      xml.enter(FHIR_NS, name);
43196      composeDeviceDefinitionLinkComponentElements(element);
43197      composeElementClose(element);
43198      xml.exit(FHIR_NS, name);
43199    }
43200  }
43201
43202  protected void composeDeviceDefinitionLinkComponentElements(DeviceDefinition.DeviceDefinitionLinkComponent element) throws IOException {
43203    composeBackboneElementElements(element);
43204    if (element.hasRelation()) {
43205      composeCoding("relation", element.getRelation());
43206    }
43207    if (element.hasRelatedDevice()) {
43208      composeCodeableReference("relatedDevice", element.getRelatedDevice());
43209    }
43210  }
43211
43212  protected void composeDeviceDefinitionMaterialComponent(String name, DeviceDefinition.DeviceDefinitionMaterialComponent element) throws IOException {
43213    if (element != null) {
43214    composeElementAttributes(element);
43215      xml.enter(FHIR_NS, name);
43216      composeDeviceDefinitionMaterialComponentElements(element);
43217      composeElementClose(element);
43218      xml.exit(FHIR_NS, name);
43219    }
43220  }
43221
43222  protected void composeDeviceDefinitionMaterialComponentElements(DeviceDefinition.DeviceDefinitionMaterialComponent element) throws IOException {
43223    composeBackboneElementElements(element);
43224    if (element.hasSubstance()) {
43225      composeCodeableConcept("substance", element.getSubstance());
43226    }
43227    if (element.hasAlternateElement()) {
43228      composeBoolean("alternate", element.getAlternateElement());
43229    }
43230    if (element.hasAllergenicIndicatorElement()) {
43231      composeBoolean("allergenicIndicator", element.getAllergenicIndicatorElement());
43232    }
43233  }
43234
43235  protected void composeDeviceDefinitionGuidelineComponent(String name, DeviceDefinition.DeviceDefinitionGuidelineComponent element) throws IOException {
43236    if (element != null) {
43237    composeElementAttributes(element);
43238      xml.enter(FHIR_NS, name);
43239      composeDeviceDefinitionGuidelineComponentElements(element);
43240      composeElementClose(element);
43241      xml.exit(FHIR_NS, name);
43242    }
43243  }
43244
43245  protected void composeDeviceDefinitionGuidelineComponentElements(DeviceDefinition.DeviceDefinitionGuidelineComponent element) throws IOException {
43246    composeBackboneElementElements(element);
43247    if (element.hasUseContext()) { 
43248      for (UsageContext e : element.getUseContext()) 
43249          composeUsageContext("useContext", e);
43250    }
43251    if (element.hasUsageInstructionElement()) {
43252      composeMarkdown("usageInstruction", element.getUsageInstructionElement());
43253    }
43254    if (element.hasRelatedArtifact()) { 
43255      for (RelatedArtifact e : element.getRelatedArtifact()) 
43256          composeRelatedArtifact("relatedArtifact", e);
43257    }
43258    if (element.hasIndication()) { 
43259      for (CodeableConcept e : element.getIndication()) 
43260          composeCodeableConcept("indication", e);
43261    }
43262    if (element.hasContraindication()) { 
43263      for (CodeableConcept e : element.getContraindication()) 
43264          composeCodeableConcept("contraindication", e);
43265    }
43266    if (element.hasWarning()) { 
43267      for (CodeableConcept e : element.getWarning()) 
43268          composeCodeableConcept("warning", e);
43269    }
43270    if (element.hasIntendedUseElement()) {
43271      composeString("intendedUse", element.getIntendedUseElement());
43272    }
43273  }
43274
43275  protected void composeDeviceDefinitionCorrectiveActionComponent(String name, DeviceDefinition.DeviceDefinitionCorrectiveActionComponent element) throws IOException {
43276    if (element != null) {
43277    composeElementAttributes(element);
43278      xml.enter(FHIR_NS, name);
43279      composeDeviceDefinitionCorrectiveActionComponentElements(element);
43280      composeElementClose(element);
43281      xml.exit(FHIR_NS, name);
43282    }
43283  }
43284
43285  protected void composeDeviceDefinitionCorrectiveActionComponentElements(DeviceDefinition.DeviceDefinitionCorrectiveActionComponent element) throws IOException {
43286    composeBackboneElementElements(element);
43287    if (element.hasRecallElement()) {
43288      composeBoolean("recall", element.getRecallElement());
43289    }
43290    if (element.hasScopeElement())
43291      composeEnumeration("scope", element.getScopeElement(), new DeviceDefinition.DeviceCorrectiveActionScopeEnumFactory());
43292    if (element.hasPeriod()) {
43293      composePeriod("period", element.getPeriod());
43294    }
43295  }
43296
43297  protected void composeDeviceDefinitionChargeItemComponent(String name, DeviceDefinition.DeviceDefinitionChargeItemComponent element) throws IOException {
43298    if (element != null) {
43299    composeElementAttributes(element);
43300      xml.enter(FHIR_NS, name);
43301      composeDeviceDefinitionChargeItemComponentElements(element);
43302      composeElementClose(element);
43303      xml.exit(FHIR_NS, name);
43304    }
43305  }
43306
43307  protected void composeDeviceDefinitionChargeItemComponentElements(DeviceDefinition.DeviceDefinitionChargeItemComponent element) throws IOException {
43308    composeBackboneElementElements(element);
43309    if (element.hasChargeItemCode()) {
43310      composeCodeableReference("chargeItemCode", element.getChargeItemCode());
43311    }
43312    if (element.hasCount()) {
43313      composeQuantity("count", element.getCount());
43314    }
43315    if (element.hasEffectivePeriod()) {
43316      composePeriod("effectivePeriod", element.getEffectivePeriod());
43317    }
43318    if (element.hasUseContext()) { 
43319      for (UsageContext e : element.getUseContext()) 
43320          composeUsageContext("useContext", e);
43321    }
43322  }
43323
43324  protected void composeDeviceDispense(String name, DeviceDispense element) throws IOException {
43325    if (element != null) {
43326    composeResourceAttributes(element);
43327      xml.enter(FHIR_NS, name);
43328      composeDeviceDispenseElements(element);
43329      composeElementClose(element);
43330      xml.exit(FHIR_NS, name);
43331    }
43332  }
43333
43334  protected void composeDeviceDispenseElements(DeviceDispense element) throws IOException {
43335    composeDomainResourceElements(element);
43336    if (element.hasIdentifier()) { 
43337      for (Identifier e : element.getIdentifier()) 
43338          composeIdentifier("identifier", e);
43339    }
43340    if (element.hasBasedOn()) { 
43341      for (Reference e : element.getBasedOn()) 
43342          composeReference("basedOn", e);
43343    }
43344    if (element.hasPartOf()) { 
43345      for (Reference e : element.getPartOf()) 
43346          composeReference("partOf", e);
43347    }
43348    if (element.hasStatusElement())
43349      composeEnumeration("status", element.getStatusElement(), new DeviceDispense.DeviceDispenseStatusCodesEnumFactory());
43350    if (element.hasStatusReason()) {
43351      composeCodeableReference("statusReason", element.getStatusReason());
43352    }
43353    if (element.hasCategory()) { 
43354      for (CodeableConcept e : element.getCategory()) 
43355          composeCodeableConcept("category", e);
43356    }
43357    if (element.hasDevice()) {
43358      composeCodeableReference("device", element.getDevice());
43359    }
43360    if (element.hasSubject()) {
43361      composeReference("subject", element.getSubject());
43362    }
43363    if (element.hasReceiver()) {
43364      composeReference("receiver", element.getReceiver());
43365    }
43366    if (element.hasEncounter()) {
43367      composeReference("encounter", element.getEncounter());
43368    }
43369    if (element.hasSupportingInformation()) { 
43370      for (Reference e : element.getSupportingInformation()) 
43371          composeReference("supportingInformation", e);
43372    }
43373    if (element.hasPerformer()) { 
43374      for (DeviceDispense.DeviceDispensePerformerComponent e : element.getPerformer()) 
43375          composeDeviceDispensePerformerComponent("performer", e);
43376    }
43377    if (element.hasLocation()) {
43378      composeReference("location", element.getLocation());
43379    }
43380    if (element.hasType()) {
43381      composeCodeableConcept("type", element.getType());
43382    }
43383    if (element.hasQuantity()) {
43384      composeQuantity("quantity", element.getQuantity());
43385    }
43386    if (element.hasPreparedDateElement()) {
43387      composeDateTime("preparedDate", element.getPreparedDateElement());
43388    }
43389    if (element.hasWhenHandedOverElement()) {
43390      composeDateTime("whenHandedOver", element.getWhenHandedOverElement());
43391    }
43392    if (element.hasDestination()) {
43393      composeReference("destination", element.getDestination());
43394    }
43395    if (element.hasNote()) { 
43396      for (Annotation e : element.getNote()) 
43397          composeAnnotation("note", e);
43398    }
43399    if (element.hasUsageInstructionElement()) {
43400      composeMarkdown("usageInstruction", element.getUsageInstructionElement());
43401    }
43402    if (element.hasEventHistory()) { 
43403      for (Reference e : element.getEventHistory()) 
43404          composeReference("eventHistory", e);
43405    }
43406  }
43407
43408  protected void composeDeviceDispensePerformerComponent(String name, DeviceDispense.DeviceDispensePerformerComponent element) throws IOException {
43409    if (element != null) {
43410    composeElementAttributes(element);
43411      xml.enter(FHIR_NS, name);
43412      composeDeviceDispensePerformerComponentElements(element);
43413      composeElementClose(element);
43414      xml.exit(FHIR_NS, name);
43415    }
43416  }
43417
43418  protected void composeDeviceDispensePerformerComponentElements(DeviceDispense.DeviceDispensePerformerComponent element) throws IOException {
43419    composeBackboneElementElements(element);
43420    if (element.hasFunction()) {
43421      composeCodeableConcept("function", element.getFunction());
43422    }
43423    if (element.hasActor()) {
43424      composeReference("actor", element.getActor());
43425    }
43426  }
43427
43428  protected void composeDeviceMetric(String name, DeviceMetric element) throws IOException {
43429    if (element != null) {
43430    composeResourceAttributes(element);
43431      xml.enter(FHIR_NS, name);
43432      composeDeviceMetricElements(element);
43433      composeElementClose(element);
43434      xml.exit(FHIR_NS, name);
43435    }
43436  }
43437
43438  protected void composeDeviceMetricElements(DeviceMetric element) throws IOException {
43439    composeDomainResourceElements(element);
43440    if (element.hasIdentifier()) { 
43441      for (Identifier e : element.getIdentifier()) 
43442          composeIdentifier("identifier", e);
43443    }
43444    if (element.hasType()) {
43445      composeCodeableConcept("type", element.getType());
43446    }
43447    if (element.hasUnit()) {
43448      composeCodeableConcept("unit", element.getUnit());
43449    }
43450    if (element.hasDevice()) {
43451      composeReference("device", element.getDevice());
43452    }
43453    if (element.hasOperationalStatusElement())
43454      composeEnumeration("operationalStatus", element.getOperationalStatusElement(), new DeviceMetric.DeviceMetricOperationalStatusEnumFactory());
43455    if (element.hasColorElement()) {
43456      composeCode("color", element.getColorElement());
43457    }
43458    if (element.hasCategoryElement())
43459      composeEnumeration("category", element.getCategoryElement(), new DeviceMetric.DeviceMetricCategoryEnumFactory());
43460    if (element.hasMeasurementFrequency()) {
43461      composeQuantity("measurementFrequency", element.getMeasurementFrequency());
43462    }
43463    if (element.hasCalibration()) { 
43464      for (DeviceMetric.DeviceMetricCalibrationComponent e : element.getCalibration()) 
43465          composeDeviceMetricCalibrationComponent("calibration", e);
43466    }
43467  }
43468
43469  protected void composeDeviceMetricCalibrationComponent(String name, DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
43470    if (element != null) {
43471    composeElementAttributes(element);
43472      xml.enter(FHIR_NS, name);
43473      composeDeviceMetricCalibrationComponentElements(element);
43474      composeElementClose(element);
43475      xml.exit(FHIR_NS, name);
43476    }
43477  }
43478
43479  protected void composeDeviceMetricCalibrationComponentElements(DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
43480    composeBackboneElementElements(element);
43481    if (element.hasTypeElement())
43482      composeEnumeration("type", element.getTypeElement(), new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory());
43483    if (element.hasStateElement())
43484      composeEnumeration("state", element.getStateElement(), new DeviceMetric.DeviceMetricCalibrationStateEnumFactory());
43485    if (element.hasTimeElement()) {
43486      composeInstant("time", element.getTimeElement());
43487    }
43488  }
43489
43490  protected void composeDeviceRequest(String name, DeviceRequest element) throws IOException {
43491    if (element != null) {
43492    composeResourceAttributes(element);
43493      xml.enter(FHIR_NS, name);
43494      composeDeviceRequestElements(element);
43495      composeElementClose(element);
43496      xml.exit(FHIR_NS, name);
43497    }
43498  }
43499
43500  protected void composeDeviceRequestElements(DeviceRequest element) throws IOException {
43501    composeDomainResourceElements(element);
43502    if (element.hasIdentifier()) { 
43503      for (Identifier e : element.getIdentifier()) 
43504          composeIdentifier("identifier", e);
43505    }
43506    if (element.hasInstantiatesCanonical()) { 
43507      for (CanonicalType e : element.getInstantiatesCanonical()) 
43508          composeCanonical("instantiatesCanonical", e);
43509    }
43510    if (element.hasInstantiatesUri()) { 
43511      for (UriType e : element.getInstantiatesUri()) 
43512          composeUri("instantiatesUri", e);
43513    }
43514    if (element.hasBasedOn()) { 
43515      for (Reference e : element.getBasedOn()) 
43516          composeReference("basedOn", e);
43517    }
43518    if (element.hasReplaces()) { 
43519      for (Reference e : element.getReplaces()) 
43520          composeReference("replaces", e);
43521    }
43522    if (element.hasGroupIdentifier()) {
43523      composeIdentifier("groupIdentifier", element.getGroupIdentifier());
43524    }
43525    if (element.hasStatusElement())
43526      composeEnumeration("status", element.getStatusElement(), new Enumerations.RequestStatusEnumFactory());
43527    if (element.hasIntentElement())
43528      composeEnumeration("intent", element.getIntentElement(), new Enumerations.RequestIntentEnumFactory());
43529    if (element.hasPriorityElement())
43530      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
43531    if (element.hasDoNotPerformElement()) {
43532      composeBoolean("doNotPerform", element.getDoNotPerformElement());
43533    }
43534    if (element.hasCode()) {
43535      composeCodeableReference("code", element.getCode());
43536    }
43537    if (element.hasQuantityElement()) {
43538      composeInteger("quantity", element.getQuantityElement());
43539    }
43540    if (element.hasParameter()) { 
43541      for (DeviceRequest.DeviceRequestParameterComponent e : element.getParameter()) 
43542          composeDeviceRequestParameterComponent("parameter", e);
43543    }
43544    if (element.hasSubject()) {
43545      composeReference("subject", element.getSubject());
43546    }
43547    if (element.hasEncounter()) {
43548      composeReference("encounter", element.getEncounter());
43549    }
43550    if (element.hasOccurrence()) {
43551      composeType("occurrence", element.getOccurrence());
43552    }    if (element.hasAuthoredOnElement()) {
43553      composeDateTime("authoredOn", element.getAuthoredOnElement());
43554    }
43555    if (element.hasRequester()) {
43556      composeReference("requester", element.getRequester());
43557    }
43558    if (element.hasPerformer()) {
43559      composeCodeableReference("performer", element.getPerformer());
43560    }
43561    if (element.hasReason()) { 
43562      for (CodeableReference e : element.getReason()) 
43563          composeCodeableReference("reason", e);
43564    }
43565    if (element.hasAsNeededElement()) {
43566      composeBoolean("asNeeded", element.getAsNeededElement());
43567    }
43568    if (element.hasAsNeededFor()) {
43569      composeCodeableConcept("asNeededFor", element.getAsNeededFor());
43570    }
43571    if (element.hasInsurance()) { 
43572      for (Reference e : element.getInsurance()) 
43573          composeReference("insurance", e);
43574    }
43575    if (element.hasSupportingInfo()) { 
43576      for (Reference e : element.getSupportingInfo()) 
43577          composeReference("supportingInfo", e);
43578    }
43579    if (element.hasNote()) { 
43580      for (Annotation e : element.getNote()) 
43581          composeAnnotation("note", e);
43582    }
43583    if (element.hasRelevantHistory()) { 
43584      for (Reference e : element.getRelevantHistory()) 
43585          composeReference("relevantHistory", e);
43586    }
43587  }
43588
43589  protected void composeDeviceRequestParameterComponent(String name, DeviceRequest.DeviceRequestParameterComponent element) throws IOException {
43590    if (element != null) {
43591    composeElementAttributes(element);
43592      xml.enter(FHIR_NS, name);
43593      composeDeviceRequestParameterComponentElements(element);
43594      composeElementClose(element);
43595      xml.exit(FHIR_NS, name);
43596    }
43597  }
43598
43599  protected void composeDeviceRequestParameterComponentElements(DeviceRequest.DeviceRequestParameterComponent element) throws IOException {
43600    composeBackboneElementElements(element);
43601    if (element.hasCode()) {
43602      composeCodeableConcept("code", element.getCode());
43603    }
43604    if (element.hasValue()) {
43605      composeType("value", element.getValue());
43606    }  }
43607
43608  protected void composeDeviceUsage(String name, DeviceUsage element) throws IOException {
43609    if (element != null) {
43610    composeResourceAttributes(element);
43611      xml.enter(FHIR_NS, name);
43612      composeDeviceUsageElements(element);
43613      composeElementClose(element);
43614      xml.exit(FHIR_NS, name);
43615    }
43616  }
43617
43618  protected void composeDeviceUsageElements(DeviceUsage element) throws IOException {
43619    composeDomainResourceElements(element);
43620    if (element.hasIdentifier()) { 
43621      for (Identifier e : element.getIdentifier()) 
43622          composeIdentifier("identifier", e);
43623    }
43624    if (element.hasBasedOn()) { 
43625      for (Reference e : element.getBasedOn()) 
43626          composeReference("basedOn", e);
43627    }
43628    if (element.hasStatusElement())
43629      composeEnumeration("status", element.getStatusElement(), new DeviceUsage.DeviceUsageStatusEnumFactory());
43630    if (element.hasCategory()) { 
43631      for (CodeableConcept e : element.getCategory()) 
43632          composeCodeableConcept("category", e);
43633    }
43634    if (element.hasPatient()) {
43635      composeReference("patient", element.getPatient());
43636    }
43637    if (element.hasDerivedFrom()) { 
43638      for (Reference e : element.getDerivedFrom()) 
43639          composeReference("derivedFrom", e);
43640    }
43641    if (element.hasContext()) {
43642      composeReference("context", element.getContext());
43643    }
43644    if (element.hasTiming()) {
43645      composeType("timing", element.getTiming());
43646    }    if (element.hasDateAssertedElement()) {
43647      composeDateTime("dateAsserted", element.getDateAssertedElement());
43648    }
43649    if (element.hasUsageStatus()) {
43650      composeCodeableConcept("usageStatus", element.getUsageStatus());
43651    }
43652    if (element.hasUsageReason()) { 
43653      for (CodeableConcept e : element.getUsageReason()) 
43654          composeCodeableConcept("usageReason", e);
43655    }
43656    if (element.hasAdherence()) {
43657      composeDeviceUsageAdherenceComponent("adherence", element.getAdherence());
43658    }
43659    if (element.hasInformationSource()) {
43660      composeReference("informationSource", element.getInformationSource());
43661    }
43662    if (element.hasDevice()) {
43663      composeCodeableReference("device", element.getDevice());
43664    }
43665    if (element.hasReason()) { 
43666      for (CodeableReference e : element.getReason()) 
43667          composeCodeableReference("reason", e);
43668    }
43669    if (element.hasBodySite()) {
43670      composeCodeableReference("bodySite", element.getBodySite());
43671    }
43672    if (element.hasNote()) { 
43673      for (Annotation e : element.getNote()) 
43674          composeAnnotation("note", e);
43675    }
43676  }
43677
43678  protected void composeDeviceUsageAdherenceComponent(String name, DeviceUsage.DeviceUsageAdherenceComponent element) throws IOException {
43679    if (element != null) {
43680    composeElementAttributes(element);
43681      xml.enter(FHIR_NS, name);
43682      composeDeviceUsageAdherenceComponentElements(element);
43683      composeElementClose(element);
43684      xml.exit(FHIR_NS, name);
43685    }
43686  }
43687
43688  protected void composeDeviceUsageAdherenceComponentElements(DeviceUsage.DeviceUsageAdherenceComponent element) throws IOException {
43689    composeBackboneElementElements(element);
43690    if (element.hasCode()) {
43691      composeCodeableConcept("code", element.getCode());
43692    }
43693    if (element.hasReason()) { 
43694      for (CodeableConcept e : element.getReason()) 
43695          composeCodeableConcept("reason", e);
43696    }
43697  }
43698
43699  protected void composeDiagnosticReport(String name, DiagnosticReport element) throws IOException {
43700    if (element != null) {
43701    composeResourceAttributes(element);
43702      xml.enter(FHIR_NS, name);
43703      composeDiagnosticReportElements(element);
43704      composeElementClose(element);
43705      xml.exit(FHIR_NS, name);
43706    }
43707  }
43708
43709  protected void composeDiagnosticReportElements(DiagnosticReport element) throws IOException {
43710    composeDomainResourceElements(element);
43711    if (element.hasIdentifier()) { 
43712      for (Identifier e : element.getIdentifier()) 
43713          composeIdentifier("identifier", e);
43714    }
43715    if (element.hasBasedOn()) { 
43716      for (Reference e : element.getBasedOn()) 
43717          composeReference("basedOn", e);
43718    }
43719    if (element.hasStatusElement())
43720      composeEnumeration("status", element.getStatusElement(), new DiagnosticReport.DiagnosticReportStatusEnumFactory());
43721    if (element.hasCategory()) { 
43722      for (CodeableConcept e : element.getCategory()) 
43723          composeCodeableConcept("category", e);
43724    }
43725    if (element.hasCode()) {
43726      composeCodeableConcept("code", element.getCode());
43727    }
43728    if (element.hasSubject()) {
43729      composeReference("subject", element.getSubject());
43730    }
43731    if (element.hasEncounter()) {
43732      composeReference("encounter", element.getEncounter());
43733    }
43734    if (element.hasEffective()) {
43735      composeType("effective", element.getEffective());
43736    }    if (element.hasIssuedElement()) {
43737      composeInstant("issued", element.getIssuedElement());
43738    }
43739    if (element.hasPerformer()) { 
43740      for (Reference e : element.getPerformer()) 
43741          composeReference("performer", e);
43742    }
43743    if (element.hasResultsInterpreter()) { 
43744      for (Reference e : element.getResultsInterpreter()) 
43745          composeReference("resultsInterpreter", e);
43746    }
43747    if (element.hasSpecimen()) { 
43748      for (Reference e : element.getSpecimen()) 
43749          composeReference("specimen", e);
43750    }
43751    if (element.hasResult()) { 
43752      for (Reference e : element.getResult()) 
43753          composeReference("result", e);
43754    }
43755    if (element.hasNote()) { 
43756      for (Annotation e : element.getNote()) 
43757          composeAnnotation("note", e);
43758    }
43759    if (element.hasStudy()) { 
43760      for (Reference e : element.getStudy()) 
43761          composeReference("study", e);
43762    }
43763    if (element.hasSupportingInfo()) { 
43764      for (DiagnosticReport.DiagnosticReportSupportingInfoComponent e : element.getSupportingInfo()) 
43765          composeDiagnosticReportSupportingInfoComponent("supportingInfo", e);
43766    }
43767    if (element.hasMedia()) { 
43768      for (DiagnosticReport.DiagnosticReportMediaComponent e : element.getMedia()) 
43769          composeDiagnosticReportMediaComponent("media", e);
43770    }
43771    if (element.hasComposition()) {
43772      composeReference("composition", element.getComposition());
43773    }
43774    if (element.hasConclusionElement()) {
43775      composeMarkdown("conclusion", element.getConclusionElement());
43776    }
43777    if (element.hasConclusionCode()) { 
43778      for (CodeableConcept e : element.getConclusionCode()) 
43779          composeCodeableConcept("conclusionCode", e);
43780    }
43781    if (element.hasPresentedForm()) { 
43782      for (Attachment e : element.getPresentedForm()) 
43783          composeAttachment("presentedForm", e);
43784    }
43785  }
43786
43787  protected void composeDiagnosticReportSupportingInfoComponent(String name, DiagnosticReport.DiagnosticReportSupportingInfoComponent element) throws IOException {
43788    if (element != null) {
43789    composeElementAttributes(element);
43790      xml.enter(FHIR_NS, name);
43791      composeDiagnosticReportSupportingInfoComponentElements(element);
43792      composeElementClose(element);
43793      xml.exit(FHIR_NS, name);
43794    }
43795  }
43796
43797  protected void composeDiagnosticReportSupportingInfoComponentElements(DiagnosticReport.DiagnosticReportSupportingInfoComponent element) throws IOException {
43798    composeBackboneElementElements(element);
43799    if (element.hasType()) {
43800      composeCodeableConcept("type", element.getType());
43801    }
43802    if (element.hasReference()) {
43803      composeReference("reference", element.getReference());
43804    }
43805  }
43806
43807  protected void composeDiagnosticReportMediaComponent(String name, DiagnosticReport.DiagnosticReportMediaComponent element) throws IOException {
43808    if (element != null) {
43809    composeElementAttributes(element);
43810      xml.enter(FHIR_NS, name);
43811      composeDiagnosticReportMediaComponentElements(element);
43812      composeElementClose(element);
43813      xml.exit(FHIR_NS, name);
43814    }
43815  }
43816
43817  protected void composeDiagnosticReportMediaComponentElements(DiagnosticReport.DiagnosticReportMediaComponent element) throws IOException {
43818    composeBackboneElementElements(element);
43819    if (element.hasCommentElement()) {
43820      composeString("comment", element.getCommentElement());
43821    }
43822    if (element.hasLink()) {
43823      composeReference("link", element.getLink());
43824    }
43825  }
43826
43827  protected void composeDocumentReference(String name, DocumentReference element) throws IOException {
43828    if (element != null) {
43829    composeResourceAttributes(element);
43830      xml.enter(FHIR_NS, name);
43831      composeDocumentReferenceElements(element);
43832      composeElementClose(element);
43833      xml.exit(FHIR_NS, name);
43834    }
43835  }
43836
43837  protected void composeDocumentReferenceElements(DocumentReference element) throws IOException {
43838    composeDomainResourceElements(element);
43839    if (element.hasIdentifier()) { 
43840      for (Identifier e : element.getIdentifier()) 
43841          composeIdentifier("identifier", e);
43842    }
43843    if (element.hasVersionElement()) {
43844      composeString("version", element.getVersionElement());
43845    }
43846    if (element.hasBasedOn()) { 
43847      for (Reference e : element.getBasedOn()) 
43848          composeReference("basedOn", e);
43849    }
43850    if (element.hasStatusElement())
43851      composeEnumeration("status", element.getStatusElement(), new DocumentReference.DocumentReferenceStatusEnumFactory());
43852    if (element.hasDocStatusElement())
43853      composeEnumeration("docStatus", element.getDocStatusElement(), new Enumerations.CompositionStatusEnumFactory());
43854    if (element.hasModality()) { 
43855      for (CodeableConcept e : element.getModality()) 
43856          composeCodeableConcept("modality", e);
43857    }
43858    if (element.hasType()) {
43859      composeCodeableConcept("type", element.getType());
43860    }
43861    if (element.hasCategory()) { 
43862      for (CodeableConcept e : element.getCategory()) 
43863          composeCodeableConcept("category", e);
43864    }
43865    if (element.hasSubject()) {
43866      composeReference("subject", element.getSubject());
43867    }
43868    if (element.hasContext()) { 
43869      for (Reference e : element.getContext()) 
43870          composeReference("context", e);
43871    }
43872    if (element.hasEvent()) { 
43873      for (CodeableReference e : element.getEvent()) 
43874          composeCodeableReference("event", e);
43875    }
43876    if (element.hasBodySite()) { 
43877      for (CodeableReference e : element.getBodySite()) 
43878          composeCodeableReference("bodySite", e);
43879    }
43880    if (element.hasFacilityType()) {
43881      composeCodeableConcept("facilityType", element.getFacilityType());
43882    }
43883    if (element.hasPracticeSetting()) {
43884      composeCodeableConcept("practiceSetting", element.getPracticeSetting());
43885    }
43886    if (element.hasPeriod()) {
43887      composePeriod("period", element.getPeriod());
43888    }
43889    if (element.hasDateElement()) {
43890      composeInstant("date", element.getDateElement());
43891    }
43892    if (element.hasAuthor()) { 
43893      for (Reference e : element.getAuthor()) 
43894          composeReference("author", e);
43895    }
43896    if (element.hasAttester()) { 
43897      for (DocumentReference.DocumentReferenceAttesterComponent e : element.getAttester()) 
43898          composeDocumentReferenceAttesterComponent("attester", e);
43899    }
43900    if (element.hasCustodian()) {
43901      composeReference("custodian", element.getCustodian());
43902    }
43903    if (element.hasRelatesTo()) { 
43904      for (DocumentReference.DocumentReferenceRelatesToComponent e : element.getRelatesTo()) 
43905          composeDocumentReferenceRelatesToComponent("relatesTo", e);
43906    }
43907    if (element.hasDescriptionElement()) {
43908      composeMarkdown("description", element.getDescriptionElement());
43909    }
43910    if (element.hasSecurityLabel()) { 
43911      for (CodeableConcept e : element.getSecurityLabel()) 
43912          composeCodeableConcept("securityLabel", e);
43913    }
43914    if (element.hasContent()) { 
43915      for (DocumentReference.DocumentReferenceContentComponent e : element.getContent()) 
43916          composeDocumentReferenceContentComponent("content", e);
43917    }
43918  }
43919
43920  protected void composeDocumentReferenceAttesterComponent(String name, DocumentReference.DocumentReferenceAttesterComponent element) throws IOException {
43921    if (element != null) {
43922    composeElementAttributes(element);
43923      xml.enter(FHIR_NS, name);
43924      composeDocumentReferenceAttesterComponentElements(element);
43925      composeElementClose(element);
43926      xml.exit(FHIR_NS, name);
43927    }
43928  }
43929
43930  protected void composeDocumentReferenceAttesterComponentElements(DocumentReference.DocumentReferenceAttesterComponent element) throws IOException {
43931    composeBackboneElementElements(element);
43932    if (element.hasMode()) {
43933      composeCodeableConcept("mode", element.getMode());
43934    }
43935    if (element.hasTimeElement()) {
43936      composeDateTime("time", element.getTimeElement());
43937    }
43938    if (element.hasParty()) {
43939      composeReference("party", element.getParty());
43940    }
43941  }
43942
43943  protected void composeDocumentReferenceRelatesToComponent(String name, DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
43944    if (element != null) {
43945    composeElementAttributes(element);
43946      xml.enter(FHIR_NS, name);
43947      composeDocumentReferenceRelatesToComponentElements(element);
43948      composeElementClose(element);
43949      xml.exit(FHIR_NS, name);
43950    }
43951  }
43952
43953  protected void composeDocumentReferenceRelatesToComponentElements(DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
43954    composeBackboneElementElements(element);
43955    if (element.hasCode()) {
43956      composeCodeableConcept("code", element.getCode());
43957    }
43958    if (element.hasTarget()) {
43959      composeReference("target", element.getTarget());
43960    }
43961  }
43962
43963  protected void composeDocumentReferenceContentComponent(String name, DocumentReference.DocumentReferenceContentComponent element) throws IOException {
43964    if (element != null) {
43965    composeElementAttributes(element);
43966      xml.enter(FHIR_NS, name);
43967      composeDocumentReferenceContentComponentElements(element);
43968      composeElementClose(element);
43969      xml.exit(FHIR_NS, name);
43970    }
43971  }
43972
43973  protected void composeDocumentReferenceContentComponentElements(DocumentReference.DocumentReferenceContentComponent element) throws IOException {
43974    composeBackboneElementElements(element);
43975    if (element.hasAttachment()) {
43976      composeAttachment("attachment", element.getAttachment());
43977    }
43978    if (element.hasProfile()) { 
43979      for (DocumentReference.DocumentReferenceContentProfileComponent e : element.getProfile()) 
43980          composeDocumentReferenceContentProfileComponent("profile", e);
43981    }
43982  }
43983
43984  protected void composeDocumentReferenceContentProfileComponent(String name, DocumentReference.DocumentReferenceContentProfileComponent element) throws IOException {
43985    if (element != null) {
43986    composeElementAttributes(element);
43987      xml.enter(FHIR_NS, name);
43988      composeDocumentReferenceContentProfileComponentElements(element);
43989      composeElementClose(element);
43990      xml.exit(FHIR_NS, name);
43991    }
43992  }
43993
43994  protected void composeDocumentReferenceContentProfileComponentElements(DocumentReference.DocumentReferenceContentProfileComponent element) throws IOException {
43995    composeBackboneElementElements(element);
43996    if (element.hasValue()) {
43997      composeType("value", element.getValue());
43998    }  }
43999
44000  protected void composeEncounter(String name, Encounter element) throws IOException {
44001    if (element != null) {
44002    composeResourceAttributes(element);
44003      xml.enter(FHIR_NS, name);
44004      composeEncounterElements(element);
44005      composeElementClose(element);
44006      xml.exit(FHIR_NS, name);
44007    }
44008  }
44009
44010  protected void composeEncounterElements(Encounter element) throws IOException {
44011    composeDomainResourceElements(element);
44012    if (element.hasIdentifier()) { 
44013      for (Identifier e : element.getIdentifier()) 
44014          composeIdentifier("identifier", e);
44015    }
44016    if (element.hasStatusElement())
44017      composeEnumeration("status", element.getStatusElement(), new Enumerations.EncounterStatusEnumFactory());
44018    if (element.hasClass_()) { 
44019      for (CodeableConcept e : element.getClass_()) 
44020          composeCodeableConcept("class", e);
44021    }
44022    if (element.hasPriority()) {
44023      composeCodeableConcept("priority", element.getPriority());
44024    }
44025    if (element.hasType()) { 
44026      for (CodeableConcept e : element.getType()) 
44027          composeCodeableConcept("type", e);
44028    }
44029    if (element.hasServiceType()) { 
44030      for (CodeableReference e : element.getServiceType()) 
44031          composeCodeableReference("serviceType", e);
44032    }
44033    if (element.hasSubject()) {
44034      composeReference("subject", element.getSubject());
44035    }
44036    if (element.hasSubjectStatus()) {
44037      composeCodeableConcept("subjectStatus", element.getSubjectStatus());
44038    }
44039    if (element.hasEpisodeOfCare()) { 
44040      for (Reference e : element.getEpisodeOfCare()) 
44041          composeReference("episodeOfCare", e);
44042    }
44043    if (element.hasBasedOn()) { 
44044      for (Reference e : element.getBasedOn()) 
44045          composeReference("basedOn", e);
44046    }
44047    if (element.hasCareTeam()) { 
44048      for (Reference e : element.getCareTeam()) 
44049          composeReference("careTeam", e);
44050    }
44051    if (element.hasPartOf()) {
44052      composeReference("partOf", element.getPartOf());
44053    }
44054    if (element.hasServiceProvider()) {
44055      composeReference("serviceProvider", element.getServiceProvider());
44056    }
44057    if (element.hasParticipant()) { 
44058      for (Encounter.EncounterParticipantComponent e : element.getParticipant()) 
44059          composeEncounterParticipantComponent("participant", e);
44060    }
44061    if (element.hasAppointment()) { 
44062      for (Reference e : element.getAppointment()) 
44063          composeReference("appointment", e);
44064    }
44065    if (element.hasVirtualService()) { 
44066      for (VirtualServiceDetail e : element.getVirtualService()) 
44067          composeVirtualServiceDetail("virtualService", e);
44068    }
44069    if (element.hasActualPeriod()) {
44070      composePeriod("actualPeriod", element.getActualPeriod());
44071    }
44072    if (element.hasPlannedStartDateElement()) {
44073      composeDateTime("plannedStartDate", element.getPlannedStartDateElement());
44074    }
44075    if (element.hasPlannedEndDateElement()) {
44076      composeDateTime("plannedEndDate", element.getPlannedEndDateElement());
44077    }
44078    if (element.hasLength()) {
44079      composeDuration("length", element.getLength());
44080    }
44081    if (element.hasReason()) { 
44082      for (Encounter.ReasonComponent e : element.getReason()) 
44083          composeEncounterReasonComponent("reason", e);
44084    }
44085    if (element.hasDiagnosis()) { 
44086      for (Encounter.DiagnosisComponent e : element.getDiagnosis()) 
44087          composeEncounterDiagnosisComponent("diagnosis", e);
44088    }
44089    if (element.hasAccount()) { 
44090      for (Reference e : element.getAccount()) 
44091          composeReference("account", e);
44092    }
44093    if (element.hasDietPreference()) { 
44094      for (CodeableConcept e : element.getDietPreference()) 
44095          composeCodeableConcept("dietPreference", e);
44096    }
44097    if (element.hasSpecialArrangement()) { 
44098      for (CodeableConcept e : element.getSpecialArrangement()) 
44099          composeCodeableConcept("specialArrangement", e);
44100    }
44101    if (element.hasSpecialCourtesy()) { 
44102      for (CodeableConcept e : element.getSpecialCourtesy()) 
44103          composeCodeableConcept("specialCourtesy", e);
44104    }
44105    if (element.hasAdmission()) {
44106      composeEncounterAdmissionComponent("admission", element.getAdmission());
44107    }
44108    if (element.hasLocation()) { 
44109      for (Encounter.EncounterLocationComponent e : element.getLocation()) 
44110          composeEncounterLocationComponent("location", e);
44111    }
44112  }
44113
44114  protected void composeEncounterParticipantComponent(String name, Encounter.EncounterParticipantComponent element) throws IOException {
44115    if (element != null) {
44116    composeElementAttributes(element);
44117      xml.enter(FHIR_NS, name);
44118      composeEncounterParticipantComponentElements(element);
44119      composeElementClose(element);
44120      xml.exit(FHIR_NS, name);
44121    }
44122  }
44123
44124  protected void composeEncounterParticipantComponentElements(Encounter.EncounterParticipantComponent element) throws IOException {
44125    composeBackboneElementElements(element);
44126    if (element.hasType()) { 
44127      for (CodeableConcept e : element.getType()) 
44128          composeCodeableConcept("type", e);
44129    }
44130    if (element.hasPeriod()) {
44131      composePeriod("period", element.getPeriod());
44132    }
44133    if (element.hasActor()) {
44134      composeReference("actor", element.getActor());
44135    }
44136  }
44137
44138  protected void composeEncounterReasonComponent(String name, Encounter.ReasonComponent element) throws IOException {
44139    if (element != null) {
44140    composeElementAttributes(element);
44141      xml.enter(FHIR_NS, name);
44142      composeEncounterReasonComponentElements(element);
44143      composeElementClose(element);
44144      xml.exit(FHIR_NS, name);
44145    }
44146  }
44147
44148  protected void composeEncounterReasonComponentElements(Encounter.ReasonComponent element) throws IOException {
44149    composeBackboneElementElements(element);
44150    if (element.hasUse()) { 
44151      for (CodeableConcept e : element.getUse()) 
44152          composeCodeableConcept("use", e);
44153    }
44154    if (element.hasValue()) { 
44155      for (CodeableReference e : element.getValue()) 
44156          composeCodeableReference("value", e);
44157    }
44158  }
44159
44160  protected void composeEncounterDiagnosisComponent(String name, Encounter.DiagnosisComponent element) throws IOException {
44161    if (element != null) {
44162    composeElementAttributes(element);
44163      xml.enter(FHIR_NS, name);
44164      composeEncounterDiagnosisComponentElements(element);
44165      composeElementClose(element);
44166      xml.exit(FHIR_NS, name);
44167    }
44168  }
44169
44170  protected void composeEncounterDiagnosisComponentElements(Encounter.DiagnosisComponent element) throws IOException {
44171    composeBackboneElementElements(element);
44172    if (element.hasCondition()) { 
44173      for (CodeableReference e : element.getCondition()) 
44174          composeCodeableReference("condition", e);
44175    }
44176    if (element.hasUse()) { 
44177      for (CodeableConcept e : element.getUse()) 
44178          composeCodeableConcept("use", e);
44179    }
44180  }
44181
44182  protected void composeEncounterAdmissionComponent(String name, Encounter.EncounterAdmissionComponent element) throws IOException {
44183    if (element != null) {
44184    composeElementAttributes(element);
44185      xml.enter(FHIR_NS, name);
44186      composeEncounterAdmissionComponentElements(element);
44187      composeElementClose(element);
44188      xml.exit(FHIR_NS, name);
44189    }
44190  }
44191
44192  protected void composeEncounterAdmissionComponentElements(Encounter.EncounterAdmissionComponent element) throws IOException {
44193    composeBackboneElementElements(element);
44194    if (element.hasPreAdmissionIdentifier()) {
44195      composeIdentifier("preAdmissionIdentifier", element.getPreAdmissionIdentifier());
44196    }
44197    if (element.hasOrigin()) {
44198      composeReference("origin", element.getOrigin());
44199    }
44200    if (element.hasAdmitSource()) {
44201      composeCodeableConcept("admitSource", element.getAdmitSource());
44202    }
44203    if (element.hasReAdmission()) {
44204      composeCodeableConcept("reAdmission", element.getReAdmission());
44205    }
44206    if (element.hasDestination()) {
44207      composeReference("destination", element.getDestination());
44208    }
44209    if (element.hasDischargeDisposition()) {
44210      composeCodeableConcept("dischargeDisposition", element.getDischargeDisposition());
44211    }
44212  }
44213
44214  protected void composeEncounterLocationComponent(String name, Encounter.EncounterLocationComponent element) throws IOException {
44215    if (element != null) {
44216    composeElementAttributes(element);
44217      xml.enter(FHIR_NS, name);
44218      composeEncounterLocationComponentElements(element);
44219      composeElementClose(element);
44220      xml.exit(FHIR_NS, name);
44221    }
44222  }
44223
44224  protected void composeEncounterLocationComponentElements(Encounter.EncounterLocationComponent element) throws IOException {
44225    composeBackboneElementElements(element);
44226    if (element.hasLocation()) {
44227      composeReference("location", element.getLocation());
44228    }
44229    if (element.hasStatusElement())
44230      composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterLocationStatusEnumFactory());
44231    if (element.hasForm()) {
44232      composeCodeableConcept("form", element.getForm());
44233    }
44234    if (element.hasPeriod()) {
44235      composePeriod("period", element.getPeriod());
44236    }
44237  }
44238
44239  protected void composeEncounterHistory(String name, EncounterHistory element) throws IOException {
44240    if (element != null) {
44241    composeResourceAttributes(element);
44242      xml.enter(FHIR_NS, name);
44243      composeEncounterHistoryElements(element);
44244      composeElementClose(element);
44245      xml.exit(FHIR_NS, name);
44246    }
44247  }
44248
44249  protected void composeEncounterHistoryElements(EncounterHistory element) throws IOException {
44250    composeDomainResourceElements(element);
44251    if (element.hasEncounter()) {
44252      composeReference("encounter", element.getEncounter());
44253    }
44254    if (element.hasIdentifier()) { 
44255      for (Identifier e : element.getIdentifier()) 
44256          composeIdentifier("identifier", e);
44257    }
44258    if (element.hasStatusElement())
44259      composeEnumeration("status", element.getStatusElement(), new Enumerations.EncounterStatusEnumFactory());
44260    if (element.hasClass_()) {
44261      composeCodeableConcept("class", element.getClass_());
44262    }
44263    if (element.hasType()) { 
44264      for (CodeableConcept e : element.getType()) 
44265          composeCodeableConcept("type", e);
44266    }
44267    if (element.hasServiceType()) { 
44268      for (CodeableReference e : element.getServiceType()) 
44269          composeCodeableReference("serviceType", e);
44270    }
44271    if (element.hasSubject()) {
44272      composeReference("subject", element.getSubject());
44273    }
44274    if (element.hasSubjectStatus()) {
44275      composeCodeableConcept("subjectStatus", element.getSubjectStatus());
44276    }
44277    if (element.hasActualPeriod()) {
44278      composePeriod("actualPeriod", element.getActualPeriod());
44279    }
44280    if (element.hasPlannedStartDateElement()) {
44281      composeDateTime("plannedStartDate", element.getPlannedStartDateElement());
44282    }
44283    if (element.hasPlannedEndDateElement()) {
44284      composeDateTime("plannedEndDate", element.getPlannedEndDateElement());
44285    }
44286    if (element.hasLength()) {
44287      composeDuration("length", element.getLength());
44288    }
44289    if (element.hasLocation()) { 
44290      for (EncounterHistory.EncounterHistoryLocationComponent e : element.getLocation()) 
44291          composeEncounterHistoryLocationComponent("location", e);
44292    }
44293  }
44294
44295  protected void composeEncounterHistoryLocationComponent(String name, EncounterHistory.EncounterHistoryLocationComponent element) throws IOException {
44296    if (element != null) {
44297    composeElementAttributes(element);
44298      xml.enter(FHIR_NS, name);
44299      composeEncounterHistoryLocationComponentElements(element);
44300      composeElementClose(element);
44301      xml.exit(FHIR_NS, name);
44302    }
44303  }
44304
44305  protected void composeEncounterHistoryLocationComponentElements(EncounterHistory.EncounterHistoryLocationComponent element) throws IOException {
44306    composeBackboneElementElements(element);
44307    if (element.hasLocation()) {
44308      composeReference("location", element.getLocation());
44309    }
44310    if (element.hasForm()) {
44311      composeCodeableConcept("form", element.getForm());
44312    }
44313  }
44314
44315  protected void composeEndpoint(String name, Endpoint element) throws IOException {
44316    if (element != null) {
44317    composeResourceAttributes(element);
44318      xml.enter(FHIR_NS, name);
44319      composeEndpointElements(element);
44320      composeElementClose(element);
44321      xml.exit(FHIR_NS, name);
44322    }
44323  }
44324
44325  protected void composeEndpointElements(Endpoint element) throws IOException {
44326    composeDomainResourceElements(element);
44327    if (element.hasIdentifier()) { 
44328      for (Identifier e : element.getIdentifier()) 
44329          composeIdentifier("identifier", e);
44330    }
44331    if (element.hasStatusElement())
44332      composeEnumeration("status", element.getStatusElement(), new Endpoint.EndpointStatusEnumFactory());
44333    if (element.hasConnectionType()) { 
44334      for (CodeableConcept e : element.getConnectionType()) 
44335          composeCodeableConcept("connectionType", e);
44336    }
44337    if (element.hasNameElement()) {
44338      composeString("name", element.getNameElement());
44339    }
44340    if (element.hasDescriptionElement()) {
44341      composeString("description", element.getDescriptionElement());
44342    }
44343    if (element.hasEnvironmentType()) { 
44344      for (CodeableConcept e : element.getEnvironmentType()) 
44345          composeCodeableConcept("environmentType", e);
44346    }
44347    if (element.hasManagingOrganization()) {
44348      composeReference("managingOrganization", element.getManagingOrganization());
44349    }
44350    if (element.hasContact()) { 
44351      for (ContactPoint e : element.getContact()) 
44352          composeContactPoint("contact", e);
44353    }
44354    if (element.hasPeriod()) {
44355      composePeriod("period", element.getPeriod());
44356    }
44357    if (element.hasPayload()) { 
44358      for (Endpoint.EndpointPayloadComponent e : element.getPayload()) 
44359          composeEndpointPayloadComponent("payload", e);
44360    }
44361    if (element.hasAddressElement()) {
44362      composeUrl("address", element.getAddressElement());
44363    }
44364    if (element.hasHeader()) { 
44365      for (StringType e : element.getHeader()) 
44366          composeString("header", e);
44367    }
44368  }
44369
44370  protected void composeEndpointPayloadComponent(String name, Endpoint.EndpointPayloadComponent element) throws IOException {
44371    if (element != null) {
44372    composeElementAttributes(element);
44373      xml.enter(FHIR_NS, name);
44374      composeEndpointPayloadComponentElements(element);
44375      composeElementClose(element);
44376      xml.exit(FHIR_NS, name);
44377    }
44378  }
44379
44380  protected void composeEndpointPayloadComponentElements(Endpoint.EndpointPayloadComponent element) throws IOException {
44381    composeBackboneElementElements(element);
44382    if (element.hasType()) { 
44383      for (CodeableConcept e : element.getType()) 
44384          composeCodeableConcept("type", e);
44385    }
44386    if (element.hasMimeType()) { 
44387      for (CodeType e : element.getMimeType()) 
44388          composeCode("mimeType", e);
44389    }
44390  }
44391
44392  protected void composeEnrollmentRequest(String name, EnrollmentRequest element) throws IOException {
44393    if (element != null) {
44394    composeResourceAttributes(element);
44395      xml.enter(FHIR_NS, name);
44396      composeEnrollmentRequestElements(element);
44397      composeElementClose(element);
44398      xml.exit(FHIR_NS, name);
44399    }
44400  }
44401
44402  protected void composeEnrollmentRequestElements(EnrollmentRequest element) throws IOException {
44403    composeDomainResourceElements(element);
44404    if (element.hasIdentifier()) { 
44405      for (Identifier e : element.getIdentifier()) 
44406          composeIdentifier("identifier", e);
44407    }
44408    if (element.hasStatusElement())
44409      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
44410    if (element.hasCreatedElement()) {
44411      composeDateTime("created", element.getCreatedElement());
44412    }
44413    if (element.hasInsurer()) {
44414      composeReference("insurer", element.getInsurer());
44415    }
44416    if (element.hasProvider()) {
44417      composeReference("provider", element.getProvider());
44418    }
44419    if (element.hasCandidate()) {
44420      composeReference("candidate", element.getCandidate());
44421    }
44422    if (element.hasCoverage()) {
44423      composeReference("coverage", element.getCoverage());
44424    }
44425  }
44426
44427  protected void composeEnrollmentResponse(String name, EnrollmentResponse element) throws IOException {
44428    if (element != null) {
44429    composeResourceAttributes(element);
44430      xml.enter(FHIR_NS, name);
44431      composeEnrollmentResponseElements(element);
44432      composeElementClose(element);
44433      xml.exit(FHIR_NS, name);
44434    }
44435  }
44436
44437  protected void composeEnrollmentResponseElements(EnrollmentResponse element) throws IOException {
44438    composeDomainResourceElements(element);
44439    if (element.hasIdentifier()) { 
44440      for (Identifier e : element.getIdentifier()) 
44441          composeIdentifier("identifier", e);
44442    }
44443    if (element.hasStatusElement())
44444      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
44445    if (element.hasRequest()) {
44446      composeReference("request", element.getRequest());
44447    }
44448    if (element.hasOutcomeElement())
44449      composeEnumeration("outcome", element.getOutcomeElement(), new EnrollmentResponse.EnrollmentOutcomeEnumFactory());
44450    if (element.hasDispositionElement()) {
44451      composeString("disposition", element.getDispositionElement());
44452    }
44453    if (element.hasCreatedElement()) {
44454      composeDateTime("created", element.getCreatedElement());
44455    }
44456    if (element.hasOrganization()) {
44457      composeReference("organization", element.getOrganization());
44458    }
44459    if (element.hasRequestProvider()) {
44460      composeReference("requestProvider", element.getRequestProvider());
44461    }
44462  }
44463
44464  protected void composeEpisodeOfCare(String name, EpisodeOfCare element) throws IOException {
44465    if (element != null) {
44466    composeResourceAttributes(element);
44467      xml.enter(FHIR_NS, name);
44468      composeEpisodeOfCareElements(element);
44469      composeElementClose(element);
44470      xml.exit(FHIR_NS, name);
44471    }
44472  }
44473
44474  protected void composeEpisodeOfCareElements(EpisodeOfCare element) throws IOException {
44475    composeDomainResourceElements(element);
44476    if (element.hasIdentifier()) { 
44477      for (Identifier e : element.getIdentifier()) 
44478          composeIdentifier("identifier", e);
44479    }
44480    if (element.hasStatusElement())
44481      composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
44482    if (element.hasStatusHistory()) { 
44483      for (EpisodeOfCare.EpisodeOfCareStatusHistoryComponent e : element.getStatusHistory()) 
44484          composeEpisodeOfCareStatusHistoryComponent("statusHistory", e);
44485    }
44486    if (element.hasType()) { 
44487      for (CodeableConcept e : element.getType()) 
44488          composeCodeableConcept("type", e);
44489    }
44490    if (element.hasReason()) { 
44491      for (EpisodeOfCare.ReasonComponent e : element.getReason()) 
44492          composeEpisodeOfCareReasonComponent("reason", e);
44493    }
44494    if (element.hasDiagnosis()) { 
44495      for (EpisodeOfCare.DiagnosisComponent e : element.getDiagnosis()) 
44496          composeEpisodeOfCareDiagnosisComponent("diagnosis", e);
44497    }
44498    if (element.hasPatient()) {
44499      composeReference("patient", element.getPatient());
44500    }
44501    if (element.hasManagingOrganization()) {
44502      composeReference("managingOrganization", element.getManagingOrganization());
44503    }
44504    if (element.hasPeriod()) {
44505      composePeriod("period", element.getPeriod());
44506    }
44507    if (element.hasReferralRequest()) { 
44508      for (Reference e : element.getReferralRequest()) 
44509          composeReference("referralRequest", e);
44510    }
44511    if (element.hasCareManager()) {
44512      composeReference("careManager", element.getCareManager());
44513    }
44514    if (element.hasCareTeam()) { 
44515      for (Reference e : element.getCareTeam()) 
44516          composeReference("careTeam", e);
44517    }
44518    if (element.hasAccount()) { 
44519      for (Reference e : element.getAccount()) 
44520          composeReference("account", e);
44521    }
44522  }
44523
44524  protected void composeEpisodeOfCareStatusHistoryComponent(String name, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
44525    if (element != null) {
44526    composeElementAttributes(element);
44527      xml.enter(FHIR_NS, name);
44528      composeEpisodeOfCareStatusHistoryComponentElements(element);
44529      composeElementClose(element);
44530      xml.exit(FHIR_NS, name);
44531    }
44532  }
44533
44534  protected void composeEpisodeOfCareStatusHistoryComponentElements(EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
44535    composeBackboneElementElements(element);
44536    if (element.hasStatusElement())
44537      composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
44538    if (element.hasPeriod()) {
44539      composePeriod("period", element.getPeriod());
44540    }
44541  }
44542
44543  protected void composeEpisodeOfCareReasonComponent(String name, EpisodeOfCare.ReasonComponent element) throws IOException {
44544    if (element != null) {
44545    composeElementAttributes(element);
44546      xml.enter(FHIR_NS, name);
44547      composeEpisodeOfCareReasonComponentElements(element);
44548      composeElementClose(element);
44549      xml.exit(FHIR_NS, name);
44550    }
44551  }
44552
44553  protected void composeEpisodeOfCareReasonComponentElements(EpisodeOfCare.ReasonComponent element) throws IOException {
44554    composeBackboneElementElements(element);
44555    if (element.hasUse()) {
44556      composeCodeableConcept("use", element.getUse());
44557    }
44558    if (element.hasValue()) { 
44559      for (CodeableReference e : element.getValue()) 
44560          composeCodeableReference("value", e);
44561    }
44562  }
44563
44564  protected void composeEpisodeOfCareDiagnosisComponent(String name, EpisodeOfCare.DiagnosisComponent element) throws IOException {
44565    if (element != null) {
44566    composeElementAttributes(element);
44567      xml.enter(FHIR_NS, name);
44568      composeEpisodeOfCareDiagnosisComponentElements(element);
44569      composeElementClose(element);
44570      xml.exit(FHIR_NS, name);
44571    }
44572  }
44573
44574  protected void composeEpisodeOfCareDiagnosisComponentElements(EpisodeOfCare.DiagnosisComponent element) throws IOException {
44575    composeBackboneElementElements(element);
44576    if (element.hasCondition()) { 
44577      for (CodeableReference e : element.getCondition()) 
44578          composeCodeableReference("condition", e);
44579    }
44580    if (element.hasUse()) {
44581      composeCodeableConcept("use", element.getUse());
44582    }
44583  }
44584
44585  protected void composeEventDefinition(String name, EventDefinition element) throws IOException {
44586    if (element != null) {
44587    composeResourceAttributes(element);
44588      xml.enter(FHIR_NS, name);
44589      composeEventDefinitionElements(element);
44590      composeElementClose(element);
44591      xml.exit(FHIR_NS, name);
44592    }
44593  }
44594
44595  protected void composeEventDefinitionElements(EventDefinition element) throws IOException {
44596    composeMetadataResourceElements(element);
44597    if (element.hasUrlElement()) {
44598      composeUri("url", element.getUrlElement());
44599    }
44600    if (element.hasIdentifier()) { 
44601      for (Identifier e : element.getIdentifier()) 
44602          composeIdentifier("identifier", e);
44603    }
44604    if (element.hasVersionElement()) {
44605      composeString("version", element.getVersionElement());
44606    }
44607    if (element.hasVersionAlgorithm()) {
44608      composeType("versionAlgorithm", element.getVersionAlgorithm());
44609    }    if (element.hasNameElement()) {
44610      composeString("name", element.getNameElement());
44611    }
44612    if (element.hasTitleElement()) {
44613      composeString("title", element.getTitleElement());
44614    }
44615    if (element.hasSubtitleElement()) {
44616      composeString("subtitle", element.getSubtitleElement());
44617    }
44618    if (element.hasStatusElement())
44619      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
44620    if (element.hasExperimentalElement()) {
44621      composeBoolean("experimental", element.getExperimentalElement());
44622    }
44623    if (element.hasSubject()) {
44624      composeType("subject", element.getSubject());
44625    }    if (element.hasDateElement()) {
44626      composeDateTime("date", element.getDateElement());
44627    }
44628    if (element.hasPublisherElement()) {
44629      composeString("publisher", element.getPublisherElement());
44630    }
44631    if (element.hasContact()) { 
44632      for (ContactDetail e : element.getContact()) 
44633          composeContactDetail("contact", e);
44634    }
44635    if (element.hasDescriptionElement()) {
44636      composeMarkdown("description", element.getDescriptionElement());
44637    }
44638    if (element.hasUseContext()) { 
44639      for (UsageContext e : element.getUseContext()) 
44640          composeUsageContext("useContext", e);
44641    }
44642    if (element.hasJurisdiction()) { 
44643      for (CodeableConcept e : element.getJurisdiction()) 
44644          composeCodeableConcept("jurisdiction", e);
44645    }
44646    if (element.hasPurposeElement()) {
44647      composeMarkdown("purpose", element.getPurposeElement());
44648    }
44649    if (element.hasUsageElement()) {
44650      composeMarkdown("usage", element.getUsageElement());
44651    }
44652    if (element.hasCopyrightElement()) {
44653      composeMarkdown("copyright", element.getCopyrightElement());
44654    }
44655    if (element.hasCopyrightLabelElement()) {
44656      composeString("copyrightLabel", element.getCopyrightLabelElement());
44657    }
44658    if (element.hasApprovalDateElement()) {
44659      composeDate("approvalDate", element.getApprovalDateElement());
44660    }
44661    if (element.hasLastReviewDateElement()) {
44662      composeDate("lastReviewDate", element.getLastReviewDateElement());
44663    }
44664    if (element.hasEffectivePeriod()) {
44665      composePeriod("effectivePeriod", element.getEffectivePeriod());
44666    }
44667    if (element.hasTopic()) { 
44668      for (CodeableConcept e : element.getTopic()) 
44669          composeCodeableConcept("topic", e);
44670    }
44671    if (element.hasAuthor()) { 
44672      for (ContactDetail e : element.getAuthor()) 
44673          composeContactDetail("author", e);
44674    }
44675    if (element.hasEditor()) { 
44676      for (ContactDetail e : element.getEditor()) 
44677          composeContactDetail("editor", e);
44678    }
44679    if (element.hasReviewer()) { 
44680      for (ContactDetail e : element.getReviewer()) 
44681          composeContactDetail("reviewer", e);
44682    }
44683    if (element.hasEndorser()) { 
44684      for (ContactDetail e : element.getEndorser()) 
44685          composeContactDetail("endorser", e);
44686    }
44687    if (element.hasRelatedArtifact()) { 
44688      for (RelatedArtifact e : element.getRelatedArtifact()) 
44689          composeRelatedArtifact("relatedArtifact", e);
44690    }
44691    if (element.hasTrigger()) { 
44692      for (TriggerDefinition e : element.getTrigger()) 
44693          composeTriggerDefinition("trigger", e);
44694    }
44695  }
44696
44697  protected void composeEvidence(String name, Evidence element) throws IOException {
44698    if (element != null) {
44699    composeResourceAttributes(element);
44700      xml.enter(FHIR_NS, name);
44701      composeEvidenceElements(element);
44702      composeElementClose(element);
44703      xml.exit(FHIR_NS, name);
44704    }
44705  }
44706
44707  protected void composeEvidenceElements(Evidence element) throws IOException {
44708    composeMetadataResourceElements(element);
44709    if (element.hasUrlElement()) {
44710      composeUri("url", element.getUrlElement());
44711    }
44712    if (element.hasIdentifier()) { 
44713      for (Identifier e : element.getIdentifier()) 
44714          composeIdentifier("identifier", e);
44715    }
44716    if (element.hasVersionElement()) {
44717      composeString("version", element.getVersionElement());
44718    }
44719    if (element.hasVersionAlgorithm()) {
44720      composeType("versionAlgorithm", element.getVersionAlgorithm());
44721    }    if (element.hasNameElement()) {
44722      composeString("name", element.getNameElement());
44723    }
44724    if (element.hasTitleElement()) {
44725      composeString("title", element.getTitleElement());
44726    }
44727    if (element.hasCiteAs()) {
44728      composeType("citeAs", element.getCiteAs());
44729    }    if (element.hasStatusElement())
44730      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
44731    if (element.hasExperimentalElement()) {
44732      composeBoolean("experimental", element.getExperimentalElement());
44733    }
44734    if (element.hasDateElement()) {
44735      composeDateTime("date", element.getDateElement());
44736    }
44737    if (element.hasApprovalDateElement()) {
44738      composeDate("approvalDate", element.getApprovalDateElement());
44739    }
44740    if (element.hasLastReviewDateElement()) {
44741      composeDate("lastReviewDate", element.getLastReviewDateElement());
44742    }
44743    if (element.hasPublisherElement()) {
44744      composeString("publisher", element.getPublisherElement());
44745    }
44746    if (element.hasContact()) { 
44747      for (ContactDetail e : element.getContact()) 
44748          composeContactDetail("contact", e);
44749    }
44750    if (element.hasAuthor()) { 
44751      for (ContactDetail e : element.getAuthor()) 
44752          composeContactDetail("author", e);
44753    }
44754    if (element.hasEditor()) { 
44755      for (ContactDetail e : element.getEditor()) 
44756          composeContactDetail("editor", e);
44757    }
44758    if (element.hasReviewer()) { 
44759      for (ContactDetail e : element.getReviewer()) 
44760          composeContactDetail("reviewer", e);
44761    }
44762    if (element.hasEndorser()) { 
44763      for (ContactDetail e : element.getEndorser()) 
44764          composeContactDetail("endorser", e);
44765    }
44766    if (element.hasUseContext()) { 
44767      for (UsageContext e : element.getUseContext()) 
44768          composeUsageContext("useContext", e);
44769    }
44770    if (element.hasPurposeElement()) {
44771      composeMarkdown("purpose", element.getPurposeElement());
44772    }
44773    if (element.hasCopyrightElement()) {
44774      composeMarkdown("copyright", element.getCopyrightElement());
44775    }
44776    if (element.hasCopyrightLabelElement()) {
44777      composeString("copyrightLabel", element.getCopyrightLabelElement());
44778    }
44779    if (element.hasRelatedArtifact()) { 
44780      for (RelatedArtifact e : element.getRelatedArtifact()) 
44781          composeRelatedArtifact("relatedArtifact", e);
44782    }
44783    if (element.hasDescriptionElement()) {
44784      composeMarkdown("description", element.getDescriptionElement());
44785    }
44786    if (element.hasAssertionElement()) {
44787      composeMarkdown("assertion", element.getAssertionElement());
44788    }
44789    if (element.hasNote()) { 
44790      for (Annotation e : element.getNote()) 
44791          composeAnnotation("note", e);
44792    }
44793    if (element.hasVariableDefinition()) { 
44794      for (Evidence.EvidenceVariableDefinitionComponent e : element.getVariableDefinition()) 
44795          composeEvidenceVariableDefinitionComponent("variableDefinition", e);
44796    }
44797    if (element.hasSynthesisType()) {
44798      composeCodeableConcept("synthesisType", element.getSynthesisType());
44799    }
44800    if (element.hasStudyDesign()) { 
44801      for (CodeableConcept e : element.getStudyDesign()) 
44802          composeCodeableConcept("studyDesign", e);
44803    }
44804    if (element.hasStatistic()) { 
44805      for (Evidence.EvidenceStatisticComponent e : element.getStatistic()) 
44806          composeEvidenceStatisticComponent("statistic", e);
44807    }
44808    if (element.hasCertainty()) { 
44809      for (Evidence.EvidenceCertaintyComponent e : element.getCertainty()) 
44810          composeEvidenceCertaintyComponent("certainty", e);
44811    }
44812  }
44813
44814  protected void composeEvidenceVariableDefinitionComponent(String name, Evidence.EvidenceVariableDefinitionComponent element) throws IOException {
44815    if (element != null) {
44816    composeElementAttributes(element);
44817      xml.enter(FHIR_NS, name);
44818      composeEvidenceVariableDefinitionComponentElements(element);
44819      composeElementClose(element);
44820      xml.exit(FHIR_NS, name);
44821    }
44822  }
44823
44824  protected void composeEvidenceVariableDefinitionComponentElements(Evidence.EvidenceVariableDefinitionComponent element) throws IOException {
44825    composeBackboneElementElements(element);
44826    if (element.hasDescriptionElement()) {
44827      composeMarkdown("description", element.getDescriptionElement());
44828    }
44829    if (element.hasNote()) { 
44830      for (Annotation e : element.getNote()) 
44831          composeAnnotation("note", e);
44832    }
44833    if (element.hasVariableRole()) {
44834      composeCodeableConcept("variableRole", element.getVariableRole());
44835    }
44836    if (element.hasObserved()) {
44837      composeReference("observed", element.getObserved());
44838    }
44839    if (element.hasIntended()) {
44840      composeReference("intended", element.getIntended());
44841    }
44842    if (element.hasDirectnessMatch()) {
44843      composeCodeableConcept("directnessMatch", element.getDirectnessMatch());
44844    }
44845  }
44846
44847  protected void composeEvidenceStatisticComponent(String name, Evidence.EvidenceStatisticComponent element) throws IOException {
44848    if (element != null) {
44849    composeElementAttributes(element);
44850      xml.enter(FHIR_NS, name);
44851      composeEvidenceStatisticComponentElements(element);
44852      composeElementClose(element);
44853      xml.exit(FHIR_NS, name);
44854    }
44855  }
44856
44857  protected void composeEvidenceStatisticComponentElements(Evidence.EvidenceStatisticComponent element) throws IOException {
44858    composeBackboneElementElements(element);
44859    if (element.hasDescriptionElement()) {
44860      composeMarkdown("description", element.getDescriptionElement());
44861    }
44862    if (element.hasNote()) { 
44863      for (Annotation e : element.getNote()) 
44864          composeAnnotation("note", e);
44865    }
44866    if (element.hasStatisticType()) {
44867      composeCodeableConcept("statisticType", element.getStatisticType());
44868    }
44869    if (element.hasCategory()) {
44870      composeCodeableConcept("category", element.getCategory());
44871    }
44872    if (element.hasQuantity()) {
44873      composeQuantity("quantity", element.getQuantity());
44874    }
44875    if (element.hasNumberOfEventsElement()) {
44876      composeUnsignedInt("numberOfEvents", element.getNumberOfEventsElement());
44877    }
44878    if (element.hasNumberAffectedElement()) {
44879      composeUnsignedInt("numberAffected", element.getNumberAffectedElement());
44880    }
44881    if (element.hasSampleSize()) {
44882      composeEvidenceStatisticSampleSizeComponent("sampleSize", element.getSampleSize());
44883    }
44884    if (element.hasAttributeEstimate()) { 
44885      for (Evidence.EvidenceStatisticAttributeEstimateComponent e : element.getAttributeEstimate()) 
44886          composeEvidenceStatisticAttributeEstimateComponent("attributeEstimate", e);
44887    }
44888    if (element.hasModelCharacteristic()) { 
44889      for (Evidence.EvidenceStatisticModelCharacteristicComponent e : element.getModelCharacteristic()) 
44890          composeEvidenceStatisticModelCharacteristicComponent("modelCharacteristic", e);
44891    }
44892  }
44893
44894  protected void composeEvidenceStatisticSampleSizeComponent(String name, Evidence.EvidenceStatisticSampleSizeComponent element) throws IOException {
44895    if (element != null) {
44896    composeElementAttributes(element);
44897      xml.enter(FHIR_NS, name);
44898      composeEvidenceStatisticSampleSizeComponentElements(element);
44899      composeElementClose(element);
44900      xml.exit(FHIR_NS, name);
44901    }
44902  }
44903
44904  protected void composeEvidenceStatisticSampleSizeComponentElements(Evidence.EvidenceStatisticSampleSizeComponent element) throws IOException {
44905    composeBackboneElementElements(element);
44906    if (element.hasDescriptionElement()) {
44907      composeMarkdown("description", element.getDescriptionElement());
44908    }
44909    if (element.hasNote()) { 
44910      for (Annotation e : element.getNote()) 
44911          composeAnnotation("note", e);
44912    }
44913    if (element.hasNumberOfStudiesElement()) {
44914      composeUnsignedInt("numberOfStudies", element.getNumberOfStudiesElement());
44915    }
44916    if (element.hasNumberOfParticipantsElement()) {
44917      composeUnsignedInt("numberOfParticipants", element.getNumberOfParticipantsElement());
44918    }
44919    if (element.hasKnownDataCountElement()) {
44920      composeUnsignedInt("knownDataCount", element.getKnownDataCountElement());
44921    }
44922  }
44923
44924  protected void composeEvidenceStatisticAttributeEstimateComponent(String name, Evidence.EvidenceStatisticAttributeEstimateComponent element) throws IOException {
44925    if (element != null) {
44926    composeElementAttributes(element);
44927      xml.enter(FHIR_NS, name);
44928      composeEvidenceStatisticAttributeEstimateComponentElements(element);
44929      composeElementClose(element);
44930      xml.exit(FHIR_NS, name);
44931    }
44932  }
44933
44934  protected void composeEvidenceStatisticAttributeEstimateComponentElements(Evidence.EvidenceStatisticAttributeEstimateComponent element) throws IOException {
44935    composeBackboneElementElements(element);
44936    if (element.hasDescriptionElement()) {
44937      composeMarkdown("description", element.getDescriptionElement());
44938    }
44939    if (element.hasNote()) { 
44940      for (Annotation e : element.getNote()) 
44941          composeAnnotation("note", e);
44942    }
44943    if (element.hasType()) {
44944      composeCodeableConcept("type", element.getType());
44945    }
44946    if (element.hasQuantity()) {
44947      composeQuantity("quantity", element.getQuantity());
44948    }
44949    if (element.hasLevelElement()) {
44950      composeDecimal("level", element.getLevelElement());
44951    }
44952    if (element.hasRange()) {
44953      composeRange("range", element.getRange());
44954    }
44955    if (element.hasAttributeEstimate()) { 
44956      for (Evidence.EvidenceStatisticAttributeEstimateComponent e : element.getAttributeEstimate()) 
44957          composeEvidenceStatisticAttributeEstimateComponent("attributeEstimate", e);
44958    }
44959  }
44960
44961  protected void composeEvidenceStatisticModelCharacteristicComponent(String name, Evidence.EvidenceStatisticModelCharacteristicComponent element) throws IOException {
44962    if (element != null) {
44963    composeElementAttributes(element);
44964      xml.enter(FHIR_NS, name);
44965      composeEvidenceStatisticModelCharacteristicComponentElements(element);
44966      composeElementClose(element);
44967      xml.exit(FHIR_NS, name);
44968    }
44969  }
44970
44971  protected void composeEvidenceStatisticModelCharacteristicComponentElements(Evidence.EvidenceStatisticModelCharacteristicComponent element) throws IOException {
44972    composeBackboneElementElements(element);
44973    if (element.hasCode()) {
44974      composeCodeableConcept("code", element.getCode());
44975    }
44976    if (element.hasValue()) {
44977      composeQuantity("value", element.getValue());
44978    }
44979    if (element.hasVariable()) { 
44980      for (Evidence.EvidenceStatisticModelCharacteristicVariableComponent e : element.getVariable()) 
44981          composeEvidenceStatisticModelCharacteristicVariableComponent("variable", e);
44982    }
44983    if (element.hasAttributeEstimate()) { 
44984      for (Evidence.EvidenceStatisticAttributeEstimateComponent e : element.getAttributeEstimate()) 
44985          composeEvidenceStatisticAttributeEstimateComponent("attributeEstimate", e);
44986    }
44987  }
44988
44989  protected void composeEvidenceStatisticModelCharacteristicVariableComponent(String name, Evidence.EvidenceStatisticModelCharacteristicVariableComponent element) throws IOException {
44990    if (element != null) {
44991    composeElementAttributes(element);
44992      xml.enter(FHIR_NS, name);
44993      composeEvidenceStatisticModelCharacteristicVariableComponentElements(element);
44994      composeElementClose(element);
44995      xml.exit(FHIR_NS, name);
44996    }
44997  }
44998
44999  protected void composeEvidenceStatisticModelCharacteristicVariableComponentElements(Evidence.EvidenceStatisticModelCharacteristicVariableComponent element) throws IOException {
45000    composeBackboneElementElements(element);
45001    if (element.hasVariableDefinition()) {
45002      composeReference("variableDefinition", element.getVariableDefinition());
45003    }
45004    if (element.hasHandlingElement())
45005      composeEnumeration("handling", element.getHandlingElement(), new Enumerations.EvidenceVariableHandlingEnumFactory());
45006    if (element.hasValueCategory()) { 
45007      for (CodeableConcept e : element.getValueCategory()) 
45008          composeCodeableConcept("valueCategory", e);
45009    }
45010    if (element.hasValueQuantity()) { 
45011      for (Quantity e : element.getValueQuantity()) 
45012          composeQuantity("valueQuantity", e);
45013    }
45014    if (element.hasValueRange()) { 
45015      for (Range e : element.getValueRange()) 
45016          composeRange("valueRange", e);
45017    }
45018  }
45019
45020  protected void composeEvidenceCertaintyComponent(String name, Evidence.EvidenceCertaintyComponent element) throws IOException {
45021    if (element != null) {
45022    composeElementAttributes(element);
45023      xml.enter(FHIR_NS, name);
45024      composeEvidenceCertaintyComponentElements(element);
45025      composeElementClose(element);
45026      xml.exit(FHIR_NS, name);
45027    }
45028  }
45029
45030  protected void composeEvidenceCertaintyComponentElements(Evidence.EvidenceCertaintyComponent element) throws IOException {
45031    composeBackboneElementElements(element);
45032    if (element.hasDescriptionElement()) {
45033      composeMarkdown("description", element.getDescriptionElement());
45034    }
45035    if (element.hasNote()) { 
45036      for (Annotation e : element.getNote()) 
45037          composeAnnotation("note", e);
45038    }
45039    if (element.hasType()) {
45040      composeCodeableConcept("type", element.getType());
45041    }
45042    if (element.hasRating()) {
45043      composeCodeableConcept("rating", element.getRating());
45044    }
45045    if (element.hasRaterElement()) {
45046      composeString("rater", element.getRaterElement());
45047    }
45048    if (element.hasSubcomponent()) { 
45049      for (Evidence.EvidenceCertaintyComponent e : element.getSubcomponent()) 
45050          composeEvidenceCertaintyComponent("subcomponent", e);
45051    }
45052  }
45053
45054  protected void composeEvidenceReport(String name, EvidenceReport element) throws IOException {
45055    if (element != null) {
45056    composeResourceAttributes(element);
45057      xml.enter(FHIR_NS, name);
45058      composeEvidenceReportElements(element);
45059      composeElementClose(element);
45060      xml.exit(FHIR_NS, name);
45061    }
45062  }
45063
45064  protected void composeEvidenceReportElements(EvidenceReport element) throws IOException {
45065    composeMetadataResourceElements(element);
45066    if (element.hasUrlElement()) {
45067      composeUri("url", element.getUrlElement());
45068    }
45069    if (element.hasStatusElement())
45070      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
45071    if (element.hasUseContext()) { 
45072      for (UsageContext e : element.getUseContext()) 
45073          composeUsageContext("useContext", e);
45074    }
45075    if (element.hasIdentifier()) { 
45076      for (Identifier e : element.getIdentifier()) 
45077          composeIdentifier("identifier", e);
45078    }
45079    if (element.hasRelatedIdentifier()) { 
45080      for (Identifier e : element.getRelatedIdentifier()) 
45081          composeIdentifier("relatedIdentifier", e);
45082    }
45083    if (element.hasCiteAs()) {
45084      composeType("citeAs", element.getCiteAs());
45085    }    if (element.hasType()) {
45086      composeCodeableConcept("type", element.getType());
45087    }
45088    if (element.hasNote()) { 
45089      for (Annotation e : element.getNote()) 
45090          composeAnnotation("note", e);
45091    }
45092    if (element.hasRelatedArtifact()) { 
45093      for (RelatedArtifact e : element.getRelatedArtifact()) 
45094          composeRelatedArtifact("relatedArtifact", e);
45095    }
45096    if (element.hasSubject()) {
45097      composeEvidenceReportSubjectComponent("subject", element.getSubject());
45098    }
45099    if (element.hasPublisherElement()) {
45100      composeString("publisher", element.getPublisherElement());
45101    }
45102    if (element.hasContact()) { 
45103      for (ContactDetail e : element.getContact()) 
45104          composeContactDetail("contact", e);
45105    }
45106    if (element.hasAuthor()) { 
45107      for (ContactDetail e : element.getAuthor()) 
45108          composeContactDetail("author", e);
45109    }
45110    if (element.hasEditor()) { 
45111      for (ContactDetail e : element.getEditor()) 
45112          composeContactDetail("editor", e);
45113    }
45114    if (element.hasReviewer()) { 
45115      for (ContactDetail e : element.getReviewer()) 
45116          composeContactDetail("reviewer", e);
45117    }
45118    if (element.hasEndorser()) { 
45119      for (ContactDetail e : element.getEndorser()) 
45120          composeContactDetail("endorser", e);
45121    }
45122    if (element.hasRelatesTo()) { 
45123      for (EvidenceReport.EvidenceReportRelatesToComponent e : element.getRelatesTo()) 
45124          composeEvidenceReportRelatesToComponent("relatesTo", e);
45125    }
45126    if (element.hasSection()) { 
45127      for (EvidenceReport.SectionComponent e : element.getSection()) 
45128          composeEvidenceReportSectionComponent("section", e);
45129    }
45130  }
45131
45132  protected void composeEvidenceReportSubjectComponent(String name, EvidenceReport.EvidenceReportSubjectComponent element) throws IOException {
45133    if (element != null) {
45134    composeElementAttributes(element);
45135      xml.enter(FHIR_NS, name);
45136      composeEvidenceReportSubjectComponentElements(element);
45137      composeElementClose(element);
45138      xml.exit(FHIR_NS, name);
45139    }
45140  }
45141
45142  protected void composeEvidenceReportSubjectComponentElements(EvidenceReport.EvidenceReportSubjectComponent element) throws IOException {
45143    composeBackboneElementElements(element);
45144    if (element.hasCharacteristic()) { 
45145      for (EvidenceReport.EvidenceReportSubjectCharacteristicComponent e : element.getCharacteristic()) 
45146          composeEvidenceReportSubjectCharacteristicComponent("characteristic", e);
45147    }
45148    if (element.hasNote()) { 
45149      for (Annotation e : element.getNote()) 
45150          composeAnnotation("note", e);
45151    }
45152  }
45153
45154  protected void composeEvidenceReportSubjectCharacteristicComponent(String name, EvidenceReport.EvidenceReportSubjectCharacteristicComponent element) throws IOException {
45155    if (element != null) {
45156    composeElementAttributes(element);
45157      xml.enter(FHIR_NS, name);
45158      composeEvidenceReportSubjectCharacteristicComponentElements(element);
45159      composeElementClose(element);
45160      xml.exit(FHIR_NS, name);
45161    }
45162  }
45163
45164  protected void composeEvidenceReportSubjectCharacteristicComponentElements(EvidenceReport.EvidenceReportSubjectCharacteristicComponent element) throws IOException {
45165    composeBackboneElementElements(element);
45166    if (element.hasCode()) {
45167      composeCodeableConcept("code", element.getCode());
45168    }
45169    if (element.hasValue()) {
45170      composeType("value", element.getValue());
45171    }    if (element.hasExcludeElement()) {
45172      composeBoolean("exclude", element.getExcludeElement());
45173    }
45174    if (element.hasPeriod()) {
45175      composePeriod("period", element.getPeriod());
45176    }
45177  }
45178
45179  protected void composeEvidenceReportRelatesToComponent(String name, EvidenceReport.EvidenceReportRelatesToComponent element) throws IOException {
45180    if (element != null) {
45181    composeElementAttributes(element);
45182      xml.enter(FHIR_NS, name);
45183      composeEvidenceReportRelatesToComponentElements(element);
45184      composeElementClose(element);
45185      xml.exit(FHIR_NS, name);
45186    }
45187  }
45188
45189  protected void composeEvidenceReportRelatesToComponentElements(EvidenceReport.EvidenceReportRelatesToComponent element) throws IOException {
45190    composeBackboneElementElements(element);
45191    if (element.hasCodeElement())
45192      composeEnumeration("code", element.getCodeElement(), new EvidenceReport.ReportRelationshipTypeEnumFactory());
45193    if (element.hasTarget()) {
45194      composeEvidenceReportRelatesToTargetComponent("target", element.getTarget());
45195    }
45196  }
45197
45198  protected void composeEvidenceReportRelatesToTargetComponent(String name, EvidenceReport.EvidenceReportRelatesToTargetComponent element) throws IOException {
45199    if (element != null) {
45200    composeElementAttributes(element);
45201      xml.enter(FHIR_NS, name);
45202      composeEvidenceReportRelatesToTargetComponentElements(element);
45203      composeElementClose(element);
45204      xml.exit(FHIR_NS, name);
45205    }
45206  }
45207
45208  protected void composeEvidenceReportRelatesToTargetComponentElements(EvidenceReport.EvidenceReportRelatesToTargetComponent element) throws IOException {
45209    composeBackboneElementElements(element);
45210    if (element.hasUrlElement()) {
45211      composeUri("url", element.getUrlElement());
45212    }
45213    if (element.hasIdentifier()) {
45214      composeIdentifier("identifier", element.getIdentifier());
45215    }
45216    if (element.hasDisplayElement()) {
45217      composeMarkdown("display", element.getDisplayElement());
45218    }
45219    if (element.hasResource()) {
45220      composeReference("resource", element.getResource());
45221    }
45222  }
45223
45224  protected void composeEvidenceReportSectionComponent(String name, EvidenceReport.SectionComponent element) throws IOException {
45225    if (element != null) {
45226    composeElementAttributes(element);
45227      xml.enter(FHIR_NS, name);
45228      composeEvidenceReportSectionComponentElements(element);
45229      composeElementClose(element);
45230      xml.exit(FHIR_NS, name);
45231    }
45232  }
45233
45234  protected void composeEvidenceReportSectionComponentElements(EvidenceReport.SectionComponent element) throws IOException {
45235    composeBackboneElementElements(element);
45236    if (element.hasTitleElement()) {
45237      composeString("title", element.getTitleElement());
45238    }
45239    if (element.hasFocus()) {
45240      composeCodeableConcept("focus", element.getFocus());
45241    }
45242    if (element.hasFocusReference()) {
45243      composeReference("focusReference", element.getFocusReference());
45244    }
45245    if (element.hasAuthor()) { 
45246      for (Reference e : element.getAuthor()) 
45247          composeReference("author", e);
45248    }
45249    if (element.hasText()) {
45250      composeNarrative("text", element.getText());
45251    }
45252    if (element.hasModeElement())
45253      composeEnumeration("mode", element.getModeElement(), new Enumerations.ListModeEnumFactory());
45254    if (element.hasOrderedBy()) {
45255      composeCodeableConcept("orderedBy", element.getOrderedBy());
45256    }
45257    if (element.hasEntryClassifier()) { 
45258      for (CodeableConcept e : element.getEntryClassifier()) 
45259          composeCodeableConcept("entryClassifier", e);
45260    }
45261    if (element.hasEntryReference()) { 
45262      for (Reference e : element.getEntryReference()) 
45263          composeReference("entryReference", e);
45264    }
45265    if (element.hasEntryQuantity()) { 
45266      for (Quantity e : element.getEntryQuantity()) 
45267          composeQuantity("entryQuantity", e);
45268    }
45269    if (element.hasEmptyReason()) {
45270      composeCodeableConcept("emptyReason", element.getEmptyReason());
45271    }
45272    if (element.hasSection()) { 
45273      for (EvidenceReport.SectionComponent e : element.getSection()) 
45274          composeEvidenceReportSectionComponent("section", e);
45275    }
45276  }
45277
45278  protected void composeEvidenceVariable(String name, EvidenceVariable element) throws IOException {
45279    if (element != null) {
45280    composeResourceAttributes(element);
45281      xml.enter(FHIR_NS, name);
45282      composeEvidenceVariableElements(element);
45283      composeElementClose(element);
45284      xml.exit(FHIR_NS, name);
45285    }
45286  }
45287
45288  protected void composeEvidenceVariableElements(EvidenceVariable element) throws IOException {
45289    composeMetadataResourceElements(element);
45290    if (element.hasUrlElement()) {
45291      composeUri("url", element.getUrlElement());
45292    }
45293    if (element.hasIdentifier()) { 
45294      for (Identifier e : element.getIdentifier()) 
45295          composeIdentifier("identifier", e);
45296    }
45297    if (element.hasVersionElement()) {
45298      composeString("version", element.getVersionElement());
45299    }
45300    if (element.hasVersionAlgorithm()) {
45301      composeType("versionAlgorithm", element.getVersionAlgorithm());
45302    }    if (element.hasNameElement()) {
45303      composeString("name", element.getNameElement());
45304    }
45305    if (element.hasTitleElement()) {
45306      composeString("title", element.getTitleElement());
45307    }
45308    if (element.hasShortTitleElement()) {
45309      composeString("shortTitle", element.getShortTitleElement());
45310    }
45311    if (element.hasStatusElement())
45312      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
45313    if (element.hasExperimentalElement()) {
45314      composeBoolean("experimental", element.getExperimentalElement());
45315    }
45316    if (element.hasDateElement()) {
45317      composeDateTime("date", element.getDateElement());
45318    }
45319    if (element.hasPublisherElement()) {
45320      composeString("publisher", element.getPublisherElement());
45321    }
45322    if (element.hasContact()) { 
45323      for (ContactDetail e : element.getContact()) 
45324          composeContactDetail("contact", e);
45325    }
45326    if (element.hasDescriptionElement()) {
45327      composeMarkdown("description", element.getDescriptionElement());
45328    }
45329    if (element.hasNote()) { 
45330      for (Annotation e : element.getNote()) 
45331          composeAnnotation("note", e);
45332    }
45333    if (element.hasUseContext()) { 
45334      for (UsageContext e : element.getUseContext()) 
45335          composeUsageContext("useContext", e);
45336    }
45337    if (element.hasPurposeElement()) {
45338      composeMarkdown("purpose", element.getPurposeElement());
45339    }
45340    if (element.hasCopyrightElement()) {
45341      composeMarkdown("copyright", element.getCopyrightElement());
45342    }
45343    if (element.hasCopyrightLabelElement()) {
45344      composeString("copyrightLabel", element.getCopyrightLabelElement());
45345    }
45346    if (element.hasApprovalDateElement()) {
45347      composeDate("approvalDate", element.getApprovalDateElement());
45348    }
45349    if (element.hasLastReviewDateElement()) {
45350      composeDate("lastReviewDate", element.getLastReviewDateElement());
45351    }
45352    if (element.hasEffectivePeriod()) {
45353      composePeriod("effectivePeriod", element.getEffectivePeriod());
45354    }
45355    if (element.hasAuthor()) { 
45356      for (ContactDetail e : element.getAuthor()) 
45357          composeContactDetail("author", e);
45358    }
45359    if (element.hasEditor()) { 
45360      for (ContactDetail e : element.getEditor()) 
45361          composeContactDetail("editor", e);
45362    }
45363    if (element.hasReviewer()) { 
45364      for (ContactDetail e : element.getReviewer()) 
45365          composeContactDetail("reviewer", e);
45366    }
45367    if (element.hasEndorser()) { 
45368      for (ContactDetail e : element.getEndorser()) 
45369          composeContactDetail("endorser", e);
45370    }
45371    if (element.hasRelatedArtifact()) { 
45372      for (RelatedArtifact e : element.getRelatedArtifact()) 
45373          composeRelatedArtifact("relatedArtifact", e);
45374    }
45375    if (element.hasActualElement()) {
45376      composeBoolean("actual", element.getActualElement());
45377    }
45378    if (element.hasCharacteristic()) { 
45379      for (EvidenceVariable.EvidenceVariableCharacteristicComponent e : element.getCharacteristic()) 
45380          composeEvidenceVariableCharacteristicComponent("characteristic", e);
45381    }
45382    if (element.hasHandlingElement())
45383      composeEnumeration("handling", element.getHandlingElement(), new Enumerations.EvidenceVariableHandlingEnumFactory());
45384    if (element.hasCategory()) { 
45385      for (EvidenceVariable.EvidenceVariableCategoryComponent e : element.getCategory()) 
45386          composeEvidenceVariableCategoryComponent("category", e);
45387    }
45388  }
45389
45390  protected void composeEvidenceVariableCharacteristicComponent(String name, EvidenceVariable.EvidenceVariableCharacteristicComponent element) throws IOException {
45391    if (element != null) {
45392    composeElementAttributes(element);
45393      xml.enter(FHIR_NS, name);
45394      composeEvidenceVariableCharacteristicComponentElements(element);
45395      composeElementClose(element);
45396      xml.exit(FHIR_NS, name);
45397    }
45398  }
45399
45400  protected void composeEvidenceVariableCharacteristicComponentElements(EvidenceVariable.EvidenceVariableCharacteristicComponent element) throws IOException {
45401    composeBackboneElementElements(element);
45402    if (element.hasLinkIdElement()) {
45403      composeId("linkId", element.getLinkIdElement());
45404    }
45405    if (element.hasDescriptionElement()) {
45406      composeMarkdown("description", element.getDescriptionElement());
45407    }
45408    if (element.hasNote()) { 
45409      for (Annotation e : element.getNote()) 
45410          composeAnnotation("note", e);
45411    }
45412    if (element.hasExcludeElement()) {
45413      composeBoolean("exclude", element.getExcludeElement());
45414    }
45415    if (element.hasDefinitionReference()) {
45416      composeReference("definitionReference", element.getDefinitionReference());
45417    }
45418    if (element.hasDefinitionCanonicalElement()) {
45419      composeCanonical("definitionCanonical", element.getDefinitionCanonicalElement());
45420    }
45421    if (element.hasDefinitionCodeableConcept()) {
45422      composeCodeableConcept("definitionCodeableConcept", element.getDefinitionCodeableConcept());
45423    }
45424    if (element.hasDefinitionExpression()) {
45425      composeExpression("definitionExpression", element.getDefinitionExpression());
45426    }
45427    if (element.hasDefinitionIdElement()) {
45428      composeId("definitionId", element.getDefinitionIdElement());
45429    }
45430    if (element.hasDefinitionByTypeAndValue()) {
45431      composeEvidenceVariableCharacteristicDefinitionByTypeAndValueComponent("definitionByTypeAndValue", element.getDefinitionByTypeAndValue());
45432    }
45433    if (element.hasDefinitionByCombination()) {
45434      composeEvidenceVariableCharacteristicDefinitionByCombinationComponent("definitionByCombination", element.getDefinitionByCombination());
45435    }
45436    if (element.hasInstances()) {
45437      composeType("instances", element.getInstances());
45438    }    if (element.hasDuration()) {
45439      composeType("duration", element.getDuration());
45440    }    if (element.hasTimeFromEvent()) { 
45441      for (EvidenceVariable.EvidenceVariableCharacteristicTimeFromEventComponent e : element.getTimeFromEvent()) 
45442          composeEvidenceVariableCharacteristicTimeFromEventComponent("timeFromEvent", e);
45443    }
45444  }
45445
45446  protected void composeEvidenceVariableCharacteristicDefinitionByTypeAndValueComponent(String name, EvidenceVariable.EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent element) throws IOException {
45447    if (element != null) {
45448    composeElementAttributes(element);
45449      xml.enter(FHIR_NS, name);
45450      composeEvidenceVariableCharacteristicDefinitionByTypeAndValueComponentElements(element);
45451      composeElementClose(element);
45452      xml.exit(FHIR_NS, name);
45453    }
45454  }
45455
45456  protected void composeEvidenceVariableCharacteristicDefinitionByTypeAndValueComponentElements(EvidenceVariable.EvidenceVariableCharacteristicDefinitionByTypeAndValueComponent element) throws IOException {
45457    composeBackboneElementElements(element);
45458    if (element.hasType()) {
45459      composeCodeableConcept("type", element.getType());
45460    }
45461    if (element.hasMethod()) { 
45462      for (CodeableConcept e : element.getMethod()) 
45463          composeCodeableConcept("method", e);
45464    }
45465    if (element.hasDevice()) {
45466      composeReference("device", element.getDevice());
45467    }
45468    if (element.hasValue()) {
45469      composeType("value", element.getValue());
45470    }    if (element.hasOffset()) {
45471      composeCodeableConcept("offset", element.getOffset());
45472    }
45473  }
45474
45475  protected void composeEvidenceVariableCharacteristicDefinitionByCombinationComponent(String name, EvidenceVariable.EvidenceVariableCharacteristicDefinitionByCombinationComponent element) throws IOException {
45476    if (element != null) {
45477    composeElementAttributes(element);
45478      xml.enter(FHIR_NS, name);
45479      composeEvidenceVariableCharacteristicDefinitionByCombinationComponentElements(element);
45480      composeElementClose(element);
45481      xml.exit(FHIR_NS, name);
45482    }
45483  }
45484
45485  protected void composeEvidenceVariableCharacteristicDefinitionByCombinationComponentElements(EvidenceVariable.EvidenceVariableCharacteristicDefinitionByCombinationComponent element) throws IOException {
45486    composeBackboneElementElements(element);
45487    if (element.hasCodeElement())
45488      composeEnumeration("code", element.getCodeElement(), new EvidenceVariable.CharacteristicCombinationEnumFactory());
45489    if (element.hasThresholdElement()) {
45490      composePositiveInt("threshold", element.getThresholdElement());
45491    }
45492    if (element.hasCharacteristic()) { 
45493      for (EvidenceVariable.EvidenceVariableCharacteristicComponent e : element.getCharacteristic()) 
45494          composeEvidenceVariableCharacteristicComponent("characteristic", e);
45495    }
45496  }
45497
45498  protected void composeEvidenceVariableCharacteristicTimeFromEventComponent(String name, EvidenceVariable.EvidenceVariableCharacteristicTimeFromEventComponent element) throws IOException {
45499    if (element != null) {
45500    composeElementAttributes(element);
45501      xml.enter(FHIR_NS, name);
45502      composeEvidenceVariableCharacteristicTimeFromEventComponentElements(element);
45503      composeElementClose(element);
45504      xml.exit(FHIR_NS, name);
45505    }
45506  }
45507
45508  protected void composeEvidenceVariableCharacteristicTimeFromEventComponentElements(EvidenceVariable.EvidenceVariableCharacteristicTimeFromEventComponent element) throws IOException {
45509    composeBackboneElementElements(element);
45510    if (element.hasDescriptionElement()) {
45511      composeMarkdown("description", element.getDescriptionElement());
45512    }
45513    if (element.hasNote()) { 
45514      for (Annotation e : element.getNote()) 
45515          composeAnnotation("note", e);
45516    }
45517    if (element.hasEvent()) {
45518      composeType("event", element.getEvent());
45519    }    if (element.hasQuantity()) {
45520      composeQuantity("quantity", element.getQuantity());
45521    }
45522    if (element.hasRange()) {
45523      composeRange("range", element.getRange());
45524    }
45525  }
45526
45527  protected void composeEvidenceVariableCategoryComponent(String name, EvidenceVariable.EvidenceVariableCategoryComponent element) throws IOException {
45528    if (element != null) {
45529    composeElementAttributes(element);
45530      xml.enter(FHIR_NS, name);
45531      composeEvidenceVariableCategoryComponentElements(element);
45532      composeElementClose(element);
45533      xml.exit(FHIR_NS, name);
45534    }
45535  }
45536
45537  protected void composeEvidenceVariableCategoryComponentElements(EvidenceVariable.EvidenceVariableCategoryComponent element) throws IOException {
45538    composeBackboneElementElements(element);
45539    if (element.hasNameElement()) {
45540      composeString("name", element.getNameElement());
45541    }
45542    if (element.hasValue()) {
45543      composeType("value", element.getValue());
45544    }  }
45545
45546  protected void composeExampleScenario(String name, ExampleScenario element) throws IOException {
45547    if (element != null) {
45548    composeResourceAttributes(element);
45549      xml.enter(FHIR_NS, name);
45550      composeExampleScenarioElements(element);
45551      composeElementClose(element);
45552      xml.exit(FHIR_NS, name);
45553    }
45554  }
45555
45556  protected void composeExampleScenarioElements(ExampleScenario element) throws IOException {
45557    composeCanonicalResourceElements(element);
45558    if (element.hasUrlElement()) {
45559      composeUri("url", element.getUrlElement());
45560    }
45561    if (element.hasIdentifier()) { 
45562      for (Identifier e : element.getIdentifier()) 
45563          composeIdentifier("identifier", e);
45564    }
45565    if (element.hasVersionElement()) {
45566      composeString("version", element.getVersionElement());
45567    }
45568    if (element.hasVersionAlgorithm()) {
45569      composeType("versionAlgorithm", element.getVersionAlgorithm());
45570    }    if (element.hasNameElement()) {
45571      composeString("name", element.getNameElement());
45572    }
45573    if (element.hasTitleElement()) {
45574      composeString("title", element.getTitleElement());
45575    }
45576    if (element.hasStatusElement())
45577      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
45578    if (element.hasExperimentalElement()) {
45579      composeBoolean("experimental", element.getExperimentalElement());
45580    }
45581    if (element.hasDateElement()) {
45582      composeDateTime("date", element.getDateElement());
45583    }
45584    if (element.hasPublisherElement()) {
45585      composeString("publisher", element.getPublisherElement());
45586    }
45587    if (element.hasContact()) { 
45588      for (ContactDetail e : element.getContact()) 
45589          composeContactDetail("contact", e);
45590    }
45591    if (element.hasDescriptionElement()) {
45592      composeMarkdown("description", element.getDescriptionElement());
45593    }
45594    if (element.hasUseContext()) { 
45595      for (UsageContext e : element.getUseContext()) 
45596          composeUsageContext("useContext", e);
45597    }
45598    if (element.hasJurisdiction()) { 
45599      for (CodeableConcept e : element.getJurisdiction()) 
45600          composeCodeableConcept("jurisdiction", e);
45601    }
45602    if (element.hasPurposeElement()) {
45603      composeMarkdown("purpose", element.getPurposeElement());
45604    }
45605    if (element.hasCopyrightElement()) {
45606      composeMarkdown("copyright", element.getCopyrightElement());
45607    }
45608    if (element.hasCopyrightLabelElement()) {
45609      composeString("copyrightLabel", element.getCopyrightLabelElement());
45610    }
45611    if (element.hasActor()) { 
45612      for (ExampleScenario.ExampleScenarioActorComponent e : element.getActor()) 
45613          composeExampleScenarioActorComponent("actor", e);
45614    }
45615    if (element.hasInstance()) { 
45616      for (ExampleScenario.ExampleScenarioInstanceComponent e : element.getInstance()) 
45617          composeExampleScenarioInstanceComponent("instance", e);
45618    }
45619    if (element.hasProcess()) { 
45620      for (ExampleScenario.ExampleScenarioProcessComponent e : element.getProcess()) 
45621          composeExampleScenarioProcessComponent("process", e);
45622    }
45623  }
45624
45625  protected void composeExampleScenarioActorComponent(String name, ExampleScenario.ExampleScenarioActorComponent element) throws IOException {
45626    if (element != null) {
45627    composeElementAttributes(element);
45628      xml.enter(FHIR_NS, name);
45629      composeExampleScenarioActorComponentElements(element);
45630      composeElementClose(element);
45631      xml.exit(FHIR_NS, name);
45632    }
45633  }
45634
45635  protected void composeExampleScenarioActorComponentElements(ExampleScenario.ExampleScenarioActorComponent element) throws IOException {
45636    composeBackboneElementElements(element);
45637    if (element.hasKeyElement()) {
45638      composeString("key", element.getKeyElement());
45639    }
45640    if (element.hasTypeElement())
45641      composeEnumeration("type", element.getTypeElement(), new Enumerations.ExampleScenarioActorTypeEnumFactory());
45642    if (element.hasTitleElement()) {
45643      composeString("title", element.getTitleElement());
45644    }
45645    if (element.hasDescriptionElement()) {
45646      composeMarkdown("description", element.getDescriptionElement());
45647    }
45648  }
45649
45650  protected void composeExampleScenarioInstanceComponent(String name, ExampleScenario.ExampleScenarioInstanceComponent element) throws IOException {
45651    if (element != null) {
45652    composeElementAttributes(element);
45653      xml.enter(FHIR_NS, name);
45654      composeExampleScenarioInstanceComponentElements(element);
45655      composeElementClose(element);
45656      xml.exit(FHIR_NS, name);
45657    }
45658  }
45659
45660  protected void composeExampleScenarioInstanceComponentElements(ExampleScenario.ExampleScenarioInstanceComponent element) throws IOException {
45661    composeBackboneElementElements(element);
45662    if (element.hasKeyElement()) {
45663      composeString("key", element.getKeyElement());
45664    }
45665    if (element.hasStructureType()) {
45666      composeCoding("structureType", element.getStructureType());
45667    }
45668    if (element.hasStructureVersionElement()) {
45669      composeString("structureVersion", element.getStructureVersionElement());
45670    }
45671    if (element.hasStructureProfile()) {
45672      composeType("structureProfile", element.getStructureProfile());
45673    }    if (element.hasTitleElement()) {
45674      composeString("title", element.getTitleElement());
45675    }
45676    if (element.hasDescriptionElement()) {
45677      composeMarkdown("description", element.getDescriptionElement());
45678    }
45679    if (element.hasContent()) {
45680      composeReference("content", element.getContent());
45681    }
45682    if (element.hasVersion()) { 
45683      for (ExampleScenario.ExampleScenarioInstanceVersionComponent e : element.getVersion()) 
45684          composeExampleScenarioInstanceVersionComponent("version", e);
45685    }
45686    if (element.hasContainedInstance()) { 
45687      for (ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent e : element.getContainedInstance()) 
45688          composeExampleScenarioInstanceContainedInstanceComponent("containedInstance", e);
45689    }
45690  }
45691
45692  protected void composeExampleScenarioInstanceVersionComponent(String name, ExampleScenario.ExampleScenarioInstanceVersionComponent element) throws IOException {
45693    if (element != null) {
45694    composeElementAttributes(element);
45695      xml.enter(FHIR_NS, name);
45696      composeExampleScenarioInstanceVersionComponentElements(element);
45697      composeElementClose(element);
45698      xml.exit(FHIR_NS, name);
45699    }
45700  }
45701
45702  protected void composeExampleScenarioInstanceVersionComponentElements(ExampleScenario.ExampleScenarioInstanceVersionComponent element) throws IOException {
45703    composeBackboneElementElements(element);
45704    if (element.hasKeyElement()) {
45705      composeString("key", element.getKeyElement());
45706    }
45707    if (element.hasTitleElement()) {
45708      composeString("title", element.getTitleElement());
45709    }
45710    if (element.hasDescriptionElement()) {
45711      composeMarkdown("description", element.getDescriptionElement());
45712    }
45713    if (element.hasContent()) {
45714      composeReference("content", element.getContent());
45715    }
45716  }
45717
45718  protected void composeExampleScenarioInstanceContainedInstanceComponent(String name, ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent element) throws IOException {
45719    if (element != null) {
45720    composeElementAttributes(element);
45721      xml.enter(FHIR_NS, name);
45722      composeExampleScenarioInstanceContainedInstanceComponentElements(element);
45723      composeElementClose(element);
45724      xml.exit(FHIR_NS, name);
45725    }
45726  }
45727
45728  protected void composeExampleScenarioInstanceContainedInstanceComponentElements(ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent element) throws IOException {
45729    composeBackboneElementElements(element);
45730    if (element.hasInstanceReferenceElement()) {
45731      composeString("instanceReference", element.getInstanceReferenceElement());
45732    }
45733    if (element.hasVersionReferenceElement()) {
45734      composeString("versionReference", element.getVersionReferenceElement());
45735    }
45736  }
45737
45738  protected void composeExampleScenarioProcessComponent(String name, ExampleScenario.ExampleScenarioProcessComponent element) throws IOException {
45739    if (element != null) {
45740    composeElementAttributes(element);
45741      xml.enter(FHIR_NS, name);
45742      composeExampleScenarioProcessComponentElements(element);
45743      composeElementClose(element);
45744      xml.exit(FHIR_NS, name);
45745    }
45746  }
45747
45748  protected void composeExampleScenarioProcessComponentElements(ExampleScenario.ExampleScenarioProcessComponent element) throws IOException {
45749    composeBackboneElementElements(element);
45750    if (element.hasTitleElement()) {
45751      composeString("title", element.getTitleElement());
45752    }
45753    if (element.hasDescriptionElement()) {
45754      composeMarkdown("description", element.getDescriptionElement());
45755    }
45756    if (element.hasPreConditionsElement()) {
45757      composeMarkdown("preConditions", element.getPreConditionsElement());
45758    }
45759    if (element.hasPostConditionsElement()) {
45760      composeMarkdown("postConditions", element.getPostConditionsElement());
45761    }
45762    if (element.hasStep()) { 
45763      for (ExampleScenario.ExampleScenarioProcessStepComponent e : element.getStep()) 
45764          composeExampleScenarioProcessStepComponent("step", e);
45765    }
45766  }
45767
45768  protected void composeExampleScenarioProcessStepComponent(String name, ExampleScenario.ExampleScenarioProcessStepComponent element) throws IOException {
45769    if (element != null) {
45770    composeElementAttributes(element);
45771      xml.enter(FHIR_NS, name);
45772      composeExampleScenarioProcessStepComponentElements(element);
45773      composeElementClose(element);
45774      xml.exit(FHIR_NS, name);
45775    }
45776  }
45777
45778  protected void composeExampleScenarioProcessStepComponentElements(ExampleScenario.ExampleScenarioProcessStepComponent element) throws IOException {
45779    composeBackboneElementElements(element);
45780    if (element.hasNumberElement()) {
45781      composeString("number", element.getNumberElement());
45782    }
45783    if (element.hasProcess()) {
45784      composeExampleScenarioProcessComponent("process", element.getProcess());
45785    }
45786    if (element.hasWorkflowElement()) {
45787      composeCanonical("workflow", element.getWorkflowElement());
45788    }
45789    if (element.hasOperation()) {
45790      composeExampleScenarioProcessStepOperationComponent("operation", element.getOperation());
45791    }
45792    if (element.hasAlternative()) { 
45793      for (ExampleScenario.ExampleScenarioProcessStepAlternativeComponent e : element.getAlternative()) 
45794          composeExampleScenarioProcessStepAlternativeComponent("alternative", e);
45795    }
45796    if (element.hasPauseElement()) {
45797      composeBoolean("pause", element.getPauseElement());
45798    }
45799  }
45800
45801  protected void composeExampleScenarioProcessStepOperationComponent(String name, ExampleScenario.ExampleScenarioProcessStepOperationComponent element) throws IOException {
45802    if (element != null) {
45803    composeElementAttributes(element);
45804      xml.enter(FHIR_NS, name);
45805      composeExampleScenarioProcessStepOperationComponentElements(element);
45806      composeElementClose(element);
45807      xml.exit(FHIR_NS, name);
45808    }
45809  }
45810
45811  protected void composeExampleScenarioProcessStepOperationComponentElements(ExampleScenario.ExampleScenarioProcessStepOperationComponent element) throws IOException {
45812    composeBackboneElementElements(element);
45813    if (element.hasType()) {
45814      composeCoding("type", element.getType());
45815    }
45816    if (element.hasTitleElement()) {
45817      composeString("title", element.getTitleElement());
45818    }
45819    if (element.hasInitiatorElement()) {
45820      composeString("initiator", element.getInitiatorElement());
45821    }
45822    if (element.hasReceiverElement()) {
45823      composeString("receiver", element.getReceiverElement());
45824    }
45825    if (element.hasDescriptionElement()) {
45826      composeMarkdown("description", element.getDescriptionElement());
45827    }
45828    if (element.hasInitiatorActiveElement()) {
45829      composeBoolean("initiatorActive", element.getInitiatorActiveElement());
45830    }
45831    if (element.hasReceiverActiveElement()) {
45832      composeBoolean("receiverActive", element.getReceiverActiveElement());
45833    }
45834    if (element.hasRequest()) {
45835      composeExampleScenarioInstanceContainedInstanceComponent("request", element.getRequest());
45836    }
45837    if (element.hasResponse()) {
45838      composeExampleScenarioInstanceContainedInstanceComponent("response", element.getResponse());
45839    }
45840  }
45841
45842  protected void composeExampleScenarioProcessStepAlternativeComponent(String name, ExampleScenario.ExampleScenarioProcessStepAlternativeComponent element) throws IOException {
45843    if (element != null) {
45844    composeElementAttributes(element);
45845      xml.enter(FHIR_NS, name);
45846      composeExampleScenarioProcessStepAlternativeComponentElements(element);
45847      composeElementClose(element);
45848      xml.exit(FHIR_NS, name);
45849    }
45850  }
45851
45852  protected void composeExampleScenarioProcessStepAlternativeComponentElements(ExampleScenario.ExampleScenarioProcessStepAlternativeComponent element) throws IOException {
45853    composeBackboneElementElements(element);
45854    if (element.hasTitleElement()) {
45855      composeString("title", element.getTitleElement());
45856    }
45857    if (element.hasDescriptionElement()) {
45858      composeMarkdown("description", element.getDescriptionElement());
45859    }
45860    if (element.hasStep()) { 
45861      for (ExampleScenario.ExampleScenarioProcessStepComponent e : element.getStep()) 
45862          composeExampleScenarioProcessStepComponent("step", e);
45863    }
45864  }
45865
45866  protected void composeExplanationOfBenefit(String name, ExplanationOfBenefit element) throws IOException {
45867    if (element != null) {
45868    composeResourceAttributes(element);
45869      xml.enter(FHIR_NS, name);
45870      composeExplanationOfBenefitElements(element);
45871      composeElementClose(element);
45872      xml.exit(FHIR_NS, name);
45873    }
45874  }
45875
45876  protected void composeExplanationOfBenefitElements(ExplanationOfBenefit element) throws IOException {
45877    composeDomainResourceElements(element);
45878    if (element.hasIdentifier()) { 
45879      for (Identifier e : element.getIdentifier()) 
45880          composeIdentifier("identifier", e);
45881    }
45882    if (element.hasTraceNumber()) { 
45883      for (Identifier e : element.getTraceNumber()) 
45884          composeIdentifier("traceNumber", e);
45885    }
45886    if (element.hasStatusElement())
45887      composeEnumeration("status", element.getStatusElement(), new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory());
45888    if (element.hasType()) {
45889      composeCodeableConcept("type", element.getType());
45890    }
45891    if (element.hasSubType()) {
45892      composeCodeableConcept("subType", element.getSubType());
45893    }
45894    if (element.hasUseElement())
45895      composeEnumeration("use", element.getUseElement(), new Enumerations.UseEnumFactory());
45896    if (element.hasPatient()) {
45897      composeReference("patient", element.getPatient());
45898    }
45899    if (element.hasBillablePeriod()) {
45900      composePeriod("billablePeriod", element.getBillablePeriod());
45901    }
45902    if (element.hasCreatedElement()) {
45903      composeDateTime("created", element.getCreatedElement());
45904    }
45905    if (element.hasEnterer()) {
45906      composeReference("enterer", element.getEnterer());
45907    }
45908    if (element.hasInsurer()) {
45909      composeReference("insurer", element.getInsurer());
45910    }
45911    if (element.hasProvider()) {
45912      composeReference("provider", element.getProvider());
45913    }
45914    if (element.hasPriority()) {
45915      composeCodeableConcept("priority", element.getPriority());
45916    }
45917    if (element.hasFundsReserveRequested()) {
45918      composeCodeableConcept("fundsReserveRequested", element.getFundsReserveRequested());
45919    }
45920    if (element.hasFundsReserve()) {
45921      composeCodeableConcept("fundsReserve", element.getFundsReserve());
45922    }
45923    if (element.hasRelated()) { 
45924      for (ExplanationOfBenefit.RelatedClaimComponent e : element.getRelated()) 
45925          composeExplanationOfBenefitRelatedClaimComponent("related", e);
45926    }
45927    if (element.hasPrescription()) {
45928      composeReference("prescription", element.getPrescription());
45929    }
45930    if (element.hasOriginalPrescription()) {
45931      composeReference("originalPrescription", element.getOriginalPrescription());
45932    }
45933    if (element.hasEvent()) { 
45934      for (ExplanationOfBenefit.ExplanationOfBenefitEventComponent e : element.getEvent()) 
45935          composeExplanationOfBenefitEventComponent("event", e);
45936    }
45937    if (element.hasPayee()) {
45938      composeExplanationOfBenefitPayeeComponent("payee", element.getPayee());
45939    }
45940    if (element.hasReferral()) {
45941      composeReference("referral", element.getReferral());
45942    }
45943    if (element.hasEncounter()) { 
45944      for (Reference e : element.getEncounter()) 
45945          composeReference("encounter", e);
45946    }
45947    if (element.hasFacility()) {
45948      composeReference("facility", element.getFacility());
45949    }
45950    if (element.hasClaim()) {
45951      composeReference("claim", element.getClaim());
45952    }
45953    if (element.hasClaimResponse()) {
45954      composeReference("claimResponse", element.getClaimResponse());
45955    }
45956    if (element.hasOutcomeElement())
45957      composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.ClaimProcessingCodesEnumFactory());
45958    if (element.hasDecision()) {
45959      composeCodeableConcept("decision", element.getDecision());
45960    }
45961    if (element.hasDispositionElement()) {
45962      composeString("disposition", element.getDispositionElement());
45963    }
45964    if (element.hasPreAuthRef()) { 
45965      for (StringType e : element.getPreAuthRef()) 
45966          composeString("preAuthRef", e);
45967    }
45968    if (element.hasPreAuthRefPeriod()) { 
45969      for (Period e : element.getPreAuthRefPeriod()) 
45970          composePeriod("preAuthRefPeriod", e);
45971    }
45972    if (element.hasDiagnosisRelatedGroup()) {
45973      composeCodeableConcept("diagnosisRelatedGroup", element.getDiagnosisRelatedGroup());
45974    }
45975    if (element.hasCareTeam()) { 
45976      for (ExplanationOfBenefit.CareTeamComponent e : element.getCareTeam()) 
45977          composeExplanationOfBenefitCareTeamComponent("careTeam", e);
45978    }
45979    if (element.hasSupportingInfo()) { 
45980      for (ExplanationOfBenefit.SupportingInformationComponent e : element.getSupportingInfo()) 
45981          composeExplanationOfBenefitSupportingInformationComponent("supportingInfo", e);
45982    }
45983    if (element.hasDiagnosis()) { 
45984      for (ExplanationOfBenefit.DiagnosisComponent e : element.getDiagnosis()) 
45985          composeExplanationOfBenefitDiagnosisComponent("diagnosis", e);
45986    }
45987    if (element.hasProcedure()) { 
45988      for (ExplanationOfBenefit.ProcedureComponent e : element.getProcedure()) 
45989          composeExplanationOfBenefitProcedureComponent("procedure", e);
45990    }
45991    if (element.hasPrecedenceElement()) {
45992      composePositiveInt("precedence", element.getPrecedenceElement());
45993    }
45994    if (element.hasInsurance()) { 
45995      for (ExplanationOfBenefit.InsuranceComponent e : element.getInsurance()) 
45996          composeExplanationOfBenefitInsuranceComponent("insurance", e);
45997    }
45998    if (element.hasAccident()) {
45999      composeExplanationOfBenefitAccidentComponent("accident", element.getAccident());
46000    }
46001    if (element.hasPatientPaid()) {
46002      composeMoney("patientPaid", element.getPatientPaid());
46003    }
46004    if (element.hasItem()) { 
46005      for (ExplanationOfBenefit.ItemComponent e : element.getItem()) 
46006          composeExplanationOfBenefitItemComponent("item", e);
46007    }
46008    if (element.hasAddItem()) { 
46009      for (ExplanationOfBenefit.AddedItemComponent e : element.getAddItem()) 
46010          composeExplanationOfBenefitAddedItemComponent("addItem", e);
46011    }
46012    if (element.hasAdjudication()) { 
46013      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
46014          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
46015    }
46016    if (element.hasTotal()) { 
46017      for (ExplanationOfBenefit.TotalComponent e : element.getTotal()) 
46018          composeExplanationOfBenefitTotalComponent("total", e);
46019    }
46020    if (element.hasPayment()) {
46021      composeExplanationOfBenefitPaymentComponent("payment", element.getPayment());
46022    }
46023    if (element.hasFormCode()) {
46024      composeCodeableConcept("formCode", element.getFormCode());
46025    }
46026    if (element.hasForm()) {
46027      composeAttachment("form", element.getForm());
46028    }
46029    if (element.hasProcessNote()) { 
46030      for (ExplanationOfBenefit.NoteComponent e : element.getProcessNote()) 
46031          composeExplanationOfBenefitNoteComponent("processNote", e);
46032    }
46033    if (element.hasBenefitPeriod()) {
46034      composePeriod("benefitPeriod", element.getBenefitPeriod());
46035    }
46036    if (element.hasBenefitBalance()) { 
46037      for (ExplanationOfBenefit.BenefitBalanceComponent e : element.getBenefitBalance()) 
46038          composeExplanationOfBenefitBenefitBalanceComponent("benefitBalance", e);
46039    }
46040  }
46041
46042  protected void composeExplanationOfBenefitRelatedClaimComponent(String name, ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
46043    if (element != null) {
46044    composeElementAttributes(element);
46045      xml.enter(FHIR_NS, name);
46046      composeExplanationOfBenefitRelatedClaimComponentElements(element);
46047      composeElementClose(element);
46048      xml.exit(FHIR_NS, name);
46049    }
46050  }
46051
46052  protected void composeExplanationOfBenefitRelatedClaimComponentElements(ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
46053    composeBackboneElementElements(element);
46054    if (element.hasClaim()) {
46055      composeReference("claim", element.getClaim());
46056    }
46057    if (element.hasRelationship()) {
46058      composeCodeableConcept("relationship", element.getRelationship());
46059    }
46060    if (element.hasReference()) {
46061      composeIdentifier("reference", element.getReference());
46062    }
46063  }
46064
46065  protected void composeExplanationOfBenefitEventComponent(String name, ExplanationOfBenefit.ExplanationOfBenefitEventComponent element) throws IOException {
46066    if (element != null) {
46067    composeElementAttributes(element);
46068      xml.enter(FHIR_NS, name);
46069      composeExplanationOfBenefitEventComponentElements(element);
46070      composeElementClose(element);
46071      xml.exit(FHIR_NS, name);
46072    }
46073  }
46074
46075  protected void composeExplanationOfBenefitEventComponentElements(ExplanationOfBenefit.ExplanationOfBenefitEventComponent element) throws IOException {
46076    composeBackboneElementElements(element);
46077    if (element.hasType()) {
46078      composeCodeableConcept("type", element.getType());
46079    }
46080    if (element.hasWhen()) {
46081      composeType("when", element.getWhen());
46082    }  }
46083
46084  protected void composeExplanationOfBenefitPayeeComponent(String name, ExplanationOfBenefit.PayeeComponent element) throws IOException {
46085    if (element != null) {
46086    composeElementAttributes(element);
46087      xml.enter(FHIR_NS, name);
46088      composeExplanationOfBenefitPayeeComponentElements(element);
46089      composeElementClose(element);
46090      xml.exit(FHIR_NS, name);
46091    }
46092  }
46093
46094  protected void composeExplanationOfBenefitPayeeComponentElements(ExplanationOfBenefit.PayeeComponent element) throws IOException {
46095    composeBackboneElementElements(element);
46096    if (element.hasType()) {
46097      composeCodeableConcept("type", element.getType());
46098    }
46099    if (element.hasParty()) {
46100      composeReference("party", element.getParty());
46101    }
46102  }
46103
46104  protected void composeExplanationOfBenefitCareTeamComponent(String name, ExplanationOfBenefit.CareTeamComponent element) throws IOException {
46105    if (element != null) {
46106    composeElementAttributes(element);
46107      xml.enter(FHIR_NS, name);
46108      composeExplanationOfBenefitCareTeamComponentElements(element);
46109      composeElementClose(element);
46110      xml.exit(FHIR_NS, name);
46111    }
46112  }
46113
46114  protected void composeExplanationOfBenefitCareTeamComponentElements(ExplanationOfBenefit.CareTeamComponent element) throws IOException {
46115    composeBackboneElementElements(element);
46116    if (element.hasSequenceElement()) {
46117      composePositiveInt("sequence", element.getSequenceElement());
46118    }
46119    if (element.hasProvider()) {
46120      composeReference("provider", element.getProvider());
46121    }
46122    if (element.hasResponsibleElement()) {
46123      composeBoolean("responsible", element.getResponsibleElement());
46124    }
46125    if (element.hasRole()) {
46126      composeCodeableConcept("role", element.getRole());
46127    }
46128    if (element.hasSpecialty()) {
46129      composeCodeableConcept("specialty", element.getSpecialty());
46130    }
46131  }
46132
46133  protected void composeExplanationOfBenefitSupportingInformationComponent(String name, ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
46134    if (element != null) {
46135    composeElementAttributes(element);
46136      xml.enter(FHIR_NS, name);
46137      composeExplanationOfBenefitSupportingInformationComponentElements(element);
46138      composeElementClose(element);
46139      xml.exit(FHIR_NS, name);
46140    }
46141  }
46142
46143  protected void composeExplanationOfBenefitSupportingInformationComponentElements(ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
46144    composeBackboneElementElements(element);
46145    if (element.hasSequenceElement()) {
46146      composePositiveInt("sequence", element.getSequenceElement());
46147    }
46148    if (element.hasCategory()) {
46149      composeCodeableConcept("category", element.getCategory());
46150    }
46151    if (element.hasCode()) {
46152      composeCodeableConcept("code", element.getCode());
46153    }
46154    if (element.hasTiming()) {
46155      composeType("timing", element.getTiming());
46156    }    if (element.hasValue()) {
46157      composeType("value", element.getValue());
46158    }    if (element.hasReason()) {
46159      composeCoding("reason", element.getReason());
46160    }
46161  }
46162
46163  protected void composeExplanationOfBenefitDiagnosisComponent(String name, ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
46164    if (element != null) {
46165    composeElementAttributes(element);
46166      xml.enter(FHIR_NS, name);
46167      composeExplanationOfBenefitDiagnosisComponentElements(element);
46168      composeElementClose(element);
46169      xml.exit(FHIR_NS, name);
46170    }
46171  }
46172
46173  protected void composeExplanationOfBenefitDiagnosisComponentElements(ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
46174    composeBackboneElementElements(element);
46175    if (element.hasSequenceElement()) {
46176      composePositiveInt("sequence", element.getSequenceElement());
46177    }
46178    if (element.hasDiagnosis()) {
46179      composeType("diagnosis", element.getDiagnosis());
46180    }    if (element.hasType()) { 
46181      for (CodeableConcept e : element.getType()) 
46182          composeCodeableConcept("type", e);
46183    }
46184    if (element.hasOnAdmission()) {
46185      composeCodeableConcept("onAdmission", element.getOnAdmission());
46186    }
46187  }
46188
46189  protected void composeExplanationOfBenefitProcedureComponent(String name, ExplanationOfBenefit.ProcedureComponent element) throws IOException {
46190    if (element != null) {
46191    composeElementAttributes(element);
46192      xml.enter(FHIR_NS, name);
46193      composeExplanationOfBenefitProcedureComponentElements(element);
46194      composeElementClose(element);
46195      xml.exit(FHIR_NS, name);
46196    }
46197  }
46198
46199  protected void composeExplanationOfBenefitProcedureComponentElements(ExplanationOfBenefit.ProcedureComponent element) throws IOException {
46200    composeBackboneElementElements(element);
46201    if (element.hasSequenceElement()) {
46202      composePositiveInt("sequence", element.getSequenceElement());
46203    }
46204    if (element.hasType()) { 
46205      for (CodeableConcept e : element.getType()) 
46206          composeCodeableConcept("type", e);
46207    }
46208    if (element.hasDateElement()) {
46209      composeDateTime("date", element.getDateElement());
46210    }
46211    if (element.hasProcedure()) {
46212      composeType("procedure", element.getProcedure());
46213    }    if (element.hasUdi()) { 
46214      for (Reference e : element.getUdi()) 
46215          composeReference("udi", e);
46216    }
46217  }
46218
46219  protected void composeExplanationOfBenefitInsuranceComponent(String name, ExplanationOfBenefit.InsuranceComponent element) throws IOException {
46220    if (element != null) {
46221    composeElementAttributes(element);
46222      xml.enter(FHIR_NS, name);
46223      composeExplanationOfBenefitInsuranceComponentElements(element);
46224      composeElementClose(element);
46225      xml.exit(FHIR_NS, name);
46226    }
46227  }
46228
46229  protected void composeExplanationOfBenefitInsuranceComponentElements(ExplanationOfBenefit.InsuranceComponent element) throws IOException {
46230    composeBackboneElementElements(element);
46231    if (element.hasFocalElement()) {
46232      composeBoolean("focal", element.getFocalElement());
46233    }
46234    if (element.hasCoverage()) {
46235      composeReference("coverage", element.getCoverage());
46236    }
46237    if (element.hasPreAuthRef()) { 
46238      for (StringType e : element.getPreAuthRef()) 
46239          composeString("preAuthRef", e);
46240    }
46241  }
46242
46243  protected void composeExplanationOfBenefitAccidentComponent(String name, ExplanationOfBenefit.AccidentComponent element) throws IOException {
46244    if (element != null) {
46245    composeElementAttributes(element);
46246      xml.enter(FHIR_NS, name);
46247      composeExplanationOfBenefitAccidentComponentElements(element);
46248      composeElementClose(element);
46249      xml.exit(FHIR_NS, name);
46250    }
46251  }
46252
46253  protected void composeExplanationOfBenefitAccidentComponentElements(ExplanationOfBenefit.AccidentComponent element) throws IOException {
46254    composeBackboneElementElements(element);
46255    if (element.hasDateElement()) {
46256      composeDate("date", element.getDateElement());
46257    }
46258    if (element.hasType()) {
46259      composeCodeableConcept("type", element.getType());
46260    }
46261    if (element.hasLocation()) {
46262      composeType("location", element.getLocation());
46263    }  }
46264
46265  protected void composeExplanationOfBenefitItemComponent(String name, ExplanationOfBenefit.ItemComponent element) throws IOException {
46266    if (element != null) {
46267    composeElementAttributes(element);
46268      xml.enter(FHIR_NS, name);
46269      composeExplanationOfBenefitItemComponentElements(element);
46270      composeElementClose(element);
46271      xml.exit(FHIR_NS, name);
46272    }
46273  }
46274
46275  protected void composeExplanationOfBenefitItemComponentElements(ExplanationOfBenefit.ItemComponent element) throws IOException {
46276    composeBackboneElementElements(element);
46277    if (element.hasSequenceElement()) {
46278      composePositiveInt("sequence", element.getSequenceElement());
46279    }
46280    if (element.hasCareTeamSequence()) { 
46281      for (PositiveIntType e : element.getCareTeamSequence()) 
46282          composePositiveInt("careTeamSequence", e);
46283    }
46284    if (element.hasDiagnosisSequence()) { 
46285      for (PositiveIntType e : element.getDiagnosisSequence()) 
46286          composePositiveInt("diagnosisSequence", e);
46287    }
46288    if (element.hasProcedureSequence()) { 
46289      for (PositiveIntType e : element.getProcedureSequence()) 
46290          composePositiveInt("procedureSequence", e);
46291    }
46292    if (element.hasInformationSequence()) { 
46293      for (PositiveIntType e : element.getInformationSequence()) 
46294          composePositiveInt("informationSequence", e);
46295    }
46296    if (element.hasTraceNumber()) { 
46297      for (Identifier e : element.getTraceNumber()) 
46298          composeIdentifier("traceNumber", e);
46299    }
46300    if (element.hasRevenue()) {
46301      composeCodeableConcept("revenue", element.getRevenue());
46302    }
46303    if (element.hasCategory()) {
46304      composeCodeableConcept("category", element.getCategory());
46305    }
46306    if (element.hasProductOrService()) {
46307      composeCodeableConcept("productOrService", element.getProductOrService());
46308    }
46309    if (element.hasProductOrServiceEnd()) {
46310      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
46311    }
46312    if (element.hasRequest()) { 
46313      for (Reference e : element.getRequest()) 
46314          composeReference("request", e);
46315    }
46316    if (element.hasModifier()) { 
46317      for (CodeableConcept e : element.getModifier()) 
46318          composeCodeableConcept("modifier", e);
46319    }
46320    if (element.hasProgramCode()) { 
46321      for (CodeableConcept e : element.getProgramCode()) 
46322          composeCodeableConcept("programCode", e);
46323    }
46324    if (element.hasServiced()) {
46325      composeType("serviced", element.getServiced());
46326    }    if (element.hasLocation()) {
46327      composeType("location", element.getLocation());
46328    }    if (element.hasPatientPaid()) {
46329      composeMoney("patientPaid", element.getPatientPaid());
46330    }
46331    if (element.hasQuantity()) {
46332      composeQuantity("quantity", element.getQuantity());
46333    }
46334    if (element.hasUnitPrice()) {
46335      composeMoney("unitPrice", element.getUnitPrice());
46336    }
46337    if (element.hasFactorElement()) {
46338      composeDecimal("factor", element.getFactorElement());
46339    }
46340    if (element.hasTax()) {
46341      composeMoney("tax", element.getTax());
46342    }
46343    if (element.hasNet()) {
46344      composeMoney("net", element.getNet());
46345    }
46346    if (element.hasUdi()) { 
46347      for (Reference e : element.getUdi()) 
46348          composeReference("udi", e);
46349    }
46350    if (element.hasBodySite()) { 
46351      for (ExplanationOfBenefit.ItemBodySiteComponent e : element.getBodySite()) 
46352          composeExplanationOfBenefitItemBodySiteComponent("bodySite", e);
46353    }
46354    if (element.hasEncounter()) { 
46355      for (Reference e : element.getEncounter()) 
46356          composeReference("encounter", e);
46357    }
46358    if (element.hasNoteNumber()) { 
46359      for (PositiveIntType e : element.getNoteNumber()) 
46360          composePositiveInt("noteNumber", e);
46361    }
46362    if (element.hasReviewOutcome()) {
46363      composeExplanationOfBenefitItemReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
46364    }
46365    if (element.hasAdjudication()) { 
46366      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
46367          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
46368    }
46369    if (element.hasDetail()) { 
46370      for (ExplanationOfBenefit.DetailComponent e : element.getDetail()) 
46371          composeExplanationOfBenefitDetailComponent("detail", e);
46372    }
46373  }
46374
46375  protected void composeExplanationOfBenefitItemBodySiteComponent(String name, ExplanationOfBenefit.ItemBodySiteComponent element) throws IOException {
46376    if (element != null) {
46377    composeElementAttributes(element);
46378      xml.enter(FHIR_NS, name);
46379      composeExplanationOfBenefitItemBodySiteComponentElements(element);
46380      composeElementClose(element);
46381      xml.exit(FHIR_NS, name);
46382    }
46383  }
46384
46385  protected void composeExplanationOfBenefitItemBodySiteComponentElements(ExplanationOfBenefit.ItemBodySiteComponent element) throws IOException {
46386    composeBackboneElementElements(element);
46387    if (element.hasSite()) { 
46388      for (CodeableReference e : element.getSite()) 
46389          composeCodeableReference("site", e);
46390    }
46391    if (element.hasSubSite()) { 
46392      for (CodeableConcept e : element.getSubSite()) 
46393          composeCodeableConcept("subSite", e);
46394    }
46395  }
46396
46397  protected void composeExplanationOfBenefitItemReviewOutcomeComponent(String name, ExplanationOfBenefit.ItemReviewOutcomeComponent element) throws IOException {
46398    if (element != null) {
46399    composeElementAttributes(element);
46400      xml.enter(FHIR_NS, name);
46401      composeExplanationOfBenefitItemReviewOutcomeComponentElements(element);
46402      composeElementClose(element);
46403      xml.exit(FHIR_NS, name);
46404    }
46405  }
46406
46407  protected void composeExplanationOfBenefitItemReviewOutcomeComponentElements(ExplanationOfBenefit.ItemReviewOutcomeComponent element) throws IOException {
46408    composeBackboneElementElements(element);
46409    if (element.hasDecision()) {
46410      composeCodeableConcept("decision", element.getDecision());
46411    }
46412    if (element.hasReason()) { 
46413      for (CodeableConcept e : element.getReason()) 
46414          composeCodeableConcept("reason", e);
46415    }
46416    if (element.hasPreAuthRefElement()) {
46417      composeString("preAuthRef", element.getPreAuthRefElement());
46418    }
46419    if (element.hasPreAuthPeriod()) {
46420      composePeriod("preAuthPeriod", element.getPreAuthPeriod());
46421    }
46422  }
46423
46424  protected void composeExplanationOfBenefitAdjudicationComponent(String name, ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
46425    if (element != null) {
46426    composeElementAttributes(element);
46427      xml.enter(FHIR_NS, name);
46428      composeExplanationOfBenefitAdjudicationComponentElements(element);
46429      composeElementClose(element);
46430      xml.exit(FHIR_NS, name);
46431    }
46432  }
46433
46434  protected void composeExplanationOfBenefitAdjudicationComponentElements(ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
46435    composeBackboneElementElements(element);
46436    if (element.hasCategory()) {
46437      composeCodeableConcept("category", element.getCategory());
46438    }
46439    if (element.hasReason()) {
46440      composeCodeableConcept("reason", element.getReason());
46441    }
46442    if (element.hasAmount()) {
46443      composeMoney("amount", element.getAmount());
46444    }
46445    if (element.hasQuantity()) {
46446      composeQuantity("quantity", element.getQuantity());
46447    }
46448  }
46449
46450  protected void composeExplanationOfBenefitDetailComponent(String name, ExplanationOfBenefit.DetailComponent element) throws IOException {
46451    if (element != null) {
46452    composeElementAttributes(element);
46453      xml.enter(FHIR_NS, name);
46454      composeExplanationOfBenefitDetailComponentElements(element);
46455      composeElementClose(element);
46456      xml.exit(FHIR_NS, name);
46457    }
46458  }
46459
46460  protected void composeExplanationOfBenefitDetailComponentElements(ExplanationOfBenefit.DetailComponent element) throws IOException {
46461    composeBackboneElementElements(element);
46462    if (element.hasSequenceElement()) {
46463      composePositiveInt("sequence", element.getSequenceElement());
46464    }
46465    if (element.hasTraceNumber()) { 
46466      for (Identifier e : element.getTraceNumber()) 
46467          composeIdentifier("traceNumber", e);
46468    }
46469    if (element.hasRevenue()) {
46470      composeCodeableConcept("revenue", element.getRevenue());
46471    }
46472    if (element.hasCategory()) {
46473      composeCodeableConcept("category", element.getCategory());
46474    }
46475    if (element.hasProductOrService()) {
46476      composeCodeableConcept("productOrService", element.getProductOrService());
46477    }
46478    if (element.hasProductOrServiceEnd()) {
46479      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
46480    }
46481    if (element.hasModifier()) { 
46482      for (CodeableConcept e : element.getModifier()) 
46483          composeCodeableConcept("modifier", e);
46484    }
46485    if (element.hasProgramCode()) { 
46486      for (CodeableConcept e : element.getProgramCode()) 
46487          composeCodeableConcept("programCode", e);
46488    }
46489    if (element.hasPatientPaid()) {
46490      composeMoney("patientPaid", element.getPatientPaid());
46491    }
46492    if (element.hasQuantity()) {
46493      composeQuantity("quantity", element.getQuantity());
46494    }
46495    if (element.hasUnitPrice()) {
46496      composeMoney("unitPrice", element.getUnitPrice());
46497    }
46498    if (element.hasFactorElement()) {
46499      composeDecimal("factor", element.getFactorElement());
46500    }
46501    if (element.hasTax()) {
46502      composeMoney("tax", element.getTax());
46503    }
46504    if (element.hasNet()) {
46505      composeMoney("net", element.getNet());
46506    }
46507    if (element.hasUdi()) { 
46508      for (Reference e : element.getUdi()) 
46509          composeReference("udi", e);
46510    }
46511    if (element.hasNoteNumber()) { 
46512      for (PositiveIntType e : element.getNoteNumber()) 
46513          composePositiveInt("noteNumber", e);
46514    }
46515    if (element.hasReviewOutcome()) {
46516      composeExplanationOfBenefitItemReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
46517    }
46518    if (element.hasAdjudication()) { 
46519      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
46520          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
46521    }
46522    if (element.hasSubDetail()) { 
46523      for (ExplanationOfBenefit.SubDetailComponent e : element.getSubDetail()) 
46524          composeExplanationOfBenefitSubDetailComponent("subDetail", e);
46525    }
46526  }
46527
46528  protected void composeExplanationOfBenefitSubDetailComponent(String name, ExplanationOfBenefit.SubDetailComponent element) throws IOException {
46529    if (element != null) {
46530    composeElementAttributes(element);
46531      xml.enter(FHIR_NS, name);
46532      composeExplanationOfBenefitSubDetailComponentElements(element);
46533      composeElementClose(element);
46534      xml.exit(FHIR_NS, name);
46535    }
46536  }
46537
46538  protected void composeExplanationOfBenefitSubDetailComponentElements(ExplanationOfBenefit.SubDetailComponent element) throws IOException {
46539    composeBackboneElementElements(element);
46540    if (element.hasSequenceElement()) {
46541      composePositiveInt("sequence", element.getSequenceElement());
46542    }
46543    if (element.hasTraceNumber()) { 
46544      for (Identifier e : element.getTraceNumber()) 
46545          composeIdentifier("traceNumber", e);
46546    }
46547    if (element.hasRevenue()) {
46548      composeCodeableConcept("revenue", element.getRevenue());
46549    }
46550    if (element.hasCategory()) {
46551      composeCodeableConcept("category", element.getCategory());
46552    }
46553    if (element.hasProductOrService()) {
46554      composeCodeableConcept("productOrService", element.getProductOrService());
46555    }
46556    if (element.hasProductOrServiceEnd()) {
46557      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
46558    }
46559    if (element.hasModifier()) { 
46560      for (CodeableConcept e : element.getModifier()) 
46561          composeCodeableConcept("modifier", e);
46562    }
46563    if (element.hasProgramCode()) { 
46564      for (CodeableConcept e : element.getProgramCode()) 
46565          composeCodeableConcept("programCode", e);
46566    }
46567    if (element.hasPatientPaid()) {
46568      composeMoney("patientPaid", element.getPatientPaid());
46569    }
46570    if (element.hasQuantity()) {
46571      composeQuantity("quantity", element.getQuantity());
46572    }
46573    if (element.hasUnitPrice()) {
46574      composeMoney("unitPrice", element.getUnitPrice());
46575    }
46576    if (element.hasFactorElement()) {
46577      composeDecimal("factor", element.getFactorElement());
46578    }
46579    if (element.hasTax()) {
46580      composeMoney("tax", element.getTax());
46581    }
46582    if (element.hasNet()) {
46583      composeMoney("net", element.getNet());
46584    }
46585    if (element.hasUdi()) { 
46586      for (Reference e : element.getUdi()) 
46587          composeReference("udi", e);
46588    }
46589    if (element.hasNoteNumber()) { 
46590      for (PositiveIntType e : element.getNoteNumber()) 
46591          composePositiveInt("noteNumber", e);
46592    }
46593    if (element.hasReviewOutcome()) {
46594      composeExplanationOfBenefitItemReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
46595    }
46596    if (element.hasAdjudication()) { 
46597      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
46598          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
46599    }
46600  }
46601
46602  protected void composeExplanationOfBenefitAddedItemComponent(String name, ExplanationOfBenefit.AddedItemComponent element) throws IOException {
46603    if (element != null) {
46604    composeElementAttributes(element);
46605      xml.enter(FHIR_NS, name);
46606      composeExplanationOfBenefitAddedItemComponentElements(element);
46607      composeElementClose(element);
46608      xml.exit(FHIR_NS, name);
46609    }
46610  }
46611
46612  protected void composeExplanationOfBenefitAddedItemComponentElements(ExplanationOfBenefit.AddedItemComponent element) throws IOException {
46613    composeBackboneElementElements(element);
46614    if (element.hasItemSequence()) { 
46615      for (PositiveIntType e : element.getItemSequence()) 
46616          composePositiveInt("itemSequence", e);
46617    }
46618    if (element.hasDetailSequence()) { 
46619      for (PositiveIntType e : element.getDetailSequence()) 
46620          composePositiveInt("detailSequence", e);
46621    }
46622    if (element.hasSubDetailSequence()) { 
46623      for (PositiveIntType e : element.getSubDetailSequence()) 
46624          composePositiveInt("subDetailSequence", e);
46625    }
46626    if (element.hasTraceNumber()) { 
46627      for (Identifier e : element.getTraceNumber()) 
46628          composeIdentifier("traceNumber", e);
46629    }
46630    if (element.hasProvider()) { 
46631      for (Reference e : element.getProvider()) 
46632          composeReference("provider", e);
46633    }
46634    if (element.hasRevenue()) {
46635      composeCodeableConcept("revenue", element.getRevenue());
46636    }
46637    if (element.hasProductOrService()) {
46638      composeCodeableConcept("productOrService", element.getProductOrService());
46639    }
46640    if (element.hasProductOrServiceEnd()) {
46641      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
46642    }
46643    if (element.hasRequest()) { 
46644      for (Reference e : element.getRequest()) 
46645          composeReference("request", e);
46646    }
46647    if (element.hasModifier()) { 
46648      for (CodeableConcept e : element.getModifier()) 
46649          composeCodeableConcept("modifier", e);
46650    }
46651    if (element.hasProgramCode()) { 
46652      for (CodeableConcept e : element.getProgramCode()) 
46653          composeCodeableConcept("programCode", e);
46654    }
46655    if (element.hasServiced()) {
46656      composeType("serviced", element.getServiced());
46657    }    if (element.hasLocation()) {
46658      composeType("location", element.getLocation());
46659    }    if (element.hasPatientPaid()) {
46660      composeMoney("patientPaid", element.getPatientPaid());
46661    }
46662    if (element.hasQuantity()) {
46663      composeQuantity("quantity", element.getQuantity());
46664    }
46665    if (element.hasUnitPrice()) {
46666      composeMoney("unitPrice", element.getUnitPrice());
46667    }
46668    if (element.hasFactorElement()) {
46669      composeDecimal("factor", element.getFactorElement());
46670    }
46671    if (element.hasTax()) {
46672      composeMoney("tax", element.getTax());
46673    }
46674    if (element.hasNet()) {
46675      composeMoney("net", element.getNet());
46676    }
46677    if (element.hasBodySite()) { 
46678      for (ExplanationOfBenefit.AddedItemBodySiteComponent e : element.getBodySite()) 
46679          composeExplanationOfBenefitAddedItemBodySiteComponent("bodySite", e);
46680    }
46681    if (element.hasNoteNumber()) { 
46682      for (PositiveIntType e : element.getNoteNumber()) 
46683          composePositiveInt("noteNumber", e);
46684    }
46685    if (element.hasReviewOutcome()) {
46686      composeExplanationOfBenefitItemReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
46687    }
46688    if (element.hasAdjudication()) { 
46689      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
46690          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
46691    }
46692    if (element.hasDetail()) { 
46693      for (ExplanationOfBenefit.AddedItemDetailComponent e : element.getDetail()) 
46694          composeExplanationOfBenefitAddedItemDetailComponent("detail", e);
46695    }
46696  }
46697
46698  protected void composeExplanationOfBenefitAddedItemBodySiteComponent(String name, ExplanationOfBenefit.AddedItemBodySiteComponent element) throws IOException {
46699    if (element != null) {
46700    composeElementAttributes(element);
46701      xml.enter(FHIR_NS, name);
46702      composeExplanationOfBenefitAddedItemBodySiteComponentElements(element);
46703      composeElementClose(element);
46704      xml.exit(FHIR_NS, name);
46705    }
46706  }
46707
46708  protected void composeExplanationOfBenefitAddedItemBodySiteComponentElements(ExplanationOfBenefit.AddedItemBodySiteComponent element) throws IOException {
46709    composeBackboneElementElements(element);
46710    if (element.hasSite()) { 
46711      for (CodeableReference e : element.getSite()) 
46712          composeCodeableReference("site", e);
46713    }
46714    if (element.hasSubSite()) { 
46715      for (CodeableConcept e : element.getSubSite()) 
46716          composeCodeableConcept("subSite", e);
46717    }
46718  }
46719
46720  protected void composeExplanationOfBenefitAddedItemDetailComponent(String name, ExplanationOfBenefit.AddedItemDetailComponent element) throws IOException {
46721    if (element != null) {
46722    composeElementAttributes(element);
46723      xml.enter(FHIR_NS, name);
46724      composeExplanationOfBenefitAddedItemDetailComponentElements(element);
46725      composeElementClose(element);
46726      xml.exit(FHIR_NS, name);
46727    }
46728  }
46729
46730  protected void composeExplanationOfBenefitAddedItemDetailComponentElements(ExplanationOfBenefit.AddedItemDetailComponent element) throws IOException {
46731    composeBackboneElementElements(element);
46732    if (element.hasTraceNumber()) { 
46733      for (Identifier e : element.getTraceNumber()) 
46734          composeIdentifier("traceNumber", e);
46735    }
46736    if (element.hasRevenue()) {
46737      composeCodeableConcept("revenue", element.getRevenue());
46738    }
46739    if (element.hasProductOrService()) {
46740      composeCodeableConcept("productOrService", element.getProductOrService());
46741    }
46742    if (element.hasProductOrServiceEnd()) {
46743      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
46744    }
46745    if (element.hasModifier()) { 
46746      for (CodeableConcept e : element.getModifier()) 
46747          composeCodeableConcept("modifier", e);
46748    }
46749    if (element.hasPatientPaid()) {
46750      composeMoney("patientPaid", element.getPatientPaid());
46751    }
46752    if (element.hasQuantity()) {
46753      composeQuantity("quantity", element.getQuantity());
46754    }
46755    if (element.hasUnitPrice()) {
46756      composeMoney("unitPrice", element.getUnitPrice());
46757    }
46758    if (element.hasFactorElement()) {
46759      composeDecimal("factor", element.getFactorElement());
46760    }
46761    if (element.hasTax()) {
46762      composeMoney("tax", element.getTax());
46763    }
46764    if (element.hasNet()) {
46765      composeMoney("net", element.getNet());
46766    }
46767    if (element.hasNoteNumber()) { 
46768      for (PositiveIntType e : element.getNoteNumber()) 
46769          composePositiveInt("noteNumber", e);
46770    }
46771    if (element.hasReviewOutcome()) {
46772      composeExplanationOfBenefitItemReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
46773    }
46774    if (element.hasAdjudication()) { 
46775      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
46776          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
46777    }
46778    if (element.hasSubDetail()) { 
46779      for (ExplanationOfBenefit.AddedItemDetailSubDetailComponent e : element.getSubDetail()) 
46780          composeExplanationOfBenefitAddedItemDetailSubDetailComponent("subDetail", e);
46781    }
46782  }
46783
46784  protected void composeExplanationOfBenefitAddedItemDetailSubDetailComponent(String name, ExplanationOfBenefit.AddedItemDetailSubDetailComponent element) throws IOException {
46785    if (element != null) {
46786    composeElementAttributes(element);
46787      xml.enter(FHIR_NS, name);
46788      composeExplanationOfBenefitAddedItemDetailSubDetailComponentElements(element);
46789      composeElementClose(element);
46790      xml.exit(FHIR_NS, name);
46791    }
46792  }
46793
46794  protected void composeExplanationOfBenefitAddedItemDetailSubDetailComponentElements(ExplanationOfBenefit.AddedItemDetailSubDetailComponent element) throws IOException {
46795    composeBackboneElementElements(element);
46796    if (element.hasTraceNumber()) { 
46797      for (Identifier e : element.getTraceNumber()) 
46798          composeIdentifier("traceNumber", e);
46799    }
46800    if (element.hasRevenue()) {
46801      composeCodeableConcept("revenue", element.getRevenue());
46802    }
46803    if (element.hasProductOrService()) {
46804      composeCodeableConcept("productOrService", element.getProductOrService());
46805    }
46806    if (element.hasProductOrServiceEnd()) {
46807      composeCodeableConcept("productOrServiceEnd", element.getProductOrServiceEnd());
46808    }
46809    if (element.hasModifier()) { 
46810      for (CodeableConcept e : element.getModifier()) 
46811          composeCodeableConcept("modifier", e);
46812    }
46813    if (element.hasPatientPaid()) {
46814      composeMoney("patientPaid", element.getPatientPaid());
46815    }
46816    if (element.hasQuantity()) {
46817      composeQuantity("quantity", element.getQuantity());
46818    }
46819    if (element.hasUnitPrice()) {
46820      composeMoney("unitPrice", element.getUnitPrice());
46821    }
46822    if (element.hasFactorElement()) {
46823      composeDecimal("factor", element.getFactorElement());
46824    }
46825    if (element.hasTax()) {
46826      composeMoney("tax", element.getTax());
46827    }
46828    if (element.hasNet()) {
46829      composeMoney("net", element.getNet());
46830    }
46831    if (element.hasNoteNumber()) { 
46832      for (PositiveIntType e : element.getNoteNumber()) 
46833          composePositiveInt("noteNumber", e);
46834    }
46835    if (element.hasReviewOutcome()) {
46836      composeExplanationOfBenefitItemReviewOutcomeComponent("reviewOutcome", element.getReviewOutcome());
46837    }
46838    if (element.hasAdjudication()) { 
46839      for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
46840          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
46841    }
46842  }
46843
46844  protected void composeExplanationOfBenefitTotalComponent(String name, ExplanationOfBenefit.TotalComponent element) throws IOException {
46845    if (element != null) {
46846    composeElementAttributes(element);
46847      xml.enter(FHIR_NS, name);
46848      composeExplanationOfBenefitTotalComponentElements(element);
46849      composeElementClose(element);
46850      xml.exit(FHIR_NS, name);
46851    }
46852  }
46853
46854  protected void composeExplanationOfBenefitTotalComponentElements(ExplanationOfBenefit.TotalComponent element) throws IOException {
46855    composeBackboneElementElements(element);
46856    if (element.hasCategory()) {
46857      composeCodeableConcept("category", element.getCategory());
46858    }
46859    if (element.hasAmount()) {
46860      composeMoney("amount", element.getAmount());
46861    }
46862  }
46863
46864  protected void composeExplanationOfBenefitPaymentComponent(String name, ExplanationOfBenefit.PaymentComponent element) throws IOException {
46865    if (element != null) {
46866    composeElementAttributes(element);
46867      xml.enter(FHIR_NS, name);
46868      composeExplanationOfBenefitPaymentComponentElements(element);
46869      composeElementClose(element);
46870      xml.exit(FHIR_NS, name);
46871    }
46872  }
46873
46874  protected void composeExplanationOfBenefitPaymentComponentElements(ExplanationOfBenefit.PaymentComponent element) throws IOException {
46875    composeBackboneElementElements(element);
46876    if (element.hasType()) {
46877      composeCodeableConcept("type", element.getType());
46878    }
46879    if (element.hasAdjustment()) {
46880      composeMoney("adjustment", element.getAdjustment());
46881    }
46882    if (element.hasAdjustmentReason()) {
46883      composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
46884    }
46885    if (element.hasDateElement()) {
46886      composeDate("date", element.getDateElement());
46887    }
46888    if (element.hasAmount()) {
46889      composeMoney("amount", element.getAmount());
46890    }
46891    if (element.hasIdentifier()) {
46892      composeIdentifier("identifier", element.getIdentifier());
46893    }
46894  }
46895
46896  protected void composeExplanationOfBenefitNoteComponent(String name, ExplanationOfBenefit.NoteComponent element) throws IOException {
46897    if (element != null) {
46898    composeElementAttributes(element);
46899      xml.enter(FHIR_NS, name);
46900      composeExplanationOfBenefitNoteComponentElements(element);
46901      composeElementClose(element);
46902      xml.exit(FHIR_NS, name);
46903    }
46904  }
46905
46906  protected void composeExplanationOfBenefitNoteComponentElements(ExplanationOfBenefit.NoteComponent element) throws IOException {
46907    composeBackboneElementElements(element);
46908    if (element.hasNumberElement()) {
46909      composePositiveInt("number", element.getNumberElement());
46910    }
46911    if (element.hasType()) {
46912      composeCodeableConcept("type", element.getType());
46913    }
46914    if (element.hasTextElement()) {
46915      composeString("text", element.getTextElement());
46916    }
46917    if (element.hasLanguage()) {
46918      composeCodeableConcept("language", element.getLanguage());
46919    }
46920  }
46921
46922  protected void composeExplanationOfBenefitBenefitBalanceComponent(String name, ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
46923    if (element != null) {
46924    composeElementAttributes(element);
46925      xml.enter(FHIR_NS, name);
46926      composeExplanationOfBenefitBenefitBalanceComponentElements(element);
46927      composeElementClose(element);
46928      xml.exit(FHIR_NS, name);
46929    }
46930  }
46931
46932  protected void composeExplanationOfBenefitBenefitBalanceComponentElements(ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
46933    composeBackboneElementElements(element);
46934    if (element.hasCategory()) {
46935      composeCodeableConcept("category", element.getCategory());
46936    }
46937    if (element.hasExcludedElement()) {
46938      composeBoolean("excluded", element.getExcludedElement());
46939    }
46940    if (element.hasNameElement()) {
46941      composeString("name", element.getNameElement());
46942    }
46943    if (element.hasDescriptionElement()) {
46944      composeString("description", element.getDescriptionElement());
46945    }
46946    if (element.hasNetwork()) {
46947      composeCodeableConcept("network", element.getNetwork());
46948    }
46949    if (element.hasUnit()) {
46950      composeCodeableConcept("unit", element.getUnit());
46951    }
46952    if (element.hasTerm()) {
46953      composeCodeableConcept("term", element.getTerm());
46954    }
46955    if (element.hasFinancial()) { 
46956      for (ExplanationOfBenefit.BenefitComponent e : element.getFinancial()) 
46957          composeExplanationOfBenefitBenefitComponent("financial", e);
46958    }
46959  }
46960
46961  protected void composeExplanationOfBenefitBenefitComponent(String name, ExplanationOfBenefit.BenefitComponent element) throws IOException {
46962    if (element != null) {
46963    composeElementAttributes(element);
46964      xml.enter(FHIR_NS, name);
46965      composeExplanationOfBenefitBenefitComponentElements(element);
46966      composeElementClose(element);
46967      xml.exit(FHIR_NS, name);
46968    }
46969  }
46970
46971  protected void composeExplanationOfBenefitBenefitComponentElements(ExplanationOfBenefit.BenefitComponent element) throws IOException {
46972    composeBackboneElementElements(element);
46973    if (element.hasType()) {
46974      composeCodeableConcept("type", element.getType());
46975    }
46976    if (element.hasAllowed()) {
46977      composeType("allowed", element.getAllowed());
46978    }    if (element.hasUsed()) {
46979      composeType("used", element.getUsed());
46980    }  }
46981
46982  protected void composeFamilyMemberHistory(String name, FamilyMemberHistory element) throws IOException {
46983    if (element != null) {
46984    composeResourceAttributes(element);
46985      xml.enter(FHIR_NS, name);
46986      composeFamilyMemberHistoryElements(element);
46987      composeElementClose(element);
46988      xml.exit(FHIR_NS, name);
46989    }
46990  }
46991
46992  protected void composeFamilyMemberHistoryElements(FamilyMemberHistory element) throws IOException {
46993    composeDomainResourceElements(element);
46994    if (element.hasIdentifier()) { 
46995      for (Identifier e : element.getIdentifier()) 
46996          composeIdentifier("identifier", e);
46997    }
46998    if (element.hasInstantiatesCanonical()) { 
46999      for (CanonicalType e : element.getInstantiatesCanonical()) 
47000          composeCanonical("instantiatesCanonical", e);
47001    }
47002    if (element.hasInstantiatesUri()) { 
47003      for (UriType e : element.getInstantiatesUri()) 
47004          composeUri("instantiatesUri", e);
47005    }
47006    if (element.hasStatusElement())
47007      composeEnumeration("status", element.getStatusElement(), new FamilyMemberHistory.FamilyHistoryStatusEnumFactory());
47008    if (element.hasDataAbsentReason()) {
47009      composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
47010    }
47011    if (element.hasPatient()) {
47012      composeReference("patient", element.getPatient());
47013    }
47014    if (element.hasDateElement()) {
47015      composeDateTime("date", element.getDateElement());
47016    }
47017    if (element.hasParticipant()) { 
47018      for (FamilyMemberHistory.FamilyMemberHistoryParticipantComponent e : element.getParticipant()) 
47019          composeFamilyMemberHistoryParticipantComponent("participant", e);
47020    }
47021    if (element.hasNameElement()) {
47022      composeString("name", element.getNameElement());
47023    }
47024    if (element.hasRelationship()) {
47025      composeCodeableConcept("relationship", element.getRelationship());
47026    }
47027    if (element.hasSex()) {
47028      composeCodeableConcept("sex", element.getSex());
47029    }
47030    if (element.hasBorn()) {
47031      composeType("born", element.getBorn());
47032    }    if (element.hasAge()) {
47033      composeType("age", element.getAge());
47034    }    if (element.hasEstimatedAgeElement()) {
47035      composeBoolean("estimatedAge", element.getEstimatedAgeElement());
47036    }
47037    if (element.hasDeceased()) {
47038      composeType("deceased", element.getDeceased());
47039    }    if (element.hasReason()) { 
47040      for (CodeableReference e : element.getReason()) 
47041          composeCodeableReference("reason", e);
47042    }
47043    if (element.hasNote()) { 
47044      for (Annotation e : element.getNote()) 
47045          composeAnnotation("note", e);
47046    }
47047    if (element.hasCondition()) { 
47048      for (FamilyMemberHistory.FamilyMemberHistoryConditionComponent e : element.getCondition()) 
47049          composeFamilyMemberHistoryConditionComponent("condition", e);
47050    }
47051    if (element.hasProcedure()) { 
47052      for (FamilyMemberHistory.FamilyMemberHistoryProcedureComponent e : element.getProcedure()) 
47053          composeFamilyMemberHistoryProcedureComponent("procedure", e);
47054    }
47055  }
47056
47057  protected void composeFamilyMemberHistoryParticipantComponent(String name, FamilyMemberHistory.FamilyMemberHistoryParticipantComponent element) throws IOException {
47058    if (element != null) {
47059    composeElementAttributes(element);
47060      xml.enter(FHIR_NS, name);
47061      composeFamilyMemberHistoryParticipantComponentElements(element);
47062      composeElementClose(element);
47063      xml.exit(FHIR_NS, name);
47064    }
47065  }
47066
47067  protected void composeFamilyMemberHistoryParticipantComponentElements(FamilyMemberHistory.FamilyMemberHistoryParticipantComponent element) throws IOException {
47068    composeBackboneElementElements(element);
47069    if (element.hasFunction()) {
47070      composeCodeableConcept("function", element.getFunction());
47071    }
47072    if (element.hasActor()) {
47073      composeReference("actor", element.getActor());
47074    }
47075  }
47076
47077  protected void composeFamilyMemberHistoryConditionComponent(String name, FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
47078    if (element != null) {
47079    composeElementAttributes(element);
47080      xml.enter(FHIR_NS, name);
47081      composeFamilyMemberHistoryConditionComponentElements(element);
47082      composeElementClose(element);
47083      xml.exit(FHIR_NS, name);
47084    }
47085  }
47086
47087  protected void composeFamilyMemberHistoryConditionComponentElements(FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
47088    composeBackboneElementElements(element);
47089    if (element.hasCode()) {
47090      composeCodeableConcept("code", element.getCode());
47091    }
47092    if (element.hasOutcome()) {
47093      composeCodeableConcept("outcome", element.getOutcome());
47094    }
47095    if (element.hasContributedToDeathElement()) {
47096      composeBoolean("contributedToDeath", element.getContributedToDeathElement());
47097    }
47098    if (element.hasOnset()) {
47099      composeType("onset", element.getOnset());
47100    }    if (element.hasNote()) { 
47101      for (Annotation e : element.getNote()) 
47102          composeAnnotation("note", e);
47103    }
47104  }
47105
47106  protected void composeFamilyMemberHistoryProcedureComponent(String name, FamilyMemberHistory.FamilyMemberHistoryProcedureComponent element) throws IOException {
47107    if (element != null) {
47108    composeElementAttributes(element);
47109      xml.enter(FHIR_NS, name);
47110      composeFamilyMemberHistoryProcedureComponentElements(element);
47111      composeElementClose(element);
47112      xml.exit(FHIR_NS, name);
47113    }
47114  }
47115
47116  protected void composeFamilyMemberHistoryProcedureComponentElements(FamilyMemberHistory.FamilyMemberHistoryProcedureComponent element) throws IOException {
47117    composeBackboneElementElements(element);
47118    if (element.hasCode()) {
47119      composeCodeableConcept("code", element.getCode());
47120    }
47121    if (element.hasOutcome()) {
47122      composeCodeableConcept("outcome", element.getOutcome());
47123    }
47124    if (element.hasContributedToDeathElement()) {
47125      composeBoolean("contributedToDeath", element.getContributedToDeathElement());
47126    }
47127    if (element.hasPerformed()) {
47128      composeType("performed", element.getPerformed());
47129    }    if (element.hasNote()) { 
47130      for (Annotation e : element.getNote()) 
47131          composeAnnotation("note", e);
47132    }
47133  }
47134
47135  protected void composeFlag(String name, Flag element) throws IOException {
47136    if (element != null) {
47137    composeResourceAttributes(element);
47138      xml.enter(FHIR_NS, name);
47139      composeFlagElements(element);
47140      composeElementClose(element);
47141      xml.exit(FHIR_NS, name);
47142    }
47143  }
47144
47145  protected void composeFlagElements(Flag element) throws IOException {
47146    composeDomainResourceElements(element);
47147    if (element.hasIdentifier()) { 
47148      for (Identifier e : element.getIdentifier()) 
47149          composeIdentifier("identifier", e);
47150    }
47151    if (element.hasStatusElement())
47152      composeEnumeration("status", element.getStatusElement(), new Flag.FlagStatusEnumFactory());
47153    if (element.hasCategory()) { 
47154      for (CodeableConcept e : element.getCategory()) 
47155          composeCodeableConcept("category", e);
47156    }
47157    if (element.hasCode()) {
47158      composeCodeableConcept("code", element.getCode());
47159    }
47160    if (element.hasSubject()) {
47161      composeReference("subject", element.getSubject());
47162    }
47163    if (element.hasPeriod()) {
47164      composePeriod("period", element.getPeriod());
47165    }
47166    if (element.hasEncounter()) {
47167      composeReference("encounter", element.getEncounter());
47168    }
47169    if (element.hasAuthor()) {
47170      composeReference("author", element.getAuthor());
47171    }
47172  }
47173
47174  protected void composeFormularyItem(String name, FormularyItem element) throws IOException {
47175    if (element != null) {
47176    composeResourceAttributes(element);
47177      xml.enter(FHIR_NS, name);
47178      composeFormularyItemElements(element);
47179      composeElementClose(element);
47180      xml.exit(FHIR_NS, name);
47181    }
47182  }
47183
47184  protected void composeFormularyItemElements(FormularyItem element) throws IOException {
47185    composeDomainResourceElements(element);
47186    if (element.hasIdentifier()) { 
47187      for (Identifier e : element.getIdentifier()) 
47188          composeIdentifier("identifier", e);
47189    }
47190    if (element.hasCode()) {
47191      composeCodeableConcept("code", element.getCode());
47192    }
47193    if (element.hasStatusElement())
47194      composeEnumeration("status", element.getStatusElement(), new FormularyItem.FormularyItemStatusCodesEnumFactory());
47195  }
47196
47197  protected void composeGenomicStudy(String name, GenomicStudy element) throws IOException {
47198    if (element != null) {
47199    composeResourceAttributes(element);
47200      xml.enter(FHIR_NS, name);
47201      composeGenomicStudyElements(element);
47202      composeElementClose(element);
47203      xml.exit(FHIR_NS, name);
47204    }
47205  }
47206
47207  protected void composeGenomicStudyElements(GenomicStudy element) throws IOException {
47208    composeDomainResourceElements(element);
47209    if (element.hasIdentifier()) { 
47210      for (Identifier e : element.getIdentifier()) 
47211          composeIdentifier("identifier", e);
47212    }
47213    if (element.hasStatusElement())
47214      composeEnumeration("status", element.getStatusElement(), new GenomicStudy.GenomicStudyStatusEnumFactory());
47215    if (element.hasType()) { 
47216      for (CodeableConcept e : element.getType()) 
47217          composeCodeableConcept("type", e);
47218    }
47219    if (element.hasSubject()) {
47220      composeReference("subject", element.getSubject());
47221    }
47222    if (element.hasEncounter()) {
47223      composeReference("encounter", element.getEncounter());
47224    }
47225    if (element.hasStartDateElement()) {
47226      composeDateTime("startDate", element.getStartDateElement());
47227    }
47228    if (element.hasBasedOn()) { 
47229      for (Reference e : element.getBasedOn()) 
47230          composeReference("basedOn", e);
47231    }
47232    if (element.hasReferrer()) {
47233      composeReference("referrer", element.getReferrer());
47234    }
47235    if (element.hasInterpreter()) { 
47236      for (Reference e : element.getInterpreter()) 
47237          composeReference("interpreter", e);
47238    }
47239    if (element.hasReason()) { 
47240      for (CodeableReference e : element.getReason()) 
47241          composeCodeableReference("reason", e);
47242    }
47243    if (element.hasInstantiatesCanonicalElement()) {
47244      composeCanonical("instantiatesCanonical", element.getInstantiatesCanonicalElement());
47245    }
47246    if (element.hasInstantiatesUriElement()) {
47247      composeUri("instantiatesUri", element.getInstantiatesUriElement());
47248    }
47249    if (element.hasNote()) { 
47250      for (Annotation e : element.getNote()) 
47251          composeAnnotation("note", e);
47252    }
47253    if (element.hasDescriptionElement()) {
47254      composeMarkdown("description", element.getDescriptionElement());
47255    }
47256    if (element.hasAnalysis()) { 
47257      for (GenomicStudy.GenomicStudyAnalysisComponent e : element.getAnalysis()) 
47258          composeGenomicStudyAnalysisComponent("analysis", e);
47259    }
47260  }
47261
47262  protected void composeGenomicStudyAnalysisComponent(String name, GenomicStudy.GenomicStudyAnalysisComponent element) throws IOException {
47263    if (element != null) {
47264    composeElementAttributes(element);
47265      xml.enter(FHIR_NS, name);
47266      composeGenomicStudyAnalysisComponentElements(element);
47267      composeElementClose(element);
47268      xml.exit(FHIR_NS, name);
47269    }
47270  }
47271
47272  protected void composeGenomicStudyAnalysisComponentElements(GenomicStudy.GenomicStudyAnalysisComponent element) throws IOException {
47273    composeBackboneElementElements(element);
47274    if (element.hasIdentifier()) { 
47275      for (Identifier e : element.getIdentifier()) 
47276          composeIdentifier("identifier", e);
47277    }
47278    if (element.hasMethodType()) { 
47279      for (CodeableConcept e : element.getMethodType()) 
47280          composeCodeableConcept("methodType", e);
47281    }
47282    if (element.hasChangeType()) { 
47283      for (CodeableConcept e : element.getChangeType()) 
47284          composeCodeableConcept("changeType", e);
47285    }
47286    if (element.hasGenomeBuild()) {
47287      composeCodeableConcept("genomeBuild", element.getGenomeBuild());
47288    }
47289    if (element.hasInstantiatesCanonicalElement()) {
47290      composeCanonical("instantiatesCanonical", element.getInstantiatesCanonicalElement());
47291    }
47292    if (element.hasInstantiatesUriElement()) {
47293      composeUri("instantiatesUri", element.getInstantiatesUriElement());
47294    }
47295    if (element.hasTitleElement()) {
47296      composeString("title", element.getTitleElement());
47297    }
47298    if (element.hasFocus()) { 
47299      for (Reference e : element.getFocus()) 
47300          composeReference("focus", e);
47301    }
47302    if (element.hasSpecimen()) { 
47303      for (Reference e : element.getSpecimen()) 
47304          composeReference("specimen", e);
47305    }
47306    if (element.hasDateElement()) {
47307      composeDateTime("date", element.getDateElement());
47308    }
47309    if (element.hasNote()) { 
47310      for (Annotation e : element.getNote()) 
47311          composeAnnotation("note", e);
47312    }
47313    if (element.hasProtocolPerformed()) {
47314      composeReference("protocolPerformed", element.getProtocolPerformed());
47315    }
47316    if (element.hasRegionsStudied()) { 
47317      for (Reference e : element.getRegionsStudied()) 
47318          composeReference("regionsStudied", e);
47319    }
47320    if (element.hasRegionsCalled()) { 
47321      for (Reference e : element.getRegionsCalled()) 
47322          composeReference("regionsCalled", e);
47323    }
47324    if (element.hasInput()) { 
47325      for (GenomicStudy.GenomicStudyAnalysisInputComponent e : element.getInput()) 
47326          composeGenomicStudyAnalysisInputComponent("input", e);
47327    }
47328    if (element.hasOutput()) { 
47329      for (GenomicStudy.GenomicStudyAnalysisOutputComponent e : element.getOutput()) 
47330          composeGenomicStudyAnalysisOutputComponent("output", e);
47331    }
47332    if (element.hasPerformer()) { 
47333      for (GenomicStudy.GenomicStudyAnalysisPerformerComponent e : element.getPerformer()) 
47334          composeGenomicStudyAnalysisPerformerComponent("performer", e);
47335    }
47336    if (element.hasDevice()) { 
47337      for (GenomicStudy.GenomicStudyAnalysisDeviceComponent e : element.getDevice()) 
47338          composeGenomicStudyAnalysisDeviceComponent("device", e);
47339    }
47340  }
47341
47342  protected void composeGenomicStudyAnalysisInputComponent(String name, GenomicStudy.GenomicStudyAnalysisInputComponent element) throws IOException {
47343    if (element != null) {
47344    composeElementAttributes(element);
47345      xml.enter(FHIR_NS, name);
47346      composeGenomicStudyAnalysisInputComponentElements(element);
47347      composeElementClose(element);
47348      xml.exit(FHIR_NS, name);
47349    }
47350  }
47351
47352  protected void composeGenomicStudyAnalysisInputComponentElements(GenomicStudy.GenomicStudyAnalysisInputComponent element) throws IOException {
47353    composeBackboneElementElements(element);
47354    if (element.hasFile()) {
47355      composeReference("file", element.getFile());
47356    }
47357    if (element.hasType()) {
47358      composeCodeableConcept("type", element.getType());
47359    }
47360    if (element.hasGeneratedBy()) {
47361      composeType("generatedBy", element.getGeneratedBy());
47362    }  }
47363
47364  protected void composeGenomicStudyAnalysisOutputComponent(String name, GenomicStudy.GenomicStudyAnalysisOutputComponent element) throws IOException {
47365    if (element != null) {
47366    composeElementAttributes(element);
47367      xml.enter(FHIR_NS, name);
47368      composeGenomicStudyAnalysisOutputComponentElements(element);
47369      composeElementClose(element);
47370      xml.exit(FHIR_NS, name);
47371    }
47372  }
47373
47374  protected void composeGenomicStudyAnalysisOutputComponentElements(GenomicStudy.GenomicStudyAnalysisOutputComponent element) throws IOException {
47375    composeBackboneElementElements(element);
47376    if (element.hasFile()) {
47377      composeReference("file", element.getFile());
47378    }
47379    if (element.hasType()) {
47380      composeCodeableConcept("type", element.getType());
47381    }
47382  }
47383
47384  protected void composeGenomicStudyAnalysisPerformerComponent(String name, GenomicStudy.GenomicStudyAnalysisPerformerComponent element) throws IOException {
47385    if (element != null) {
47386    composeElementAttributes(element);
47387      xml.enter(FHIR_NS, name);
47388      composeGenomicStudyAnalysisPerformerComponentElements(element);
47389      composeElementClose(element);
47390      xml.exit(FHIR_NS, name);
47391    }
47392  }
47393
47394  protected void composeGenomicStudyAnalysisPerformerComponentElements(GenomicStudy.GenomicStudyAnalysisPerformerComponent element) throws IOException {
47395    composeBackboneElementElements(element);
47396    if (element.hasActor()) {
47397      composeReference("actor", element.getActor());
47398    }
47399    if (element.hasRole()) {
47400      composeCodeableConcept("role", element.getRole());
47401    }
47402  }
47403
47404  protected void composeGenomicStudyAnalysisDeviceComponent(String name, GenomicStudy.GenomicStudyAnalysisDeviceComponent element) throws IOException {
47405    if (element != null) {
47406    composeElementAttributes(element);
47407      xml.enter(FHIR_NS, name);
47408      composeGenomicStudyAnalysisDeviceComponentElements(element);
47409      composeElementClose(element);
47410      xml.exit(FHIR_NS, name);
47411    }
47412  }
47413
47414  protected void composeGenomicStudyAnalysisDeviceComponentElements(GenomicStudy.GenomicStudyAnalysisDeviceComponent element) throws IOException {
47415    composeBackboneElementElements(element);
47416    if (element.hasDevice()) {
47417      composeReference("device", element.getDevice());
47418    }
47419    if (element.hasFunction()) {
47420      composeCodeableConcept("function", element.getFunction());
47421    }
47422  }
47423
47424  protected void composeGoal(String name, Goal element) throws IOException {
47425    if (element != null) {
47426    composeResourceAttributes(element);
47427      xml.enter(FHIR_NS, name);
47428      composeGoalElements(element);
47429      composeElementClose(element);
47430      xml.exit(FHIR_NS, name);
47431    }
47432  }
47433
47434  protected void composeGoalElements(Goal element) throws IOException {
47435    composeDomainResourceElements(element);
47436    if (element.hasIdentifier()) { 
47437      for (Identifier e : element.getIdentifier()) 
47438          composeIdentifier("identifier", e);
47439    }
47440    if (element.hasLifecycleStatusElement())
47441      composeEnumeration("lifecycleStatus", element.getLifecycleStatusElement(), new Goal.GoalLifecycleStatusEnumFactory());
47442    if (element.hasAchievementStatus()) {
47443      composeCodeableConcept("achievementStatus", element.getAchievementStatus());
47444    }
47445    if (element.hasCategory()) { 
47446      for (CodeableConcept e : element.getCategory()) 
47447          composeCodeableConcept("category", e);
47448    }
47449    if (element.hasContinuousElement()) {
47450      composeBoolean("continuous", element.getContinuousElement());
47451    }
47452    if (element.hasPriority()) {
47453      composeCodeableConcept("priority", element.getPriority());
47454    }
47455    if (element.hasDescription()) {
47456      composeCodeableConcept("description", element.getDescription());
47457    }
47458    if (element.hasSubject()) {
47459      composeReference("subject", element.getSubject());
47460    }
47461    if (element.hasStart()) {
47462      composeType("start", element.getStart());
47463    }    if (element.hasTarget()) { 
47464      for (Goal.GoalTargetComponent e : element.getTarget()) 
47465          composeGoalTargetComponent("target", e);
47466    }
47467    if (element.hasStatusDateElement()) {
47468      composeDate("statusDate", element.getStatusDateElement());
47469    }
47470    if (element.hasStatusReasonElement()) {
47471      composeString("statusReason", element.getStatusReasonElement());
47472    }
47473    if (element.hasSource()) {
47474      composeReference("source", element.getSource());
47475    }
47476    if (element.hasAddresses()) { 
47477      for (Reference e : element.getAddresses()) 
47478          composeReference("addresses", e);
47479    }
47480    if (element.hasNote()) { 
47481      for (Annotation e : element.getNote()) 
47482          composeAnnotation("note", e);
47483    }
47484    if (element.hasOutcome()) { 
47485      for (CodeableReference e : element.getOutcome()) 
47486          composeCodeableReference("outcome", e);
47487    }
47488  }
47489
47490  protected void composeGoalTargetComponent(String name, Goal.GoalTargetComponent element) throws IOException {
47491    if (element != null) {
47492    composeElementAttributes(element);
47493      xml.enter(FHIR_NS, name);
47494      composeGoalTargetComponentElements(element);
47495      composeElementClose(element);
47496      xml.exit(FHIR_NS, name);
47497    }
47498  }
47499
47500  protected void composeGoalTargetComponentElements(Goal.GoalTargetComponent element) throws IOException {
47501    composeBackboneElementElements(element);
47502    if (element.hasMeasure()) {
47503      composeCodeableConcept("measure", element.getMeasure());
47504    }
47505    if (element.hasDetail()) {
47506      composeType("detail", element.getDetail());
47507    }    if (element.hasDue()) {
47508      composeType("due", element.getDue());
47509    }  }
47510
47511  protected void composeGraphDefinition(String name, GraphDefinition element) throws IOException {
47512    if (element != null) {
47513    composeResourceAttributes(element);
47514      xml.enter(FHIR_NS, name);
47515      composeGraphDefinitionElements(element);
47516      composeElementClose(element);
47517      xml.exit(FHIR_NS, name);
47518    }
47519  }
47520
47521  protected void composeGraphDefinitionElements(GraphDefinition element) throws IOException {
47522    composeCanonicalResourceElements(element);
47523    if (element.hasUrlElement()) {
47524      composeUri("url", element.getUrlElement());
47525    }
47526    if (element.hasIdentifier()) { 
47527      for (Identifier e : element.getIdentifier()) 
47528          composeIdentifier("identifier", e);
47529    }
47530    if (element.hasVersionElement()) {
47531      composeString("version", element.getVersionElement());
47532    }
47533    if (element.hasVersionAlgorithm()) {
47534      composeType("versionAlgorithm", element.getVersionAlgorithm());
47535    }    if (element.hasNameElement()) {
47536      composeString("name", element.getNameElement());
47537    }
47538    if (element.hasTitleElement()) {
47539      composeString("title", element.getTitleElement());
47540    }
47541    if (element.hasStatusElement())
47542      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
47543    if (element.hasExperimentalElement()) {
47544      composeBoolean("experimental", element.getExperimentalElement());
47545    }
47546    if (element.hasDateElement()) {
47547      composeDateTime("date", element.getDateElement());
47548    }
47549    if (element.hasPublisherElement()) {
47550      composeString("publisher", element.getPublisherElement());
47551    }
47552    if (element.hasContact()) { 
47553      for (ContactDetail e : element.getContact()) 
47554          composeContactDetail("contact", e);
47555    }
47556    if (element.hasDescriptionElement()) {
47557      composeMarkdown("description", element.getDescriptionElement());
47558    }
47559    if (element.hasUseContext()) { 
47560      for (UsageContext e : element.getUseContext()) 
47561          composeUsageContext("useContext", e);
47562    }
47563    if (element.hasJurisdiction()) { 
47564      for (CodeableConcept e : element.getJurisdiction()) 
47565          composeCodeableConcept("jurisdiction", e);
47566    }
47567    if (element.hasPurposeElement()) {
47568      composeMarkdown("purpose", element.getPurposeElement());
47569    }
47570    if (element.hasCopyrightElement()) {
47571      composeMarkdown("copyright", element.getCopyrightElement());
47572    }
47573    if (element.hasCopyrightLabelElement()) {
47574      composeString("copyrightLabel", element.getCopyrightLabelElement());
47575    }
47576    if (element.hasStartElement()) {
47577      composeId("start", element.getStartElement());
47578    }
47579    if (element.hasNode()) { 
47580      for (GraphDefinition.GraphDefinitionNodeComponent e : element.getNode()) 
47581          composeGraphDefinitionNodeComponent("node", e);
47582    }
47583    if (element.hasLink()) { 
47584      for (GraphDefinition.GraphDefinitionLinkComponent e : element.getLink()) 
47585          composeGraphDefinitionLinkComponent("link", e);
47586    }
47587  }
47588
47589  protected void composeGraphDefinitionNodeComponent(String name, GraphDefinition.GraphDefinitionNodeComponent element) throws IOException {
47590    if (element != null) {
47591    composeElementAttributes(element);
47592      xml.enter(FHIR_NS, name);
47593      composeGraphDefinitionNodeComponentElements(element);
47594      composeElementClose(element);
47595      xml.exit(FHIR_NS, name);
47596    }
47597  }
47598
47599  protected void composeGraphDefinitionNodeComponentElements(GraphDefinition.GraphDefinitionNodeComponent element) throws IOException {
47600    composeBackboneElementElements(element);
47601    if (element.hasNodeIdElement()) {
47602      composeId("nodeId", element.getNodeIdElement());
47603    }
47604    if (element.hasDescriptionElement()) {
47605      composeString("description", element.getDescriptionElement());
47606    }
47607    if (element.hasTypeElement())
47608      composeEnumeration("type", element.getTypeElement(), new Enumerations.VersionIndependentResourceTypesAllEnumFactory());
47609    if (element.hasProfileElement()) {
47610      composeCanonical("profile", element.getProfileElement());
47611    }
47612  }
47613
47614  protected void composeGraphDefinitionLinkComponent(String name, GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
47615    if (element != null) {
47616    composeElementAttributes(element);
47617      xml.enter(FHIR_NS, name);
47618      composeGraphDefinitionLinkComponentElements(element);
47619      composeElementClose(element);
47620      xml.exit(FHIR_NS, name);
47621    }
47622  }
47623
47624  protected void composeGraphDefinitionLinkComponentElements(GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
47625    composeBackboneElementElements(element);
47626    if (element.hasDescriptionElement()) {
47627      composeString("description", element.getDescriptionElement());
47628    }
47629    if (element.hasMinElement()) {
47630      composeInteger("min", element.getMinElement());
47631    }
47632    if (element.hasMaxElement()) {
47633      composeString("max", element.getMaxElement());
47634    }
47635    if (element.hasSourceIdElement()) {
47636      composeId("sourceId", element.getSourceIdElement());
47637    }
47638    if (element.hasPathElement()) {
47639      composeString("path", element.getPathElement());
47640    }
47641    if (element.hasSliceNameElement()) {
47642      composeString("sliceName", element.getSliceNameElement());
47643    }
47644    if (element.hasTargetIdElement()) {
47645      composeId("targetId", element.getTargetIdElement());
47646    }
47647    if (element.hasParamsElement()) {
47648      composeString("params", element.getParamsElement());
47649    }
47650    if (element.hasCompartment()) { 
47651      for (GraphDefinition.GraphDefinitionLinkCompartmentComponent e : element.getCompartment()) 
47652          composeGraphDefinitionLinkCompartmentComponent("compartment", e);
47653    }
47654  }
47655
47656  protected void composeGraphDefinitionLinkCompartmentComponent(String name, GraphDefinition.GraphDefinitionLinkCompartmentComponent element) throws IOException {
47657    if (element != null) {
47658    composeElementAttributes(element);
47659      xml.enter(FHIR_NS, name);
47660      composeGraphDefinitionLinkCompartmentComponentElements(element);
47661      composeElementClose(element);
47662      xml.exit(FHIR_NS, name);
47663    }
47664  }
47665
47666  protected void composeGraphDefinitionLinkCompartmentComponentElements(GraphDefinition.GraphDefinitionLinkCompartmentComponent element) throws IOException {
47667    composeBackboneElementElements(element);
47668    if (element.hasUseElement())
47669      composeEnumeration("use", element.getUseElement(), new GraphDefinition.GraphCompartmentUseEnumFactory());
47670    if (element.hasRuleElement())
47671      composeEnumeration("rule", element.getRuleElement(), new GraphDefinition.GraphCompartmentRuleEnumFactory());
47672    if (element.hasCodeElement())
47673      composeEnumeration("code", element.getCodeElement(), new Enumerations.CompartmentTypeEnumFactory());
47674    if (element.hasExpressionElement()) {
47675      composeString("expression", element.getExpressionElement());
47676    }
47677    if (element.hasDescriptionElement()) {
47678      composeString("description", element.getDescriptionElement());
47679    }
47680  }
47681
47682  protected void composeGroup(String name, Group element) throws IOException {
47683    if (element != null) {
47684    composeResourceAttributes(element);
47685      xml.enter(FHIR_NS, name);
47686      composeGroupElements(element);
47687      composeElementClose(element);
47688      xml.exit(FHIR_NS, name);
47689    }
47690  }
47691
47692  protected void composeGroupElements(Group element) throws IOException {
47693    composeDomainResourceElements(element);
47694    if (element.hasIdentifier()) { 
47695      for (Identifier e : element.getIdentifier()) 
47696          composeIdentifier("identifier", e);
47697    }
47698    if (element.hasActiveElement()) {
47699      composeBoolean("active", element.getActiveElement());
47700    }
47701    if (element.hasTypeElement())
47702      composeEnumeration("type", element.getTypeElement(), new Group.GroupTypeEnumFactory());
47703    if (element.hasMembershipElement())
47704      composeEnumeration("membership", element.getMembershipElement(), new Group.GroupMembershipBasisEnumFactory());
47705    if (element.hasCode()) {
47706      composeCodeableConcept("code", element.getCode());
47707    }
47708    if (element.hasNameElement()) {
47709      composeString("name", element.getNameElement());
47710    }
47711    if (element.hasDescriptionElement()) {
47712      composeMarkdown("description", element.getDescriptionElement());
47713    }
47714    if (element.hasQuantityElement()) {
47715      composeUnsignedInt("quantity", element.getQuantityElement());
47716    }
47717    if (element.hasManagingEntity()) {
47718      composeReference("managingEntity", element.getManagingEntity());
47719    }
47720    if (element.hasCharacteristic()) { 
47721      for (Group.GroupCharacteristicComponent e : element.getCharacteristic()) 
47722          composeGroupCharacteristicComponent("characteristic", e);
47723    }
47724    if (element.hasMember()) { 
47725      for (Group.GroupMemberComponent e : element.getMember()) 
47726          composeGroupMemberComponent("member", e);
47727    }
47728  }
47729
47730  protected void composeGroupCharacteristicComponent(String name, Group.GroupCharacteristicComponent element) throws IOException {
47731    if (element != null) {
47732    composeElementAttributes(element);
47733      xml.enter(FHIR_NS, name);
47734      composeGroupCharacteristicComponentElements(element);
47735      composeElementClose(element);
47736      xml.exit(FHIR_NS, name);
47737    }
47738  }
47739
47740  protected void composeGroupCharacteristicComponentElements(Group.GroupCharacteristicComponent element) throws IOException {
47741    composeBackboneElementElements(element);
47742    if (element.hasCode()) {
47743      composeCodeableConcept("code", element.getCode());
47744    }
47745    if (element.hasValue()) {
47746      composeType("value", element.getValue());
47747    }    if (element.hasExcludeElement()) {
47748      composeBoolean("exclude", element.getExcludeElement());
47749    }
47750    if (element.hasPeriod()) {
47751      composePeriod("period", element.getPeriod());
47752    }
47753  }
47754
47755  protected void composeGroupMemberComponent(String name, Group.GroupMemberComponent element) throws IOException {
47756    if (element != null) {
47757    composeElementAttributes(element);
47758      xml.enter(FHIR_NS, name);
47759      composeGroupMemberComponentElements(element);
47760      composeElementClose(element);
47761      xml.exit(FHIR_NS, name);
47762    }
47763  }
47764
47765  protected void composeGroupMemberComponentElements(Group.GroupMemberComponent element) throws IOException {
47766    composeBackboneElementElements(element);
47767    if (element.hasEntity()) {
47768      composeReference("entity", element.getEntity());
47769    }
47770    if (element.hasPeriod()) {
47771      composePeriod("period", element.getPeriod());
47772    }
47773    if (element.hasInactiveElement()) {
47774      composeBoolean("inactive", element.getInactiveElement());
47775    }
47776  }
47777
47778  protected void composeGuidanceResponse(String name, GuidanceResponse element) throws IOException {
47779    if (element != null) {
47780    composeResourceAttributes(element);
47781      xml.enter(FHIR_NS, name);
47782      composeGuidanceResponseElements(element);
47783      composeElementClose(element);
47784      xml.exit(FHIR_NS, name);
47785    }
47786  }
47787
47788  protected void composeGuidanceResponseElements(GuidanceResponse element) throws IOException {
47789    composeDomainResourceElements(element);
47790    if (element.hasRequestIdentifier()) {
47791      composeIdentifier("requestIdentifier", element.getRequestIdentifier());
47792    }
47793    if (element.hasIdentifier()) { 
47794      for (Identifier e : element.getIdentifier()) 
47795          composeIdentifier("identifier", e);
47796    }
47797    if (element.hasModule()) {
47798      composeType("module", element.getModule());
47799    }    if (element.hasStatusElement())
47800      composeEnumeration("status", element.getStatusElement(), new GuidanceResponse.GuidanceResponseStatusEnumFactory());
47801    if (element.hasSubject()) {
47802      composeReference("subject", element.getSubject());
47803    }
47804    if (element.hasEncounter()) {
47805      composeReference("encounter", element.getEncounter());
47806    }
47807    if (element.hasOccurrenceDateTimeElement()) {
47808      composeDateTime("occurrenceDateTime", element.getOccurrenceDateTimeElement());
47809    }
47810    if (element.hasPerformer()) {
47811      composeReference("performer", element.getPerformer());
47812    }
47813    if (element.hasReason()) { 
47814      for (CodeableReference e : element.getReason()) 
47815          composeCodeableReference("reason", e);
47816    }
47817    if (element.hasNote()) { 
47818      for (Annotation e : element.getNote()) 
47819          composeAnnotation("note", e);
47820    }
47821    if (element.hasEvaluationMessage()) {
47822      composeReference("evaluationMessage", element.getEvaluationMessage());
47823    }
47824    if (element.hasOutputParameters()) {
47825      composeReference("outputParameters", element.getOutputParameters());
47826    }
47827    if (element.hasResult()) { 
47828      for (Reference e : element.getResult()) 
47829          composeReference("result", e);
47830    }
47831    if (element.hasDataRequirement()) { 
47832      for (DataRequirement e : element.getDataRequirement()) 
47833          composeDataRequirement("dataRequirement", e);
47834    }
47835  }
47836
47837  protected void composeHealthcareService(String name, HealthcareService element) throws IOException {
47838    if (element != null) {
47839    composeResourceAttributes(element);
47840      xml.enter(FHIR_NS, name);
47841      composeHealthcareServiceElements(element);
47842      composeElementClose(element);
47843      xml.exit(FHIR_NS, name);
47844    }
47845  }
47846
47847  protected void composeHealthcareServiceElements(HealthcareService element) throws IOException {
47848    composeDomainResourceElements(element);
47849    if (element.hasIdentifier()) { 
47850      for (Identifier e : element.getIdentifier()) 
47851          composeIdentifier("identifier", e);
47852    }
47853    if (element.hasActiveElement()) {
47854      composeBoolean("active", element.getActiveElement());
47855    }
47856    if (element.hasProvidedBy()) {
47857      composeReference("providedBy", element.getProvidedBy());
47858    }
47859    if (element.hasOfferedIn()) { 
47860      for (Reference e : element.getOfferedIn()) 
47861          composeReference("offeredIn", e);
47862    }
47863    if (element.hasCategory()) { 
47864      for (CodeableConcept e : element.getCategory()) 
47865          composeCodeableConcept("category", e);
47866    }
47867    if (element.hasType()) { 
47868      for (CodeableConcept e : element.getType()) 
47869          composeCodeableConcept("type", e);
47870    }
47871    if (element.hasSpecialty()) { 
47872      for (CodeableConcept e : element.getSpecialty()) 
47873          composeCodeableConcept("specialty", e);
47874    }
47875    if (element.hasLocation()) { 
47876      for (Reference e : element.getLocation()) 
47877          composeReference("location", e);
47878    }
47879    if (element.hasNameElement()) {
47880      composeString("name", element.getNameElement());
47881    }
47882    if (element.hasCommentElement()) {
47883      composeMarkdown("comment", element.getCommentElement());
47884    }
47885    if (element.hasExtraDetailsElement()) {
47886      composeMarkdown("extraDetails", element.getExtraDetailsElement());
47887    }
47888    if (element.hasPhoto()) {
47889      composeAttachment("photo", element.getPhoto());
47890    }
47891    if (element.hasContact()) { 
47892      for (ExtendedContactDetail e : element.getContact()) 
47893          composeExtendedContactDetail("contact", e);
47894    }
47895    if (element.hasCoverageArea()) { 
47896      for (Reference e : element.getCoverageArea()) 
47897          composeReference("coverageArea", e);
47898    }
47899    if (element.hasServiceProvisionCode()) { 
47900      for (CodeableConcept e : element.getServiceProvisionCode()) 
47901          composeCodeableConcept("serviceProvisionCode", e);
47902    }
47903    if (element.hasEligibility()) { 
47904      for (HealthcareService.HealthcareServiceEligibilityComponent e : element.getEligibility()) 
47905          composeHealthcareServiceEligibilityComponent("eligibility", e);
47906    }
47907    if (element.hasProgram()) { 
47908      for (CodeableConcept e : element.getProgram()) 
47909          composeCodeableConcept("program", e);
47910    }
47911    if (element.hasCharacteristic()) { 
47912      for (CodeableConcept e : element.getCharacteristic()) 
47913          composeCodeableConcept("characteristic", e);
47914    }
47915    if (element.hasCommunication()) { 
47916      for (CodeableConcept e : element.getCommunication()) 
47917          composeCodeableConcept("communication", e);
47918    }
47919    if (element.hasReferralMethod()) { 
47920      for (CodeableConcept e : element.getReferralMethod()) 
47921          composeCodeableConcept("referralMethod", e);
47922    }
47923    if (element.hasAppointmentRequiredElement()) {
47924      composeBoolean("appointmentRequired", element.getAppointmentRequiredElement());
47925    }
47926    if (element.hasAvailability()) { 
47927      for (Availability e : element.getAvailability()) 
47928          composeAvailability("availability", e);
47929    }
47930    if (element.hasEndpoint()) { 
47931      for (Reference e : element.getEndpoint()) 
47932          composeReference("endpoint", e);
47933    }
47934  }
47935
47936  protected void composeHealthcareServiceEligibilityComponent(String name, HealthcareService.HealthcareServiceEligibilityComponent element) throws IOException {
47937    if (element != null) {
47938    composeElementAttributes(element);
47939      xml.enter(FHIR_NS, name);
47940      composeHealthcareServiceEligibilityComponentElements(element);
47941      composeElementClose(element);
47942      xml.exit(FHIR_NS, name);
47943    }
47944  }
47945
47946  protected void composeHealthcareServiceEligibilityComponentElements(HealthcareService.HealthcareServiceEligibilityComponent element) throws IOException {
47947    composeBackboneElementElements(element);
47948    if (element.hasCode()) {
47949      composeCodeableConcept("code", element.getCode());
47950    }
47951    if (element.hasCommentElement()) {
47952      composeMarkdown("comment", element.getCommentElement());
47953    }
47954  }
47955
47956  protected void composeImagingSelection(String name, ImagingSelection element) throws IOException {
47957    if (element != null) {
47958    composeResourceAttributes(element);
47959      xml.enter(FHIR_NS, name);
47960      composeImagingSelectionElements(element);
47961      composeElementClose(element);
47962      xml.exit(FHIR_NS, name);
47963    }
47964  }
47965
47966  protected void composeImagingSelectionElements(ImagingSelection element) throws IOException {
47967    composeDomainResourceElements(element);
47968    if (element.hasIdentifier()) { 
47969      for (Identifier e : element.getIdentifier()) 
47970          composeIdentifier("identifier", e);
47971    }
47972    if (element.hasStatusElement())
47973      composeEnumeration("status", element.getStatusElement(), new ImagingSelection.ImagingSelectionStatusEnumFactory());
47974    if (element.hasSubject()) {
47975      composeReference("subject", element.getSubject());
47976    }
47977    if (element.hasIssuedElement()) {
47978      composeInstant("issued", element.getIssuedElement());
47979    }
47980    if (element.hasPerformer()) { 
47981      for (ImagingSelection.ImagingSelectionPerformerComponent e : element.getPerformer()) 
47982          composeImagingSelectionPerformerComponent("performer", e);
47983    }
47984    if (element.hasBasedOn()) { 
47985      for (Reference e : element.getBasedOn()) 
47986          composeReference("basedOn", e);
47987    }
47988    if (element.hasCategory()) { 
47989      for (CodeableConcept e : element.getCategory()) 
47990          composeCodeableConcept("category", e);
47991    }
47992    if (element.hasCode()) {
47993      composeCodeableConcept("code", element.getCode());
47994    }
47995    if (element.hasStudyUidElement()) {
47996      composeId("studyUid", element.getStudyUidElement());
47997    }
47998    if (element.hasDerivedFrom()) { 
47999      for (Reference e : element.getDerivedFrom()) 
48000          composeReference("derivedFrom", e);
48001    }
48002    if (element.hasEndpoint()) { 
48003      for (Reference e : element.getEndpoint()) 
48004          composeReference("endpoint", e);
48005    }
48006    if (element.hasSeriesUidElement()) {
48007      composeId("seriesUid", element.getSeriesUidElement());
48008    }
48009    if (element.hasSeriesNumberElement()) {
48010      composeUnsignedInt("seriesNumber", element.getSeriesNumberElement());
48011    }
48012    if (element.hasFrameOfReferenceUidElement()) {
48013      composeId("frameOfReferenceUid", element.getFrameOfReferenceUidElement());
48014    }
48015    if (element.hasBodySite()) {
48016      composeCodeableReference("bodySite", element.getBodySite());
48017    }
48018    if (element.hasFocus()) { 
48019      for (Reference e : element.getFocus()) 
48020          composeReference("focus", e);
48021    }
48022    if (element.hasInstance()) { 
48023      for (ImagingSelection.ImagingSelectionInstanceComponent e : element.getInstance()) 
48024          composeImagingSelectionInstanceComponent("instance", e);
48025    }
48026  }
48027
48028  protected void composeImagingSelectionPerformerComponent(String name, ImagingSelection.ImagingSelectionPerformerComponent element) throws IOException {
48029    if (element != null) {
48030    composeElementAttributes(element);
48031      xml.enter(FHIR_NS, name);
48032      composeImagingSelectionPerformerComponentElements(element);
48033      composeElementClose(element);
48034      xml.exit(FHIR_NS, name);
48035    }
48036  }
48037
48038  protected void composeImagingSelectionPerformerComponentElements(ImagingSelection.ImagingSelectionPerformerComponent element) throws IOException {
48039    composeBackboneElementElements(element);
48040    if (element.hasFunction()) {
48041      composeCodeableConcept("function", element.getFunction());
48042    }
48043    if (element.hasActor()) {
48044      composeReference("actor", element.getActor());
48045    }
48046  }
48047
48048  protected void composeImagingSelectionInstanceComponent(String name, ImagingSelection.ImagingSelectionInstanceComponent element) throws IOException {
48049    if (element != null) {
48050    composeElementAttributes(element);
48051      xml.enter(FHIR_NS, name);
48052      composeImagingSelectionInstanceComponentElements(element);
48053      composeElementClose(element);
48054      xml.exit(FHIR_NS, name);
48055    }
48056  }
48057
48058  protected void composeImagingSelectionInstanceComponentElements(ImagingSelection.ImagingSelectionInstanceComponent element) throws IOException {
48059    composeBackboneElementElements(element);
48060    if (element.hasUidElement()) {
48061      composeId("uid", element.getUidElement());
48062    }
48063    if (element.hasNumberElement()) {
48064      composeUnsignedInt("number", element.getNumberElement());
48065    }
48066    if (element.hasSopClass()) {
48067      composeCoding("sopClass", element.getSopClass());
48068    }
48069    if (element.hasSubset()) { 
48070      for (StringType e : element.getSubset()) 
48071          composeString("subset", e);
48072    }
48073    if (element.hasImageRegion2D()) { 
48074      for (ImagingSelection.ImageRegion2DComponent e : element.getImageRegion2D()) 
48075          composeImagingSelectionImageRegion2DComponent("imageRegion2D", e);
48076    }
48077    if (element.hasImageRegion3D()) { 
48078      for (ImagingSelection.ImageRegion3DComponent e : element.getImageRegion3D()) 
48079          composeImagingSelectionImageRegion3DComponent("imageRegion3D", e);
48080    }
48081  }
48082
48083  protected void composeImagingSelectionImageRegion2DComponent(String name, ImagingSelection.ImageRegion2DComponent element) throws IOException {
48084    if (element != null) {
48085    composeElementAttributes(element);
48086      xml.enter(FHIR_NS, name);
48087      composeImagingSelectionImageRegion2DComponentElements(element);
48088      composeElementClose(element);
48089      xml.exit(FHIR_NS, name);
48090    }
48091  }
48092
48093  protected void composeImagingSelectionImageRegion2DComponentElements(ImagingSelection.ImageRegion2DComponent element) throws IOException {
48094    composeBackboneElementElements(element);
48095    if (element.hasRegionTypeElement())
48096      composeEnumeration("regionType", element.getRegionTypeElement(), new ImagingSelection.ImagingSelection2DGraphicTypeEnumFactory());
48097    if (element.hasCoordinate()) { 
48098      for (DecimalType e : element.getCoordinate()) 
48099          composeDecimal("coordinate", e);
48100    }
48101  }
48102
48103  protected void composeImagingSelectionImageRegion3DComponent(String name, ImagingSelection.ImageRegion3DComponent element) throws IOException {
48104    if (element != null) {
48105    composeElementAttributes(element);
48106      xml.enter(FHIR_NS, name);
48107      composeImagingSelectionImageRegion3DComponentElements(element);
48108      composeElementClose(element);
48109      xml.exit(FHIR_NS, name);
48110    }
48111  }
48112
48113  protected void composeImagingSelectionImageRegion3DComponentElements(ImagingSelection.ImageRegion3DComponent element) throws IOException {
48114    composeBackboneElementElements(element);
48115    if (element.hasRegionTypeElement())
48116      composeEnumeration("regionType", element.getRegionTypeElement(), new ImagingSelection.ImagingSelection3DGraphicTypeEnumFactory());
48117    if (element.hasCoordinate()) { 
48118      for (DecimalType e : element.getCoordinate()) 
48119          composeDecimal("coordinate", e);
48120    }
48121  }
48122
48123  protected void composeImagingStudy(String name, ImagingStudy element) throws IOException {
48124    if (element != null) {
48125    composeResourceAttributes(element);
48126      xml.enter(FHIR_NS, name);
48127      composeImagingStudyElements(element);
48128      composeElementClose(element);
48129      xml.exit(FHIR_NS, name);
48130    }
48131  }
48132
48133  protected void composeImagingStudyElements(ImagingStudy element) throws IOException {
48134    composeDomainResourceElements(element);
48135    if (element.hasIdentifier()) { 
48136      for (Identifier e : element.getIdentifier()) 
48137          composeIdentifier("identifier", e);
48138    }
48139    if (element.hasStatusElement())
48140      composeEnumeration("status", element.getStatusElement(), new ImagingStudy.ImagingStudyStatusEnumFactory());
48141    if (element.hasModality()) { 
48142      for (CodeableConcept e : element.getModality()) 
48143          composeCodeableConcept("modality", e);
48144    }
48145    if (element.hasSubject()) {
48146      composeReference("subject", element.getSubject());
48147    }
48148    if (element.hasEncounter()) {
48149      composeReference("encounter", element.getEncounter());
48150    }
48151    if (element.hasStartedElement()) {
48152      composeDateTime("started", element.getStartedElement());
48153    }
48154    if (element.hasBasedOn()) { 
48155      for (Reference e : element.getBasedOn()) 
48156          composeReference("basedOn", e);
48157    }
48158    if (element.hasPartOf()) { 
48159      for (Reference e : element.getPartOf()) 
48160          composeReference("partOf", e);
48161    }
48162    if (element.hasReferrer()) {
48163      composeReference("referrer", element.getReferrer());
48164    }
48165    if (element.hasEndpoint()) { 
48166      for (Reference e : element.getEndpoint()) 
48167          composeReference("endpoint", e);
48168    }
48169    if (element.hasNumberOfSeriesElement()) {
48170      composeUnsignedInt("numberOfSeries", element.getNumberOfSeriesElement());
48171    }
48172    if (element.hasNumberOfInstancesElement()) {
48173      composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
48174    }
48175    if (element.hasProcedure()) { 
48176      for (CodeableReference e : element.getProcedure()) 
48177          composeCodeableReference("procedure", e);
48178    }
48179    if (element.hasLocation()) {
48180      composeReference("location", element.getLocation());
48181    }
48182    if (element.hasReason()) { 
48183      for (CodeableReference e : element.getReason()) 
48184          composeCodeableReference("reason", e);
48185    }
48186    if (element.hasNote()) { 
48187      for (Annotation e : element.getNote()) 
48188          composeAnnotation("note", e);
48189    }
48190    if (element.hasDescriptionElement()) {
48191      composeString("description", element.getDescriptionElement());
48192    }
48193    if (element.hasSeries()) { 
48194      for (ImagingStudy.ImagingStudySeriesComponent e : element.getSeries()) 
48195          composeImagingStudySeriesComponent("series", e);
48196    }
48197  }
48198
48199  protected void composeImagingStudySeriesComponent(String name, ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
48200    if (element != null) {
48201    composeElementAttributes(element);
48202      xml.enter(FHIR_NS, name);
48203      composeImagingStudySeriesComponentElements(element);
48204      composeElementClose(element);
48205      xml.exit(FHIR_NS, name);
48206    }
48207  }
48208
48209  protected void composeImagingStudySeriesComponentElements(ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
48210    composeBackboneElementElements(element);
48211    if (element.hasUidElement()) {
48212      composeId("uid", element.getUidElement());
48213    }
48214    if (element.hasNumberElement()) {
48215      composeUnsignedInt("number", element.getNumberElement());
48216    }
48217    if (element.hasModality()) {
48218      composeCodeableConcept("modality", element.getModality());
48219    }
48220    if (element.hasDescriptionElement()) {
48221      composeString("description", element.getDescriptionElement());
48222    }
48223    if (element.hasNumberOfInstancesElement()) {
48224      composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
48225    }
48226    if (element.hasEndpoint()) { 
48227      for (Reference e : element.getEndpoint()) 
48228          composeReference("endpoint", e);
48229    }
48230    if (element.hasBodySite()) {
48231      composeCodeableReference("bodySite", element.getBodySite());
48232    }
48233    if (element.hasLaterality()) {
48234      composeCodeableConcept("laterality", element.getLaterality());
48235    }
48236    if (element.hasSpecimen()) { 
48237      for (Reference e : element.getSpecimen()) 
48238          composeReference("specimen", e);
48239    }
48240    if (element.hasStartedElement()) {
48241      composeDateTime("started", element.getStartedElement());
48242    }
48243    if (element.hasPerformer()) { 
48244      for (ImagingStudy.ImagingStudySeriesPerformerComponent e : element.getPerformer()) 
48245          composeImagingStudySeriesPerformerComponent("performer", e);
48246    }
48247    if (element.hasInstance()) { 
48248      for (ImagingStudy.ImagingStudySeriesInstanceComponent e : element.getInstance()) 
48249          composeImagingStudySeriesInstanceComponent("instance", e);
48250    }
48251  }
48252
48253  protected void composeImagingStudySeriesPerformerComponent(String name, ImagingStudy.ImagingStudySeriesPerformerComponent element) throws IOException {
48254    if (element != null) {
48255    composeElementAttributes(element);
48256      xml.enter(FHIR_NS, name);
48257      composeImagingStudySeriesPerformerComponentElements(element);
48258      composeElementClose(element);
48259      xml.exit(FHIR_NS, name);
48260    }
48261  }
48262
48263  protected void composeImagingStudySeriesPerformerComponentElements(ImagingStudy.ImagingStudySeriesPerformerComponent element) throws IOException {
48264    composeBackboneElementElements(element);
48265    if (element.hasFunction()) {
48266      composeCodeableConcept("function", element.getFunction());
48267    }
48268    if (element.hasActor()) {
48269      composeReference("actor", element.getActor());
48270    }
48271  }
48272
48273  protected void composeImagingStudySeriesInstanceComponent(String name, ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
48274    if (element != null) {
48275    composeElementAttributes(element);
48276      xml.enter(FHIR_NS, name);
48277      composeImagingStudySeriesInstanceComponentElements(element);
48278      composeElementClose(element);
48279      xml.exit(FHIR_NS, name);
48280    }
48281  }
48282
48283  protected void composeImagingStudySeriesInstanceComponentElements(ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
48284    composeBackboneElementElements(element);
48285    if (element.hasUidElement()) {
48286      composeId("uid", element.getUidElement());
48287    }
48288    if (element.hasSopClass()) {
48289      composeCoding("sopClass", element.getSopClass());
48290    }
48291    if (element.hasNumberElement()) {
48292      composeUnsignedInt("number", element.getNumberElement());
48293    }
48294    if (element.hasTitleElement()) {
48295      composeString("title", element.getTitleElement());
48296    }
48297  }
48298
48299  protected void composeImmunization(String name, Immunization element) throws IOException {
48300    if (element != null) {
48301    composeResourceAttributes(element);
48302      xml.enter(FHIR_NS, name);
48303      composeImmunizationElements(element);
48304      composeElementClose(element);
48305      xml.exit(FHIR_NS, name);
48306    }
48307  }
48308
48309  protected void composeImmunizationElements(Immunization element) throws IOException {
48310    composeDomainResourceElements(element);
48311    if (element.hasIdentifier()) { 
48312      for (Identifier e : element.getIdentifier()) 
48313          composeIdentifier("identifier", e);
48314    }
48315    if (element.hasBasedOn()) { 
48316      for (Reference e : element.getBasedOn()) 
48317          composeReference("basedOn", e);
48318    }
48319    if (element.hasStatusElement())
48320      composeEnumeration("status", element.getStatusElement(), new Immunization.ImmunizationStatusCodesEnumFactory());
48321    if (element.hasStatusReason()) {
48322      composeCodeableConcept("statusReason", element.getStatusReason());
48323    }
48324    if (element.hasVaccineCode()) {
48325      composeCodeableConcept("vaccineCode", element.getVaccineCode());
48326    }
48327    if (element.hasAdministeredProduct()) {
48328      composeCodeableReference("administeredProduct", element.getAdministeredProduct());
48329    }
48330    if (element.hasManufacturer()) {
48331      composeCodeableReference("manufacturer", element.getManufacturer());
48332    }
48333    if (element.hasLotNumberElement()) {
48334      composeString("lotNumber", element.getLotNumberElement());
48335    }
48336    if (element.hasExpirationDateElement()) {
48337      composeDate("expirationDate", element.getExpirationDateElement());
48338    }
48339    if (element.hasPatient()) {
48340      composeReference("patient", element.getPatient());
48341    }
48342    if (element.hasEncounter()) {
48343      composeReference("encounter", element.getEncounter());
48344    }
48345    if (element.hasSupportingInformation()) { 
48346      for (Reference e : element.getSupportingInformation()) 
48347          composeReference("supportingInformation", e);
48348    }
48349    if (element.hasOccurrence()) {
48350      composeType("occurrence", element.getOccurrence());
48351    }    if (element.hasPrimarySourceElement()) {
48352      composeBoolean("primarySource", element.getPrimarySourceElement());
48353    }
48354    if (element.hasInformationSource()) {
48355      composeCodeableReference("informationSource", element.getInformationSource());
48356    }
48357    if (element.hasLocation()) {
48358      composeReference("location", element.getLocation());
48359    }
48360    if (element.hasSite()) {
48361      composeCodeableConcept("site", element.getSite());
48362    }
48363    if (element.hasRoute()) {
48364      composeCodeableConcept("route", element.getRoute());
48365    }
48366    if (element.hasDoseQuantity()) {
48367      composeQuantity("doseQuantity", element.getDoseQuantity());
48368    }
48369    if (element.hasPerformer()) { 
48370      for (Immunization.ImmunizationPerformerComponent e : element.getPerformer()) 
48371          composeImmunizationPerformerComponent("performer", e);
48372    }
48373    if (element.hasNote()) { 
48374      for (Annotation e : element.getNote()) 
48375          composeAnnotation("note", e);
48376    }
48377    if (element.hasReason()) { 
48378      for (CodeableReference e : element.getReason()) 
48379          composeCodeableReference("reason", e);
48380    }
48381    if (element.hasIsSubpotentElement()) {
48382      composeBoolean("isSubpotent", element.getIsSubpotentElement());
48383    }
48384    if (element.hasSubpotentReason()) { 
48385      for (CodeableConcept e : element.getSubpotentReason()) 
48386          composeCodeableConcept("subpotentReason", e);
48387    }
48388    if (element.hasProgramEligibility()) { 
48389      for (Immunization.ImmunizationProgramEligibilityComponent e : element.getProgramEligibility()) 
48390          composeImmunizationProgramEligibilityComponent("programEligibility", e);
48391    }
48392    if (element.hasFundingSource()) {
48393      composeCodeableConcept("fundingSource", element.getFundingSource());
48394    }
48395    if (element.hasReaction()) { 
48396      for (Immunization.ImmunizationReactionComponent e : element.getReaction()) 
48397          composeImmunizationReactionComponent("reaction", e);
48398    }
48399    if (element.hasProtocolApplied()) { 
48400      for (Immunization.ImmunizationProtocolAppliedComponent e : element.getProtocolApplied()) 
48401          composeImmunizationProtocolAppliedComponent("protocolApplied", e);
48402    }
48403  }
48404
48405  protected void composeImmunizationPerformerComponent(String name, Immunization.ImmunizationPerformerComponent element) throws IOException {
48406    if (element != null) {
48407    composeElementAttributes(element);
48408      xml.enter(FHIR_NS, name);
48409      composeImmunizationPerformerComponentElements(element);
48410      composeElementClose(element);
48411      xml.exit(FHIR_NS, name);
48412    }
48413  }
48414
48415  protected void composeImmunizationPerformerComponentElements(Immunization.ImmunizationPerformerComponent element) throws IOException {
48416    composeBackboneElementElements(element);
48417    if (element.hasFunction()) {
48418      composeCodeableConcept("function", element.getFunction());
48419    }
48420    if (element.hasActor()) {
48421      composeReference("actor", element.getActor());
48422    }
48423  }
48424
48425  protected void composeImmunizationProgramEligibilityComponent(String name, Immunization.ImmunizationProgramEligibilityComponent element) throws IOException {
48426    if (element != null) {
48427    composeElementAttributes(element);
48428      xml.enter(FHIR_NS, name);
48429      composeImmunizationProgramEligibilityComponentElements(element);
48430      composeElementClose(element);
48431      xml.exit(FHIR_NS, name);
48432    }
48433  }
48434
48435  protected void composeImmunizationProgramEligibilityComponentElements(Immunization.ImmunizationProgramEligibilityComponent element) throws IOException {
48436    composeBackboneElementElements(element);
48437    if (element.hasProgram()) {
48438      composeCodeableConcept("program", element.getProgram());
48439    }
48440    if (element.hasProgramStatus()) {
48441      composeCodeableConcept("programStatus", element.getProgramStatus());
48442    }
48443  }
48444
48445  protected void composeImmunizationReactionComponent(String name, Immunization.ImmunizationReactionComponent element) throws IOException {
48446    if (element != null) {
48447    composeElementAttributes(element);
48448      xml.enter(FHIR_NS, name);
48449      composeImmunizationReactionComponentElements(element);
48450      composeElementClose(element);
48451      xml.exit(FHIR_NS, name);
48452    }
48453  }
48454
48455  protected void composeImmunizationReactionComponentElements(Immunization.ImmunizationReactionComponent element) throws IOException {
48456    composeBackboneElementElements(element);
48457    if (element.hasDateElement()) {
48458      composeDateTime("date", element.getDateElement());
48459    }
48460    if (element.hasManifestation()) {
48461      composeCodeableReference("manifestation", element.getManifestation());
48462    }
48463    if (element.hasReportedElement()) {
48464      composeBoolean("reported", element.getReportedElement());
48465    }
48466  }
48467
48468  protected void composeImmunizationProtocolAppliedComponent(String name, Immunization.ImmunizationProtocolAppliedComponent element) throws IOException {
48469    if (element != null) {
48470    composeElementAttributes(element);
48471      xml.enter(FHIR_NS, name);
48472      composeImmunizationProtocolAppliedComponentElements(element);
48473      composeElementClose(element);
48474      xml.exit(FHIR_NS, name);
48475    }
48476  }
48477
48478  protected void composeImmunizationProtocolAppliedComponentElements(Immunization.ImmunizationProtocolAppliedComponent element) throws IOException {
48479    composeBackboneElementElements(element);
48480    if (element.hasSeriesElement()) {
48481      composeString("series", element.getSeriesElement());
48482    }
48483    if (element.hasAuthority()) {
48484      composeReference("authority", element.getAuthority());
48485    }
48486    if (element.hasTargetDisease()) { 
48487      for (CodeableConcept e : element.getTargetDisease()) 
48488          composeCodeableConcept("targetDisease", e);
48489    }
48490    if (element.hasDoseNumberElement()) {
48491      composeString("doseNumber", element.getDoseNumberElement());
48492    }
48493    if (element.hasSeriesDosesElement()) {
48494      composeString("seriesDoses", element.getSeriesDosesElement());
48495    }
48496  }
48497
48498  protected void composeImmunizationEvaluation(String name, ImmunizationEvaluation element) throws IOException {
48499    if (element != null) {
48500    composeResourceAttributes(element);
48501      xml.enter(FHIR_NS, name);
48502      composeImmunizationEvaluationElements(element);
48503      composeElementClose(element);
48504      xml.exit(FHIR_NS, name);
48505    }
48506  }
48507
48508  protected void composeImmunizationEvaluationElements(ImmunizationEvaluation element) throws IOException {
48509    composeDomainResourceElements(element);
48510    if (element.hasIdentifier()) { 
48511      for (Identifier e : element.getIdentifier()) 
48512          composeIdentifier("identifier", e);
48513    }
48514    if (element.hasStatusElement())
48515      composeEnumeration("status", element.getStatusElement(), new ImmunizationEvaluation.ImmunizationEvaluationStatusCodesEnumFactory());
48516    if (element.hasPatient()) {
48517      composeReference("patient", element.getPatient());
48518    }
48519    if (element.hasDateElement()) {
48520      composeDateTime("date", element.getDateElement());
48521    }
48522    if (element.hasAuthority()) {
48523      composeReference("authority", element.getAuthority());
48524    }
48525    if (element.hasTargetDisease()) {
48526      composeCodeableConcept("targetDisease", element.getTargetDisease());
48527    }
48528    if (element.hasImmunizationEvent()) {
48529      composeReference("immunizationEvent", element.getImmunizationEvent());
48530    }
48531    if (element.hasDoseStatus()) {
48532      composeCodeableConcept("doseStatus", element.getDoseStatus());
48533    }
48534    if (element.hasDoseStatusReason()) { 
48535      for (CodeableConcept e : element.getDoseStatusReason()) 
48536          composeCodeableConcept("doseStatusReason", e);
48537    }
48538    if (element.hasDescriptionElement()) {
48539      composeMarkdown("description", element.getDescriptionElement());
48540    }
48541    if (element.hasSeriesElement()) {
48542      composeString("series", element.getSeriesElement());
48543    }
48544    if (element.hasDoseNumberElement()) {
48545      composeString("doseNumber", element.getDoseNumberElement());
48546    }
48547    if (element.hasSeriesDosesElement()) {
48548      composeString("seriesDoses", element.getSeriesDosesElement());
48549    }
48550  }
48551
48552  protected void composeImmunizationRecommendation(String name, ImmunizationRecommendation element) throws IOException {
48553    if (element != null) {
48554    composeResourceAttributes(element);
48555      xml.enter(FHIR_NS, name);
48556      composeImmunizationRecommendationElements(element);
48557      composeElementClose(element);
48558      xml.exit(FHIR_NS, name);
48559    }
48560  }
48561
48562  protected void composeImmunizationRecommendationElements(ImmunizationRecommendation element) throws IOException {
48563    composeDomainResourceElements(element);
48564    if (element.hasIdentifier()) { 
48565      for (Identifier e : element.getIdentifier()) 
48566          composeIdentifier("identifier", e);
48567    }
48568    if (element.hasPatient()) {
48569      composeReference("patient", element.getPatient());
48570    }
48571    if (element.hasDateElement()) {
48572      composeDateTime("date", element.getDateElement());
48573    }
48574    if (element.hasAuthority()) {
48575      composeReference("authority", element.getAuthority());
48576    }
48577    if (element.hasRecommendation()) { 
48578      for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent e : element.getRecommendation()) 
48579          composeImmunizationRecommendationRecommendationComponent("recommendation", e);
48580    }
48581  }
48582
48583  protected void composeImmunizationRecommendationRecommendationComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
48584    if (element != null) {
48585    composeElementAttributes(element);
48586      xml.enter(FHIR_NS, name);
48587      composeImmunizationRecommendationRecommendationComponentElements(element);
48588      composeElementClose(element);
48589      xml.exit(FHIR_NS, name);
48590    }
48591  }
48592
48593  protected void composeImmunizationRecommendationRecommendationComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
48594    composeBackboneElementElements(element);
48595    if (element.hasVaccineCode()) { 
48596      for (CodeableConcept e : element.getVaccineCode()) 
48597          composeCodeableConcept("vaccineCode", e);
48598    }
48599    if (element.hasTargetDisease()) { 
48600      for (CodeableConcept e : element.getTargetDisease()) 
48601          composeCodeableConcept("targetDisease", e);
48602    }
48603    if (element.hasContraindicatedVaccineCode()) { 
48604      for (CodeableConcept e : element.getContraindicatedVaccineCode()) 
48605          composeCodeableConcept("contraindicatedVaccineCode", e);
48606    }
48607    if (element.hasForecastStatus()) {
48608      composeCodeableConcept("forecastStatus", element.getForecastStatus());
48609    }
48610    if (element.hasForecastReason()) { 
48611      for (CodeableConcept e : element.getForecastReason()) 
48612          composeCodeableConcept("forecastReason", e);
48613    }
48614    if (element.hasDateCriterion()) { 
48615      for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent e : element.getDateCriterion()) 
48616          composeImmunizationRecommendationRecommendationDateCriterionComponent("dateCriterion", e);
48617    }
48618    if (element.hasDescriptionElement()) {
48619      composeMarkdown("description", element.getDescriptionElement());
48620    }
48621    if (element.hasSeriesElement()) {
48622      composeString("series", element.getSeriesElement());
48623    }
48624    if (element.hasDoseNumberElement()) {
48625      composeString("doseNumber", element.getDoseNumberElement());
48626    }
48627    if (element.hasSeriesDosesElement()) {
48628      composeString("seriesDoses", element.getSeriesDosesElement());
48629    }
48630    if (element.hasSupportingImmunization()) { 
48631      for (Reference e : element.getSupportingImmunization()) 
48632          composeReference("supportingImmunization", e);
48633    }
48634    if (element.hasSupportingPatientInformation()) { 
48635      for (Reference e : element.getSupportingPatientInformation()) 
48636          composeReference("supportingPatientInformation", e);
48637    }
48638  }
48639
48640  protected void composeImmunizationRecommendationRecommendationDateCriterionComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
48641    if (element != null) {
48642    composeElementAttributes(element);
48643      xml.enter(FHIR_NS, name);
48644      composeImmunizationRecommendationRecommendationDateCriterionComponentElements(element);
48645      composeElementClose(element);
48646      xml.exit(FHIR_NS, name);
48647    }
48648  }
48649
48650  protected void composeImmunizationRecommendationRecommendationDateCriterionComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
48651    composeBackboneElementElements(element);
48652    if (element.hasCode()) {
48653      composeCodeableConcept("code", element.getCode());
48654    }
48655    if (element.hasValueElement()) {
48656      composeDateTime("value", element.getValueElement());
48657    }
48658  }
48659
48660  protected void composeImplementationGuide(String name, ImplementationGuide element) throws IOException {
48661    if (element != null) {
48662    composeResourceAttributes(element);
48663      xml.enter(FHIR_NS, name);
48664      composeImplementationGuideElements(element);
48665      composeElementClose(element);
48666      xml.exit(FHIR_NS, name);
48667    }
48668  }
48669
48670  protected void composeImplementationGuideElements(ImplementationGuide element) throws IOException {
48671    composeCanonicalResourceElements(element);
48672    if (element.hasUrlElement()) {
48673      composeUri("url", element.getUrlElement());
48674    }
48675    if (element.hasIdentifier()) { 
48676      for (Identifier e : element.getIdentifier()) 
48677          composeIdentifier("identifier", e);
48678    }
48679    if (element.hasVersionElement()) {
48680      composeString("version", element.getVersionElement());
48681    }
48682    if (element.hasVersionAlgorithm()) {
48683      composeType("versionAlgorithm", element.getVersionAlgorithm());
48684    }    if (element.hasNameElement()) {
48685      composeString("name", element.getNameElement());
48686    }
48687    if (element.hasTitleElement()) {
48688      composeString("title", element.getTitleElement());
48689    }
48690    if (element.hasStatusElement())
48691      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
48692    if (element.hasExperimentalElement()) {
48693      composeBoolean("experimental", element.getExperimentalElement());
48694    }
48695    if (element.hasDateElement()) {
48696      composeDateTime("date", element.getDateElement());
48697    }
48698    if (element.hasPublisherElement()) {
48699      composeString("publisher", element.getPublisherElement());
48700    }
48701    if (element.hasContact()) { 
48702      for (ContactDetail e : element.getContact()) 
48703          composeContactDetail("contact", e);
48704    }
48705    if (element.hasDescriptionElement()) {
48706      composeMarkdown("description", element.getDescriptionElement());
48707    }
48708    if (element.hasUseContext()) { 
48709      for (UsageContext e : element.getUseContext()) 
48710          composeUsageContext("useContext", e);
48711    }
48712    if (element.hasJurisdiction()) { 
48713      for (CodeableConcept e : element.getJurisdiction()) 
48714          composeCodeableConcept("jurisdiction", e);
48715    }
48716    if (element.hasPurposeElement()) {
48717      composeMarkdown("purpose", element.getPurposeElement());
48718    }
48719    if (element.hasCopyrightElement()) {
48720      composeMarkdown("copyright", element.getCopyrightElement());
48721    }
48722    if (element.hasCopyrightLabelElement()) {
48723      composeString("copyrightLabel", element.getCopyrightLabelElement());
48724    }
48725    if (element.hasPackageIdElement()) {
48726      composeId("packageId", element.getPackageIdElement());
48727    }
48728    if (element.hasLicenseElement())
48729      composeEnumeration("license", element.getLicenseElement(), new ImplementationGuide.SPDXLicenseEnumFactory());
48730      if (element.hasFhirVersion()) 
48731        for (Enumeration<Enumerations.FHIRVersion> e : element.getFhirVersion()) 
48732          composeEnumeration("fhirVersion", e, new Enumerations.FHIRVersionEnumFactory());
48733    if (element.hasDependsOn()) { 
48734      for (ImplementationGuide.ImplementationGuideDependsOnComponent e : element.getDependsOn()) 
48735          composeImplementationGuideDependsOnComponent("dependsOn", e);
48736    }
48737    if (element.hasGlobal()) { 
48738      for (ImplementationGuide.ImplementationGuideGlobalComponent e : element.getGlobal()) 
48739          composeImplementationGuideGlobalComponent("global", e);
48740    }
48741    if (element.hasDefinition()) {
48742      composeImplementationGuideDefinitionComponent("definition", element.getDefinition());
48743    }
48744    if (element.hasManifest()) {
48745      composeImplementationGuideManifestComponent("manifest", element.getManifest());
48746    }
48747  }
48748
48749  protected void composeImplementationGuideDependsOnComponent(String name, ImplementationGuide.ImplementationGuideDependsOnComponent element) throws IOException {
48750    if (element != null) {
48751    composeElementAttributes(element);
48752      xml.enter(FHIR_NS, name);
48753      composeImplementationGuideDependsOnComponentElements(element);
48754      composeElementClose(element);
48755      xml.exit(FHIR_NS, name);
48756    }
48757  }
48758
48759  protected void composeImplementationGuideDependsOnComponentElements(ImplementationGuide.ImplementationGuideDependsOnComponent element) throws IOException {
48760    composeBackboneElementElements(element);
48761    if (element.hasUriElement()) {
48762      composeCanonical("uri", element.getUriElement());
48763    }
48764    if (element.hasPackageIdElement()) {
48765      composeId("packageId", element.getPackageIdElement());
48766    }
48767    if (element.hasVersionElement()) {
48768      composeString("version", element.getVersionElement());
48769    }
48770    if (element.hasReasonElement()) {
48771      composeMarkdown("reason", element.getReasonElement());
48772    }
48773  }
48774
48775  protected void composeImplementationGuideGlobalComponent(String name, ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
48776    if (element != null) {
48777    composeElementAttributes(element);
48778      xml.enter(FHIR_NS, name);
48779      composeImplementationGuideGlobalComponentElements(element);
48780      composeElementClose(element);
48781      xml.exit(FHIR_NS, name);
48782    }
48783  }
48784
48785  protected void composeImplementationGuideGlobalComponentElements(ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
48786    composeBackboneElementElements(element);
48787    if (element.hasTypeElement()) {
48788      composeCode("type", element.getTypeElement());
48789    }
48790    if (element.hasProfileElement()) {
48791      composeCanonical("profile", element.getProfileElement());
48792    }
48793  }
48794
48795  protected void composeImplementationGuideDefinitionComponent(String name, ImplementationGuide.ImplementationGuideDefinitionComponent element) throws IOException {
48796    if (element != null) {
48797    composeElementAttributes(element);
48798      xml.enter(FHIR_NS, name);
48799      composeImplementationGuideDefinitionComponentElements(element);
48800      composeElementClose(element);
48801      xml.exit(FHIR_NS, name);
48802    }
48803  }
48804
48805  protected void composeImplementationGuideDefinitionComponentElements(ImplementationGuide.ImplementationGuideDefinitionComponent element) throws IOException {
48806    composeBackboneElementElements(element);
48807    if (element.hasGrouping()) { 
48808      for (ImplementationGuide.ImplementationGuideDefinitionGroupingComponent e : element.getGrouping()) 
48809          composeImplementationGuideDefinitionGroupingComponent("grouping", e);
48810    }
48811    if (element.hasResource()) { 
48812      for (ImplementationGuide.ImplementationGuideDefinitionResourceComponent e : element.getResource()) 
48813          composeImplementationGuideDefinitionResourceComponent("resource", e);
48814    }
48815    if (element.hasPage()) {
48816      composeImplementationGuideDefinitionPageComponent("page", element.getPage());
48817    }
48818    if (element.hasParameter()) { 
48819      for (ImplementationGuide.ImplementationGuideDefinitionParameterComponent e : element.getParameter()) 
48820          composeImplementationGuideDefinitionParameterComponent("parameter", e);
48821    }
48822    if (element.hasTemplate()) { 
48823      for (ImplementationGuide.ImplementationGuideDefinitionTemplateComponent e : element.getTemplate()) 
48824          composeImplementationGuideDefinitionTemplateComponent("template", e);
48825    }
48826  }
48827
48828  protected void composeImplementationGuideDefinitionGroupingComponent(String name, ImplementationGuide.ImplementationGuideDefinitionGroupingComponent element) throws IOException {
48829    if (element != null) {
48830    composeElementAttributes(element);
48831      xml.enter(FHIR_NS, name);
48832      composeImplementationGuideDefinitionGroupingComponentElements(element);
48833      composeElementClose(element);
48834      xml.exit(FHIR_NS, name);
48835    }
48836  }
48837
48838  protected void composeImplementationGuideDefinitionGroupingComponentElements(ImplementationGuide.ImplementationGuideDefinitionGroupingComponent element) throws IOException {
48839    composeBackboneElementElements(element);
48840    if (element.hasNameElement()) {
48841      composeString("name", element.getNameElement());
48842    }
48843    if (element.hasDescriptionElement()) {
48844      composeMarkdown("description", element.getDescriptionElement());
48845    }
48846  }
48847
48848  protected void composeImplementationGuideDefinitionResourceComponent(String name, ImplementationGuide.ImplementationGuideDefinitionResourceComponent element) throws IOException {
48849    if (element != null) {
48850    composeElementAttributes(element);
48851      xml.enter(FHIR_NS, name);
48852      composeImplementationGuideDefinitionResourceComponentElements(element);
48853      composeElementClose(element);
48854      xml.exit(FHIR_NS, name);
48855    }
48856  }
48857
48858  protected void composeImplementationGuideDefinitionResourceComponentElements(ImplementationGuide.ImplementationGuideDefinitionResourceComponent element) throws IOException {
48859    composeBackboneElementElements(element);
48860    if (element.hasReference()) {
48861      composeReference("reference", element.getReference());
48862    }
48863      if (element.hasFhirVersion()) 
48864        for (Enumeration<Enumerations.FHIRVersion> e : element.getFhirVersion()) 
48865          composeEnumeration("fhirVersion", e, new Enumerations.FHIRVersionEnumFactory());
48866    if (element.hasNameElement()) {
48867      composeString("name", element.getNameElement());
48868    }
48869    if (element.hasDescriptionElement()) {
48870      composeMarkdown("description", element.getDescriptionElement());
48871    }
48872    if (element.hasIsExampleElement()) {
48873      composeBoolean("isExample", element.getIsExampleElement());
48874    }
48875    if (element.hasProfile()) { 
48876      for (CanonicalType e : element.getProfile()) 
48877          composeCanonical("profile", e);
48878    }
48879    if (element.hasGroupingIdElement()) {
48880      composeId("groupingId", element.getGroupingIdElement());
48881    }
48882  }
48883
48884  protected void composeImplementationGuideDefinitionPageComponent(String name, ImplementationGuide.ImplementationGuideDefinitionPageComponent element) throws IOException {
48885    if (element != null) {
48886    composeElementAttributes(element);
48887      xml.enter(FHIR_NS, name);
48888      composeImplementationGuideDefinitionPageComponentElements(element);
48889      composeElementClose(element);
48890      xml.exit(FHIR_NS, name);
48891    }
48892  }
48893
48894  protected void composeImplementationGuideDefinitionPageComponentElements(ImplementationGuide.ImplementationGuideDefinitionPageComponent element) throws IOException {
48895    composeBackboneElementElements(element);
48896    if (element.hasSource()) {
48897      composeType("source", element.getSource());
48898    }    if (element.hasNameElement()) {
48899      composeUrl("name", element.getNameElement());
48900    }
48901    if (element.hasTitleElement()) {
48902      composeString("title", element.getTitleElement());
48903    }
48904    if (element.hasGenerationElement())
48905      composeEnumeration("generation", element.getGenerationElement(), new ImplementationGuide.GuidePageGenerationEnumFactory());
48906    if (element.hasPage()) { 
48907      for (ImplementationGuide.ImplementationGuideDefinitionPageComponent e : element.getPage()) 
48908          composeImplementationGuideDefinitionPageComponent("page", e);
48909    }
48910  }
48911
48912  protected void composeImplementationGuideDefinitionParameterComponent(String name, ImplementationGuide.ImplementationGuideDefinitionParameterComponent element) throws IOException {
48913    if (element != null) {
48914    composeElementAttributes(element);
48915      xml.enter(FHIR_NS, name);
48916      composeImplementationGuideDefinitionParameterComponentElements(element);
48917      composeElementClose(element);
48918      xml.exit(FHIR_NS, name);
48919    }
48920  }
48921
48922  protected void composeImplementationGuideDefinitionParameterComponentElements(ImplementationGuide.ImplementationGuideDefinitionParameterComponent element) throws IOException {
48923    composeBackboneElementElements(element);
48924    if (element.hasCode()) {
48925      composeCoding("code", element.getCode());
48926    }
48927    if (element.hasValueElement()) {
48928      composeString("value", element.getValueElement());
48929    }
48930  }
48931
48932  protected void composeImplementationGuideDefinitionTemplateComponent(String name, ImplementationGuide.ImplementationGuideDefinitionTemplateComponent element) throws IOException {
48933    if (element != null) {
48934    composeElementAttributes(element);
48935      xml.enter(FHIR_NS, name);
48936      composeImplementationGuideDefinitionTemplateComponentElements(element);
48937      composeElementClose(element);
48938      xml.exit(FHIR_NS, name);
48939    }
48940  }
48941
48942  protected void composeImplementationGuideDefinitionTemplateComponentElements(ImplementationGuide.ImplementationGuideDefinitionTemplateComponent element) throws IOException {
48943    composeBackboneElementElements(element);
48944    if (element.hasCodeElement()) {
48945      composeCode("code", element.getCodeElement());
48946    }
48947    if (element.hasSourceElement()) {
48948      composeString("source", element.getSourceElement());
48949    }
48950    if (element.hasScopeElement()) {
48951      composeString("scope", element.getScopeElement());
48952    }
48953  }
48954
48955  protected void composeImplementationGuideManifestComponent(String name, ImplementationGuide.ImplementationGuideManifestComponent element) throws IOException {
48956    if (element != null) {
48957    composeElementAttributes(element);
48958      xml.enter(FHIR_NS, name);
48959      composeImplementationGuideManifestComponentElements(element);
48960      composeElementClose(element);
48961      xml.exit(FHIR_NS, name);
48962    }
48963  }
48964
48965  protected void composeImplementationGuideManifestComponentElements(ImplementationGuide.ImplementationGuideManifestComponent element) throws IOException {
48966    composeBackboneElementElements(element);
48967    if (element.hasRenderingElement()) {
48968      composeUrl("rendering", element.getRenderingElement());
48969    }
48970    if (element.hasResource()) { 
48971      for (ImplementationGuide.ManifestResourceComponent e : element.getResource()) 
48972          composeImplementationGuideManifestResourceComponent("resource", e);
48973    }
48974    if (element.hasPage()) { 
48975      for (ImplementationGuide.ManifestPageComponent e : element.getPage()) 
48976          composeImplementationGuideManifestPageComponent("page", e);
48977    }
48978    if (element.hasImage()) { 
48979      for (StringType e : element.getImage()) 
48980          composeString("image", e);
48981    }
48982    if (element.hasOther()) { 
48983      for (StringType e : element.getOther()) 
48984          composeString("other", e);
48985    }
48986  }
48987
48988  protected void composeImplementationGuideManifestResourceComponent(String name, ImplementationGuide.ManifestResourceComponent element) throws IOException {
48989    if (element != null) {
48990    composeElementAttributes(element);
48991      xml.enter(FHIR_NS, name);
48992      composeImplementationGuideManifestResourceComponentElements(element);
48993      composeElementClose(element);
48994      xml.exit(FHIR_NS, name);
48995    }
48996  }
48997
48998  protected void composeImplementationGuideManifestResourceComponentElements(ImplementationGuide.ManifestResourceComponent element) throws IOException {
48999    composeBackboneElementElements(element);
49000    if (element.hasReference()) {
49001      composeReference("reference", element.getReference());
49002    }
49003    if (element.hasIsExampleElement()) {
49004      composeBoolean("isExample", element.getIsExampleElement());
49005    }
49006    if (element.hasProfile()) { 
49007      for (CanonicalType e : element.getProfile()) 
49008          composeCanonical("profile", e);
49009    }
49010    if (element.hasRelativePathElement()) {
49011      composeUrl("relativePath", element.getRelativePathElement());
49012    }
49013  }
49014
49015  protected void composeImplementationGuideManifestPageComponent(String name, ImplementationGuide.ManifestPageComponent element) throws IOException {
49016    if (element != null) {
49017    composeElementAttributes(element);
49018      xml.enter(FHIR_NS, name);
49019      composeImplementationGuideManifestPageComponentElements(element);
49020      composeElementClose(element);
49021      xml.exit(FHIR_NS, name);
49022    }
49023  }
49024
49025  protected void composeImplementationGuideManifestPageComponentElements(ImplementationGuide.ManifestPageComponent element) throws IOException {
49026    composeBackboneElementElements(element);
49027    if (element.hasNameElement()) {
49028      composeString("name", element.getNameElement());
49029    }
49030    if (element.hasTitleElement()) {
49031      composeString("title", element.getTitleElement());
49032    }
49033    if (element.hasAnchor()) { 
49034      for (StringType e : element.getAnchor()) 
49035          composeString("anchor", e);
49036    }
49037  }
49038
49039  protected void composeIngredient(String name, Ingredient element) throws IOException {
49040    if (element != null) {
49041    composeResourceAttributes(element);
49042      xml.enter(FHIR_NS, name);
49043      composeIngredientElements(element);
49044      composeElementClose(element);
49045      xml.exit(FHIR_NS, name);
49046    }
49047  }
49048
49049  protected void composeIngredientElements(Ingredient element) throws IOException {
49050    composeDomainResourceElements(element);
49051    if (element.hasIdentifier()) {
49052      composeIdentifier("identifier", element.getIdentifier());
49053    }
49054    if (element.hasStatusElement())
49055      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
49056    if (element.hasFor()) { 
49057      for (Reference e : element.getFor()) 
49058          composeReference("for", e);
49059    }
49060    if (element.hasRole()) {
49061      composeCodeableConcept("role", element.getRole());
49062    }
49063    if (element.hasFunction()) { 
49064      for (CodeableConcept e : element.getFunction()) 
49065          composeCodeableConcept("function", e);
49066    }
49067    if (element.hasGroup()) {
49068      composeCodeableConcept("group", element.getGroup());
49069    }
49070    if (element.hasAllergenicIndicatorElement()) {
49071      composeBoolean("allergenicIndicator", element.getAllergenicIndicatorElement());
49072    }
49073    if (element.hasCommentElement()) {
49074      composeMarkdown("comment", element.getCommentElement());
49075    }
49076    if (element.hasManufacturer()) { 
49077      for (Ingredient.IngredientManufacturerComponent e : element.getManufacturer()) 
49078          composeIngredientManufacturerComponent("manufacturer", e);
49079    }
49080    if (element.hasSubstance()) {
49081      composeIngredientSubstanceComponent("substance", element.getSubstance());
49082    }
49083  }
49084
49085  protected void composeIngredientManufacturerComponent(String name, Ingredient.IngredientManufacturerComponent element) throws IOException {
49086    if (element != null) {
49087    composeElementAttributes(element);
49088      xml.enter(FHIR_NS, name);
49089      composeIngredientManufacturerComponentElements(element);
49090      composeElementClose(element);
49091      xml.exit(FHIR_NS, name);
49092    }
49093  }
49094
49095  protected void composeIngredientManufacturerComponentElements(Ingredient.IngredientManufacturerComponent element) throws IOException {
49096    composeBackboneElementElements(element);
49097    if (element.hasRoleElement())
49098      composeEnumeration("role", element.getRoleElement(), new Ingredient.IngredientManufacturerRoleEnumFactory());
49099    if (element.hasManufacturer()) {
49100      composeReference("manufacturer", element.getManufacturer());
49101    }
49102  }
49103
49104  protected void composeIngredientSubstanceComponent(String name, Ingredient.IngredientSubstanceComponent element) throws IOException {
49105    if (element != null) {
49106    composeElementAttributes(element);
49107      xml.enter(FHIR_NS, name);
49108      composeIngredientSubstanceComponentElements(element);
49109      composeElementClose(element);
49110      xml.exit(FHIR_NS, name);
49111    }
49112  }
49113
49114  protected void composeIngredientSubstanceComponentElements(Ingredient.IngredientSubstanceComponent element) throws IOException {
49115    composeBackboneElementElements(element);
49116    if (element.hasCode()) {
49117      composeCodeableReference("code", element.getCode());
49118    }
49119    if (element.hasStrength()) { 
49120      for (Ingredient.IngredientSubstanceStrengthComponent e : element.getStrength()) 
49121          composeIngredientSubstanceStrengthComponent("strength", e);
49122    }
49123  }
49124
49125  protected void composeIngredientSubstanceStrengthComponent(String name, Ingredient.IngredientSubstanceStrengthComponent element) throws IOException {
49126    if (element != null) {
49127    composeElementAttributes(element);
49128      xml.enter(FHIR_NS, name);
49129      composeIngredientSubstanceStrengthComponentElements(element);
49130      composeElementClose(element);
49131      xml.exit(FHIR_NS, name);
49132    }
49133  }
49134
49135  protected void composeIngredientSubstanceStrengthComponentElements(Ingredient.IngredientSubstanceStrengthComponent element) throws IOException {
49136    composeBackboneElementElements(element);
49137    if (element.hasPresentation()) {
49138      composeType("presentation", element.getPresentation());
49139    }    if (element.hasTextPresentationElement()) {
49140      composeString("textPresentation", element.getTextPresentationElement());
49141    }
49142    if (element.hasConcentration()) {
49143      composeType("concentration", element.getConcentration());
49144    }    if (element.hasTextConcentrationElement()) {
49145      composeString("textConcentration", element.getTextConcentrationElement());
49146    }
49147    if (element.hasBasis()) {
49148      composeCodeableConcept("basis", element.getBasis());
49149    }
49150    if (element.hasMeasurementPointElement()) {
49151      composeString("measurementPoint", element.getMeasurementPointElement());
49152    }
49153    if (element.hasCountry()) { 
49154      for (CodeableConcept e : element.getCountry()) 
49155          composeCodeableConcept("country", e);
49156    }
49157    if (element.hasReferenceStrength()) { 
49158      for (Ingredient.IngredientSubstanceStrengthReferenceStrengthComponent e : element.getReferenceStrength()) 
49159          composeIngredientSubstanceStrengthReferenceStrengthComponent("referenceStrength", e);
49160    }
49161  }
49162
49163  protected void composeIngredientSubstanceStrengthReferenceStrengthComponent(String name, Ingredient.IngredientSubstanceStrengthReferenceStrengthComponent element) throws IOException {
49164    if (element != null) {
49165    composeElementAttributes(element);
49166      xml.enter(FHIR_NS, name);
49167      composeIngredientSubstanceStrengthReferenceStrengthComponentElements(element);
49168      composeElementClose(element);
49169      xml.exit(FHIR_NS, name);
49170    }
49171  }
49172
49173  protected void composeIngredientSubstanceStrengthReferenceStrengthComponentElements(Ingredient.IngredientSubstanceStrengthReferenceStrengthComponent element) throws IOException {
49174    composeBackboneElementElements(element);
49175    if (element.hasSubstance()) {
49176      composeCodeableReference("substance", element.getSubstance());
49177    }
49178    if (element.hasStrength()) {
49179      composeType("strength", element.getStrength());
49180    }    if (element.hasMeasurementPointElement()) {
49181      composeString("measurementPoint", element.getMeasurementPointElement());
49182    }
49183    if (element.hasCountry()) { 
49184      for (CodeableConcept e : element.getCountry()) 
49185          composeCodeableConcept("country", e);
49186    }
49187  }
49188
49189  protected void composeInsurancePlan(String name, InsurancePlan element) throws IOException {
49190    if (element != null) {
49191    composeResourceAttributes(element);
49192      xml.enter(FHIR_NS, name);
49193      composeInsurancePlanElements(element);
49194      composeElementClose(element);
49195      xml.exit(FHIR_NS, name);
49196    }
49197  }
49198
49199  protected void composeInsurancePlanElements(InsurancePlan element) throws IOException {
49200    composeDomainResourceElements(element);
49201    if (element.hasIdentifier()) { 
49202      for (Identifier e : element.getIdentifier()) 
49203          composeIdentifier("identifier", e);
49204    }
49205    if (element.hasStatusElement())
49206      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
49207    if (element.hasType()) { 
49208      for (CodeableConcept e : element.getType()) 
49209          composeCodeableConcept("type", e);
49210    }
49211    if (element.hasNameElement()) {
49212      composeString("name", element.getNameElement());
49213    }
49214    if (element.hasAlias()) { 
49215      for (StringType e : element.getAlias()) 
49216          composeString("alias", e);
49217    }
49218    if (element.hasPeriod()) {
49219      composePeriod("period", element.getPeriod());
49220    }
49221    if (element.hasOwnedBy()) {
49222      composeReference("ownedBy", element.getOwnedBy());
49223    }
49224    if (element.hasAdministeredBy()) {
49225      composeReference("administeredBy", element.getAdministeredBy());
49226    }
49227    if (element.hasCoverageArea()) { 
49228      for (Reference e : element.getCoverageArea()) 
49229          composeReference("coverageArea", e);
49230    }
49231    if (element.hasContact()) { 
49232      for (ExtendedContactDetail e : element.getContact()) 
49233          composeExtendedContactDetail("contact", e);
49234    }
49235    if (element.hasEndpoint()) { 
49236      for (Reference e : element.getEndpoint()) 
49237          composeReference("endpoint", e);
49238    }
49239    if (element.hasNetwork()) { 
49240      for (Reference e : element.getNetwork()) 
49241          composeReference("network", e);
49242    }
49243    if (element.hasCoverage()) { 
49244      for (InsurancePlan.InsurancePlanCoverageComponent e : element.getCoverage()) 
49245          composeInsurancePlanCoverageComponent("coverage", e);
49246    }
49247    if (element.hasPlan()) { 
49248      for (InsurancePlan.InsurancePlanPlanComponent e : element.getPlan()) 
49249          composeInsurancePlanPlanComponent("plan", e);
49250    }
49251  }
49252
49253  protected void composeInsurancePlanCoverageComponent(String name, InsurancePlan.InsurancePlanCoverageComponent element) throws IOException {
49254    if (element != null) {
49255    composeElementAttributes(element);
49256      xml.enter(FHIR_NS, name);
49257      composeInsurancePlanCoverageComponentElements(element);
49258      composeElementClose(element);
49259      xml.exit(FHIR_NS, name);
49260    }
49261  }
49262
49263  protected void composeInsurancePlanCoverageComponentElements(InsurancePlan.InsurancePlanCoverageComponent element) throws IOException {
49264    composeBackboneElementElements(element);
49265    if (element.hasType()) {
49266      composeCodeableConcept("type", element.getType());
49267    }
49268    if (element.hasNetwork()) { 
49269      for (Reference e : element.getNetwork()) 
49270          composeReference("network", e);
49271    }
49272    if (element.hasBenefit()) { 
49273      for (InsurancePlan.CoverageBenefitComponent e : element.getBenefit()) 
49274          composeInsurancePlanCoverageBenefitComponent("benefit", e);
49275    }
49276  }
49277
49278  protected void composeInsurancePlanCoverageBenefitComponent(String name, InsurancePlan.CoverageBenefitComponent element) throws IOException {
49279    if (element != null) {
49280    composeElementAttributes(element);
49281      xml.enter(FHIR_NS, name);
49282      composeInsurancePlanCoverageBenefitComponentElements(element);
49283      composeElementClose(element);
49284      xml.exit(FHIR_NS, name);
49285    }
49286  }
49287
49288  protected void composeInsurancePlanCoverageBenefitComponentElements(InsurancePlan.CoverageBenefitComponent element) throws IOException {
49289    composeBackboneElementElements(element);
49290    if (element.hasType()) {
49291      composeCodeableConcept("type", element.getType());
49292    }
49293    if (element.hasRequirementElement()) {
49294      composeString("requirement", element.getRequirementElement());
49295    }
49296    if (element.hasLimit()) { 
49297      for (InsurancePlan.CoverageBenefitLimitComponent e : element.getLimit()) 
49298          composeInsurancePlanCoverageBenefitLimitComponent("limit", e);
49299    }
49300  }
49301
49302  protected void composeInsurancePlanCoverageBenefitLimitComponent(String name, InsurancePlan.CoverageBenefitLimitComponent element) throws IOException {
49303    if (element != null) {
49304    composeElementAttributes(element);
49305      xml.enter(FHIR_NS, name);
49306      composeInsurancePlanCoverageBenefitLimitComponentElements(element);
49307      composeElementClose(element);
49308      xml.exit(FHIR_NS, name);
49309    }
49310  }
49311
49312  protected void composeInsurancePlanCoverageBenefitLimitComponentElements(InsurancePlan.CoverageBenefitLimitComponent element) throws IOException {
49313    composeBackboneElementElements(element);
49314    if (element.hasValue()) {
49315      composeQuantity("value", element.getValue());
49316    }
49317    if (element.hasCode()) {
49318      composeCodeableConcept("code", element.getCode());
49319    }
49320  }
49321
49322  protected void composeInsurancePlanPlanComponent(String name, InsurancePlan.InsurancePlanPlanComponent element) throws IOException {
49323    if (element != null) {
49324    composeElementAttributes(element);
49325      xml.enter(FHIR_NS, name);
49326      composeInsurancePlanPlanComponentElements(element);
49327      composeElementClose(element);
49328      xml.exit(FHIR_NS, name);
49329    }
49330  }
49331
49332  protected void composeInsurancePlanPlanComponentElements(InsurancePlan.InsurancePlanPlanComponent element) throws IOException {
49333    composeBackboneElementElements(element);
49334    if (element.hasIdentifier()) { 
49335      for (Identifier e : element.getIdentifier()) 
49336          composeIdentifier("identifier", e);
49337    }
49338    if (element.hasType()) {
49339      composeCodeableConcept("type", element.getType());
49340    }
49341    if (element.hasCoverageArea()) { 
49342      for (Reference e : element.getCoverageArea()) 
49343          composeReference("coverageArea", e);
49344    }
49345    if (element.hasNetwork()) { 
49346      for (Reference e : element.getNetwork()) 
49347          composeReference("network", e);
49348    }
49349    if (element.hasGeneralCost()) { 
49350      for (InsurancePlan.InsurancePlanPlanGeneralCostComponent e : element.getGeneralCost()) 
49351          composeInsurancePlanPlanGeneralCostComponent("generalCost", e);
49352    }
49353    if (element.hasSpecificCost()) { 
49354      for (InsurancePlan.InsurancePlanPlanSpecificCostComponent e : element.getSpecificCost()) 
49355          composeInsurancePlanPlanSpecificCostComponent("specificCost", e);
49356    }
49357  }
49358
49359  protected void composeInsurancePlanPlanGeneralCostComponent(String name, InsurancePlan.InsurancePlanPlanGeneralCostComponent element) throws IOException {
49360    if (element != null) {
49361    composeElementAttributes(element);
49362      xml.enter(FHIR_NS, name);
49363      composeInsurancePlanPlanGeneralCostComponentElements(element);
49364      composeElementClose(element);
49365      xml.exit(FHIR_NS, name);
49366    }
49367  }
49368
49369  protected void composeInsurancePlanPlanGeneralCostComponentElements(InsurancePlan.InsurancePlanPlanGeneralCostComponent element) throws IOException {
49370    composeBackboneElementElements(element);
49371    if (element.hasType()) {
49372      composeCodeableConcept("type", element.getType());
49373    }
49374    if (element.hasGroupSizeElement()) {
49375      composePositiveInt("groupSize", element.getGroupSizeElement());
49376    }
49377    if (element.hasCost()) {
49378      composeMoney("cost", element.getCost());
49379    }
49380    if (element.hasCommentElement()) {
49381      composeString("comment", element.getCommentElement());
49382    }
49383  }
49384
49385  protected void composeInsurancePlanPlanSpecificCostComponent(String name, InsurancePlan.InsurancePlanPlanSpecificCostComponent element) throws IOException {
49386    if (element != null) {
49387    composeElementAttributes(element);
49388      xml.enter(FHIR_NS, name);
49389      composeInsurancePlanPlanSpecificCostComponentElements(element);
49390      composeElementClose(element);
49391      xml.exit(FHIR_NS, name);
49392    }
49393  }
49394
49395  protected void composeInsurancePlanPlanSpecificCostComponentElements(InsurancePlan.InsurancePlanPlanSpecificCostComponent element) throws IOException {
49396    composeBackboneElementElements(element);
49397    if (element.hasCategory()) {
49398      composeCodeableConcept("category", element.getCategory());
49399    }
49400    if (element.hasBenefit()) { 
49401      for (InsurancePlan.PlanBenefitComponent e : element.getBenefit()) 
49402          composeInsurancePlanPlanBenefitComponent("benefit", e);
49403    }
49404  }
49405
49406  protected void composeInsurancePlanPlanBenefitComponent(String name, InsurancePlan.PlanBenefitComponent element) throws IOException {
49407    if (element != null) {
49408    composeElementAttributes(element);
49409      xml.enter(FHIR_NS, name);
49410      composeInsurancePlanPlanBenefitComponentElements(element);
49411      composeElementClose(element);
49412      xml.exit(FHIR_NS, name);
49413    }
49414  }
49415
49416  protected void composeInsurancePlanPlanBenefitComponentElements(InsurancePlan.PlanBenefitComponent element) throws IOException {
49417    composeBackboneElementElements(element);
49418    if (element.hasType()) {
49419      composeCodeableConcept("type", element.getType());
49420    }
49421    if (element.hasCost()) { 
49422      for (InsurancePlan.PlanBenefitCostComponent e : element.getCost()) 
49423          composeInsurancePlanPlanBenefitCostComponent("cost", e);
49424    }
49425  }
49426
49427  protected void composeInsurancePlanPlanBenefitCostComponent(String name, InsurancePlan.PlanBenefitCostComponent element) throws IOException {
49428    if (element != null) {
49429    composeElementAttributes(element);
49430      xml.enter(FHIR_NS, name);
49431      composeInsurancePlanPlanBenefitCostComponentElements(element);
49432      composeElementClose(element);
49433      xml.exit(FHIR_NS, name);
49434    }
49435  }
49436
49437  protected void composeInsurancePlanPlanBenefitCostComponentElements(InsurancePlan.PlanBenefitCostComponent element) throws IOException {
49438    composeBackboneElementElements(element);
49439    if (element.hasType()) {
49440      composeCodeableConcept("type", element.getType());
49441    }
49442    if (element.hasApplicability()) {
49443      composeCodeableConcept("applicability", element.getApplicability());
49444    }
49445    if (element.hasQualifiers()) { 
49446      for (CodeableConcept e : element.getQualifiers()) 
49447          composeCodeableConcept("qualifiers", e);
49448    }
49449    if (element.hasValue()) {
49450      composeQuantity("value", element.getValue());
49451    }
49452  }
49453
49454  protected void composeInventoryItem(String name, InventoryItem element) throws IOException {
49455    if (element != null) {
49456    composeResourceAttributes(element);
49457      xml.enter(FHIR_NS, name);
49458      composeInventoryItemElements(element);
49459      composeElementClose(element);
49460      xml.exit(FHIR_NS, name);
49461    }
49462  }
49463
49464  protected void composeInventoryItemElements(InventoryItem element) throws IOException {
49465    composeDomainResourceElements(element);
49466    if (element.hasIdentifier()) { 
49467      for (Identifier e : element.getIdentifier()) 
49468          composeIdentifier("identifier", e);
49469    }
49470    if (element.hasStatusElement())
49471      composeEnumeration("status", element.getStatusElement(), new InventoryItem.InventoryItemStatusCodesEnumFactory());
49472    if (element.hasCategory()) { 
49473      for (CodeableConcept e : element.getCategory()) 
49474          composeCodeableConcept("category", e);
49475    }
49476    if (element.hasCode()) { 
49477      for (CodeableConcept e : element.getCode()) 
49478          composeCodeableConcept("code", e);
49479    }
49480    if (element.hasName()) { 
49481      for (InventoryItem.InventoryItemNameComponent e : element.getName()) 
49482          composeInventoryItemNameComponent("name", e);
49483    }
49484    if (element.hasResponsibleOrganization()) { 
49485      for (InventoryItem.InventoryItemResponsibleOrganizationComponent e : element.getResponsibleOrganization()) 
49486          composeInventoryItemResponsibleOrganizationComponent("responsibleOrganization", e);
49487    }
49488    if (element.hasDescription()) {
49489      composeInventoryItemDescriptionComponent("description", element.getDescription());
49490    }
49491    if (element.hasInventoryStatus()) { 
49492      for (CodeableConcept e : element.getInventoryStatus()) 
49493          composeCodeableConcept("inventoryStatus", e);
49494    }
49495    if (element.hasBaseUnit()) {
49496      composeCodeableConcept("baseUnit", element.getBaseUnit());
49497    }
49498    if (element.hasNetContent()) {
49499      composeQuantity("netContent", element.getNetContent());
49500    }
49501    if (element.hasAssociation()) { 
49502      for (InventoryItem.InventoryItemAssociationComponent e : element.getAssociation()) 
49503          composeInventoryItemAssociationComponent("association", e);
49504    }
49505    if (element.hasCharacteristic()) { 
49506      for (InventoryItem.InventoryItemCharacteristicComponent e : element.getCharacteristic()) 
49507          composeInventoryItemCharacteristicComponent("characteristic", e);
49508    }
49509    if (element.hasInstance()) {
49510      composeInventoryItemInstanceComponent("instance", element.getInstance());
49511    }
49512    if (element.hasProductReference()) {
49513      composeReference("productReference", element.getProductReference());
49514    }
49515  }
49516
49517  protected void composeInventoryItemNameComponent(String name, InventoryItem.InventoryItemNameComponent element) throws IOException {
49518    if (element != null) {
49519    composeElementAttributes(element);
49520      xml.enter(FHIR_NS, name);
49521      composeInventoryItemNameComponentElements(element);
49522      composeElementClose(element);
49523      xml.exit(FHIR_NS, name);
49524    }
49525  }
49526
49527  protected void composeInventoryItemNameComponentElements(InventoryItem.InventoryItemNameComponent element) throws IOException {
49528    composeBackboneElementElements(element);
49529    if (element.hasNameType()) {
49530      composeCoding("nameType", element.getNameType());
49531    }
49532    if (element.hasLanguageElement())
49533      composeEnumeration("language", element.getLanguageElement(), new Enumerations.CommonLanguagesEnumFactory());
49534    if (element.hasNameElement()) {
49535      composeString("name", element.getNameElement());
49536    }
49537  }
49538
49539  protected void composeInventoryItemResponsibleOrganizationComponent(String name, InventoryItem.InventoryItemResponsibleOrganizationComponent element) throws IOException {
49540    if (element != null) {
49541    composeElementAttributes(element);
49542      xml.enter(FHIR_NS, name);
49543      composeInventoryItemResponsibleOrganizationComponentElements(element);
49544      composeElementClose(element);
49545      xml.exit(FHIR_NS, name);
49546    }
49547  }
49548
49549  protected void composeInventoryItemResponsibleOrganizationComponentElements(InventoryItem.InventoryItemResponsibleOrganizationComponent element) throws IOException {
49550    composeBackboneElementElements(element);
49551    if (element.hasRole()) {
49552      composeCodeableConcept("role", element.getRole());
49553    }
49554    if (element.hasOrganization()) {
49555      composeReference("organization", element.getOrganization());
49556    }
49557  }
49558
49559  protected void composeInventoryItemDescriptionComponent(String name, InventoryItem.InventoryItemDescriptionComponent element) throws IOException {
49560    if (element != null) {
49561    composeElementAttributes(element);
49562      xml.enter(FHIR_NS, name);
49563      composeInventoryItemDescriptionComponentElements(element);
49564      composeElementClose(element);
49565      xml.exit(FHIR_NS, name);
49566    }
49567  }
49568
49569  protected void composeInventoryItemDescriptionComponentElements(InventoryItem.InventoryItemDescriptionComponent element) throws IOException {
49570    composeBackboneElementElements(element);
49571    if (element.hasLanguageElement())
49572      composeEnumeration("language", element.getLanguageElement(), new Enumerations.CommonLanguagesEnumFactory());
49573    if (element.hasDescriptionElement()) {
49574      composeString("description", element.getDescriptionElement());
49575    }
49576  }
49577
49578  protected void composeInventoryItemAssociationComponent(String name, InventoryItem.InventoryItemAssociationComponent element) throws IOException {
49579    if (element != null) {
49580    composeElementAttributes(element);
49581      xml.enter(FHIR_NS, name);
49582      composeInventoryItemAssociationComponentElements(element);
49583      composeElementClose(element);
49584      xml.exit(FHIR_NS, name);
49585    }
49586  }
49587
49588  protected void composeInventoryItemAssociationComponentElements(InventoryItem.InventoryItemAssociationComponent element) throws IOException {
49589    composeBackboneElementElements(element);
49590    if (element.hasAssociationType()) {
49591      composeCodeableConcept("associationType", element.getAssociationType());
49592    }
49593    if (element.hasRelatedItem()) {
49594      composeReference("relatedItem", element.getRelatedItem());
49595    }
49596    if (element.hasQuantity()) {
49597      composeRatio("quantity", element.getQuantity());
49598    }
49599  }
49600
49601  protected void composeInventoryItemCharacteristicComponent(String name, InventoryItem.InventoryItemCharacteristicComponent element) throws IOException {
49602    if (element != null) {
49603    composeElementAttributes(element);
49604      xml.enter(FHIR_NS, name);
49605      composeInventoryItemCharacteristicComponentElements(element);
49606      composeElementClose(element);
49607      xml.exit(FHIR_NS, name);
49608    }
49609  }
49610
49611  protected void composeInventoryItemCharacteristicComponentElements(InventoryItem.InventoryItemCharacteristicComponent element) throws IOException {
49612    composeBackboneElementElements(element);
49613    if (element.hasCharacteristicType()) {
49614      composeCodeableConcept("characteristicType", element.getCharacteristicType());
49615    }
49616    if (element.hasValue()) {
49617      composeType("value", element.getValue());
49618    }  }
49619
49620  protected void composeInventoryItemInstanceComponent(String name, InventoryItem.InventoryItemInstanceComponent element) throws IOException {
49621    if (element != null) {
49622    composeElementAttributes(element);
49623      xml.enter(FHIR_NS, name);
49624      composeInventoryItemInstanceComponentElements(element);
49625      composeElementClose(element);
49626      xml.exit(FHIR_NS, name);
49627    }
49628  }
49629
49630  protected void composeInventoryItemInstanceComponentElements(InventoryItem.InventoryItemInstanceComponent element) throws IOException {
49631    composeBackboneElementElements(element);
49632    if (element.hasIdentifier()) { 
49633      for (Identifier e : element.getIdentifier()) 
49634          composeIdentifier("identifier", e);
49635    }
49636    if (element.hasLotNumberElement()) {
49637      composeString("lotNumber", element.getLotNumberElement());
49638    }
49639    if (element.hasExpiryElement()) {
49640      composeDateTime("expiry", element.getExpiryElement());
49641    }
49642    if (element.hasSubject()) {
49643      composeReference("subject", element.getSubject());
49644    }
49645    if (element.hasLocation()) {
49646      composeReference("location", element.getLocation());
49647    }
49648  }
49649
49650  protected void composeInventoryReport(String name, InventoryReport element) throws IOException {
49651    if (element != null) {
49652    composeResourceAttributes(element);
49653      xml.enter(FHIR_NS, name);
49654      composeInventoryReportElements(element);
49655      composeElementClose(element);
49656      xml.exit(FHIR_NS, name);
49657    }
49658  }
49659
49660  protected void composeInventoryReportElements(InventoryReport element) throws IOException {
49661    composeDomainResourceElements(element);
49662    if (element.hasIdentifier()) { 
49663      for (Identifier e : element.getIdentifier()) 
49664          composeIdentifier("identifier", e);
49665    }
49666    if (element.hasStatusElement())
49667      composeEnumeration("status", element.getStatusElement(), new InventoryReport.InventoryReportStatusEnumFactory());
49668    if (element.hasCountTypeElement())
49669      composeEnumeration("countType", element.getCountTypeElement(), new InventoryReport.InventoryCountTypeEnumFactory());
49670    if (element.hasOperationType()) {
49671      composeCodeableConcept("operationType", element.getOperationType());
49672    }
49673    if (element.hasOperationTypeReason()) {
49674      composeCodeableConcept("operationTypeReason", element.getOperationTypeReason());
49675    }
49676    if (element.hasReportedDateTimeElement()) {
49677      composeDateTime("reportedDateTime", element.getReportedDateTimeElement());
49678    }
49679    if (element.hasReporter()) {
49680      composeReference("reporter", element.getReporter());
49681    }
49682    if (element.hasReportingPeriod()) {
49683      composePeriod("reportingPeriod", element.getReportingPeriod());
49684    }
49685    if (element.hasInventoryListing()) { 
49686      for (InventoryReport.InventoryReportInventoryListingComponent e : element.getInventoryListing()) 
49687          composeInventoryReportInventoryListingComponent("inventoryListing", e);
49688    }
49689    if (element.hasNote()) { 
49690      for (Annotation e : element.getNote()) 
49691          composeAnnotation("note", e);
49692    }
49693  }
49694
49695  protected void composeInventoryReportInventoryListingComponent(String name, InventoryReport.InventoryReportInventoryListingComponent element) throws IOException {
49696    if (element != null) {
49697    composeElementAttributes(element);
49698      xml.enter(FHIR_NS, name);
49699      composeInventoryReportInventoryListingComponentElements(element);
49700      composeElementClose(element);
49701      xml.exit(FHIR_NS, name);
49702    }
49703  }
49704
49705  protected void composeInventoryReportInventoryListingComponentElements(InventoryReport.InventoryReportInventoryListingComponent element) throws IOException {
49706    composeBackboneElementElements(element);
49707    if (element.hasLocation()) {
49708      composeReference("location", element.getLocation());
49709    }
49710    if (element.hasItemStatus()) {
49711      composeCodeableConcept("itemStatus", element.getItemStatus());
49712    }
49713    if (element.hasCountingDateTimeElement()) {
49714      composeDateTime("countingDateTime", element.getCountingDateTimeElement());
49715    }
49716    if (element.hasItem()) { 
49717      for (InventoryReport.InventoryReportInventoryListingItemComponent e : element.getItem()) 
49718          composeInventoryReportInventoryListingItemComponent("item", e);
49719    }
49720  }
49721
49722  protected void composeInventoryReportInventoryListingItemComponent(String name, InventoryReport.InventoryReportInventoryListingItemComponent element) throws IOException {
49723    if (element != null) {
49724    composeElementAttributes(element);
49725      xml.enter(FHIR_NS, name);
49726      composeInventoryReportInventoryListingItemComponentElements(element);
49727      composeElementClose(element);
49728      xml.exit(FHIR_NS, name);
49729    }
49730  }
49731
49732  protected void composeInventoryReportInventoryListingItemComponentElements(InventoryReport.InventoryReportInventoryListingItemComponent element) throws IOException {
49733    composeBackboneElementElements(element);
49734    if (element.hasCategory()) {
49735      composeCodeableConcept("category", element.getCategory());
49736    }
49737    if (element.hasQuantity()) {
49738      composeQuantity("quantity", element.getQuantity());
49739    }
49740    if (element.hasItem()) {
49741      composeCodeableReference("item", element.getItem());
49742    }
49743  }
49744
49745  protected void composeInvoice(String name, Invoice element) throws IOException {
49746    if (element != null) {
49747    composeResourceAttributes(element);
49748      xml.enter(FHIR_NS, name);
49749      composeInvoiceElements(element);
49750      composeElementClose(element);
49751      xml.exit(FHIR_NS, name);
49752    }
49753  }
49754
49755  protected void composeInvoiceElements(Invoice element) throws IOException {
49756    composeDomainResourceElements(element);
49757    if (element.hasIdentifier()) { 
49758      for (Identifier e : element.getIdentifier()) 
49759          composeIdentifier("identifier", e);
49760    }
49761    if (element.hasStatusElement())
49762      composeEnumeration("status", element.getStatusElement(), new Invoice.InvoiceStatusEnumFactory());
49763    if (element.hasCancelledReasonElement()) {
49764      composeString("cancelledReason", element.getCancelledReasonElement());
49765    }
49766    if (element.hasType()) {
49767      composeCodeableConcept("type", element.getType());
49768    }
49769    if (element.hasSubject()) {
49770      composeReference("subject", element.getSubject());
49771    }
49772    if (element.hasRecipient()) {
49773      composeReference("recipient", element.getRecipient());
49774    }
49775    if (element.hasDateElement()) {
49776      composeDateTime("date", element.getDateElement());
49777    }
49778    if (element.hasCreationElement()) {
49779      composeDateTime("creation", element.getCreationElement());
49780    }
49781    if (element.hasPeriod()) {
49782      composeType("period", element.getPeriod());
49783    }    if (element.hasParticipant()) { 
49784      for (Invoice.InvoiceParticipantComponent e : element.getParticipant()) 
49785          composeInvoiceParticipantComponent("participant", e);
49786    }
49787    if (element.hasIssuer()) {
49788      composeReference("issuer", element.getIssuer());
49789    }
49790    if (element.hasAccount()) {
49791      composeReference("account", element.getAccount());
49792    }
49793    if (element.hasLineItem()) { 
49794      for (Invoice.InvoiceLineItemComponent e : element.getLineItem()) 
49795          composeInvoiceLineItemComponent("lineItem", e);
49796    }
49797    if (element.hasTotalPriceComponent()) { 
49798      for (MonetaryComponent e : element.getTotalPriceComponent()) 
49799          composeMonetaryComponent("totalPriceComponent", e);
49800    }
49801    if (element.hasTotalNet()) {
49802      composeMoney("totalNet", element.getTotalNet());
49803    }
49804    if (element.hasTotalGross()) {
49805      composeMoney("totalGross", element.getTotalGross());
49806    }
49807    if (element.hasPaymentTermsElement()) {
49808      composeMarkdown("paymentTerms", element.getPaymentTermsElement());
49809    }
49810    if (element.hasNote()) { 
49811      for (Annotation e : element.getNote()) 
49812          composeAnnotation("note", e);
49813    }
49814  }
49815
49816  protected void composeInvoiceParticipantComponent(String name, Invoice.InvoiceParticipantComponent element) throws IOException {
49817    if (element != null) {
49818    composeElementAttributes(element);
49819      xml.enter(FHIR_NS, name);
49820      composeInvoiceParticipantComponentElements(element);
49821      composeElementClose(element);
49822      xml.exit(FHIR_NS, name);
49823    }
49824  }
49825
49826  protected void composeInvoiceParticipantComponentElements(Invoice.InvoiceParticipantComponent element) throws IOException {
49827    composeBackboneElementElements(element);
49828    if (element.hasRole()) {
49829      composeCodeableConcept("role", element.getRole());
49830    }
49831    if (element.hasActor()) {
49832      composeReference("actor", element.getActor());
49833    }
49834  }
49835
49836  protected void composeInvoiceLineItemComponent(String name, Invoice.InvoiceLineItemComponent element) throws IOException {
49837    if (element != null) {
49838    composeElementAttributes(element);
49839      xml.enter(FHIR_NS, name);
49840      composeInvoiceLineItemComponentElements(element);
49841      composeElementClose(element);
49842      xml.exit(FHIR_NS, name);
49843    }
49844  }
49845
49846  protected void composeInvoiceLineItemComponentElements(Invoice.InvoiceLineItemComponent element) throws IOException {
49847    composeBackboneElementElements(element);
49848    if (element.hasSequenceElement()) {
49849      composePositiveInt("sequence", element.getSequenceElement());
49850    }
49851    if (element.hasServiced()) {
49852      composeType("serviced", element.getServiced());
49853    }    if (element.hasChargeItem()) {
49854      composeType("chargeItem", element.getChargeItem());
49855    }    if (element.hasPriceComponent()) { 
49856      for (MonetaryComponent e : element.getPriceComponent()) 
49857          composeMonetaryComponent("priceComponent", e);
49858    }
49859  }
49860
49861  protected void composeLibrary(String name, Library element) throws IOException {
49862    if (element != null) {
49863    composeResourceAttributes(element);
49864      xml.enter(FHIR_NS, name);
49865      composeLibraryElements(element);
49866      composeElementClose(element);
49867      xml.exit(FHIR_NS, name);
49868    }
49869  }
49870
49871  protected void composeLibraryElements(Library element) throws IOException {
49872    composeMetadataResourceElements(element);
49873    if (element.hasUrlElement()) {
49874      composeUri("url", element.getUrlElement());
49875    }
49876    if (element.hasIdentifier()) { 
49877      for (Identifier e : element.getIdentifier()) 
49878          composeIdentifier("identifier", e);
49879    }
49880    if (element.hasVersionElement()) {
49881      composeString("version", element.getVersionElement());
49882    }
49883    if (element.hasVersionAlgorithm()) {
49884      composeType("versionAlgorithm", element.getVersionAlgorithm());
49885    }    if (element.hasNameElement()) {
49886      composeString("name", element.getNameElement());
49887    }
49888    if (element.hasTitleElement()) {
49889      composeString("title", element.getTitleElement());
49890    }
49891    if (element.hasSubtitleElement()) {
49892      composeString("subtitle", element.getSubtitleElement());
49893    }
49894    if (element.hasStatusElement())
49895      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
49896    if (element.hasExperimentalElement()) {
49897      composeBoolean("experimental", element.getExperimentalElement());
49898    }
49899    if (element.hasType()) {
49900      composeCodeableConcept("type", element.getType());
49901    }
49902    if (element.hasSubject()) {
49903      composeType("subject", element.getSubject());
49904    }    if (element.hasDateElement()) {
49905      composeDateTime("date", element.getDateElement());
49906    }
49907    if (element.hasPublisherElement()) {
49908      composeString("publisher", element.getPublisherElement());
49909    }
49910    if (element.hasContact()) { 
49911      for (ContactDetail e : element.getContact()) 
49912          composeContactDetail("contact", e);
49913    }
49914    if (element.hasDescriptionElement()) {
49915      composeMarkdown("description", element.getDescriptionElement());
49916    }
49917    if (element.hasUseContext()) { 
49918      for (UsageContext e : element.getUseContext()) 
49919          composeUsageContext("useContext", e);
49920    }
49921    if (element.hasJurisdiction()) { 
49922      for (CodeableConcept e : element.getJurisdiction()) 
49923          composeCodeableConcept("jurisdiction", e);
49924    }
49925    if (element.hasPurposeElement()) {
49926      composeMarkdown("purpose", element.getPurposeElement());
49927    }
49928    if (element.hasUsageElement()) {
49929      composeMarkdown("usage", element.getUsageElement());
49930    }
49931    if (element.hasCopyrightElement()) {
49932      composeMarkdown("copyright", element.getCopyrightElement());
49933    }
49934    if (element.hasCopyrightLabelElement()) {
49935      composeString("copyrightLabel", element.getCopyrightLabelElement());
49936    }
49937    if (element.hasApprovalDateElement()) {
49938      composeDate("approvalDate", element.getApprovalDateElement());
49939    }
49940    if (element.hasLastReviewDateElement()) {
49941      composeDate("lastReviewDate", element.getLastReviewDateElement());
49942    }
49943    if (element.hasEffectivePeriod()) {
49944      composePeriod("effectivePeriod", element.getEffectivePeriod());
49945    }
49946    if (element.hasTopic()) { 
49947      for (CodeableConcept e : element.getTopic()) 
49948          composeCodeableConcept("topic", e);
49949    }
49950    if (element.hasAuthor()) { 
49951      for (ContactDetail e : element.getAuthor()) 
49952          composeContactDetail("author", e);
49953    }
49954    if (element.hasEditor()) { 
49955      for (ContactDetail e : element.getEditor()) 
49956          composeContactDetail("editor", e);
49957    }
49958    if (element.hasReviewer()) { 
49959      for (ContactDetail e : element.getReviewer()) 
49960          composeContactDetail("reviewer", e);
49961    }
49962    if (element.hasEndorser()) { 
49963      for (ContactDetail e : element.getEndorser()) 
49964          composeContactDetail("endorser", e);
49965    }
49966    if (element.hasRelatedArtifact()) { 
49967      for (RelatedArtifact e : element.getRelatedArtifact()) 
49968          composeRelatedArtifact("relatedArtifact", e);
49969    }
49970    if (element.hasParameter()) { 
49971      for (ParameterDefinition e : element.getParameter()) 
49972          composeParameterDefinition("parameter", e);
49973    }
49974    if (element.hasDataRequirement()) { 
49975      for (DataRequirement e : element.getDataRequirement()) 
49976          composeDataRequirement("dataRequirement", e);
49977    }
49978    if (element.hasContent()) { 
49979      for (Attachment e : element.getContent()) 
49980          composeAttachment("content", e);
49981    }
49982  }
49983
49984  protected void composeLinkage(String name, Linkage element) throws IOException {
49985    if (element != null) {
49986    composeResourceAttributes(element);
49987      xml.enter(FHIR_NS, name);
49988      composeLinkageElements(element);
49989      composeElementClose(element);
49990      xml.exit(FHIR_NS, name);
49991    }
49992  }
49993
49994  protected void composeLinkageElements(Linkage element) throws IOException {
49995    composeDomainResourceElements(element);
49996    if (element.hasActiveElement()) {
49997      composeBoolean("active", element.getActiveElement());
49998    }
49999    if (element.hasAuthor()) {
50000      composeReference("author", element.getAuthor());
50001    }
50002    if (element.hasItem()) { 
50003      for (Linkage.LinkageItemComponent e : element.getItem()) 
50004          composeLinkageItemComponent("item", e);
50005    }
50006  }
50007
50008  protected void composeLinkageItemComponent(String name, Linkage.LinkageItemComponent element) throws IOException {
50009    if (element != null) {
50010    composeElementAttributes(element);
50011      xml.enter(FHIR_NS, name);
50012      composeLinkageItemComponentElements(element);
50013      composeElementClose(element);
50014      xml.exit(FHIR_NS, name);
50015    }
50016  }
50017
50018  protected void composeLinkageItemComponentElements(Linkage.LinkageItemComponent element) throws IOException {
50019    composeBackboneElementElements(element);
50020    if (element.hasTypeElement())
50021      composeEnumeration("type", element.getTypeElement(), new Linkage.LinkageTypeEnumFactory());
50022    if (element.hasResource()) {
50023      composeReference("resource", element.getResource());
50024    }
50025  }
50026
50027  protected void composeListResource(String name, ListResource element) throws IOException {
50028    if (element != null) {
50029    composeResourceAttributes(element);
50030      xml.enter(FHIR_NS, name);
50031      composeListResourceElements(element);
50032      composeElementClose(element);
50033      xml.exit(FHIR_NS, name);
50034    }
50035  }
50036
50037  protected void composeListResourceElements(ListResource element) throws IOException {
50038    composeDomainResourceElements(element);
50039    if (element.hasIdentifier()) { 
50040      for (Identifier e : element.getIdentifier()) 
50041          composeIdentifier("identifier", e);
50042    }
50043    if (element.hasStatusElement())
50044      composeEnumeration("status", element.getStatusElement(), new ListResource.ListStatusEnumFactory());
50045    if (element.hasModeElement())
50046      composeEnumeration("mode", element.getModeElement(), new Enumerations.ListModeEnumFactory());
50047    if (element.hasTitleElement()) {
50048      composeString("title", element.getTitleElement());
50049    }
50050    if (element.hasCode()) {
50051      composeCodeableConcept("code", element.getCode());
50052    }
50053    if (element.hasSubject()) { 
50054      for (Reference e : element.getSubject()) 
50055          composeReference("subject", e);
50056    }
50057    if (element.hasEncounter()) {
50058      composeReference("encounter", element.getEncounter());
50059    }
50060    if (element.hasDateElement()) {
50061      composeDateTime("date", element.getDateElement());
50062    }
50063    if (element.hasSource()) {
50064      composeReference("source", element.getSource());
50065    }
50066    if (element.hasOrderedBy()) {
50067      composeCodeableConcept("orderedBy", element.getOrderedBy());
50068    }
50069    if (element.hasNote()) { 
50070      for (Annotation e : element.getNote()) 
50071          composeAnnotation("note", e);
50072    }
50073    if (element.hasEntry()) { 
50074      for (ListResource.ListResourceEntryComponent e : element.getEntry()) 
50075          composeListResourceEntryComponent("entry", e);
50076    }
50077    if (element.hasEmptyReason()) {
50078      composeCodeableConcept("emptyReason", element.getEmptyReason());
50079    }
50080  }
50081
50082  protected void composeListResourceEntryComponent(String name, ListResource.ListResourceEntryComponent element) throws IOException {
50083    if (element != null) {
50084    composeElementAttributes(element);
50085      xml.enter(FHIR_NS, name);
50086      composeListResourceEntryComponentElements(element);
50087      composeElementClose(element);
50088      xml.exit(FHIR_NS, name);
50089    }
50090  }
50091
50092  protected void composeListResourceEntryComponentElements(ListResource.ListResourceEntryComponent element) throws IOException {
50093    composeBackboneElementElements(element);
50094    if (element.hasFlag()) {
50095      composeCodeableConcept("flag", element.getFlag());
50096    }
50097    if (element.hasDeletedElement()) {
50098      composeBoolean("deleted", element.getDeletedElement());
50099    }
50100    if (element.hasDateElement()) {
50101      composeDateTime("date", element.getDateElement());
50102    }
50103    if (element.hasItem()) {
50104      composeReference("item", element.getItem());
50105    }
50106  }
50107
50108  protected void composeLocation(String name, Location element) throws IOException {
50109    if (element != null) {
50110    composeResourceAttributes(element);
50111      xml.enter(FHIR_NS, name);
50112      composeLocationElements(element);
50113      composeElementClose(element);
50114      xml.exit(FHIR_NS, name);
50115    }
50116  }
50117
50118  protected void composeLocationElements(Location element) throws IOException {
50119    composeDomainResourceElements(element);
50120    if (element.hasIdentifier()) { 
50121      for (Identifier e : element.getIdentifier()) 
50122          composeIdentifier("identifier", e);
50123    }
50124    if (element.hasStatusElement())
50125      composeEnumeration("status", element.getStatusElement(), new Location.LocationStatusEnumFactory());
50126    if (element.hasOperationalStatus()) {
50127      composeCoding("operationalStatus", element.getOperationalStatus());
50128    }
50129    if (element.hasNameElement()) {
50130      composeString("name", element.getNameElement());
50131    }
50132    if (element.hasAlias()) { 
50133      for (StringType e : element.getAlias()) 
50134          composeString("alias", e);
50135    }
50136    if (element.hasDescriptionElement()) {
50137      composeMarkdown("description", element.getDescriptionElement());
50138    }
50139    if (element.hasModeElement())
50140      composeEnumeration("mode", element.getModeElement(), new Location.LocationModeEnumFactory());
50141    if (element.hasType()) { 
50142      for (CodeableConcept e : element.getType()) 
50143          composeCodeableConcept("type", e);
50144    }
50145    if (element.hasContact()) { 
50146      for (ExtendedContactDetail e : element.getContact()) 
50147          composeExtendedContactDetail("contact", e);
50148    }
50149    if (element.hasAddress()) {
50150      composeAddress("address", element.getAddress());
50151    }
50152    if (element.hasForm()) {
50153      composeCodeableConcept("form", element.getForm());
50154    }
50155    if (element.hasPosition()) {
50156      composeLocationPositionComponent("position", element.getPosition());
50157    }
50158    if (element.hasManagingOrganization()) {
50159      composeReference("managingOrganization", element.getManagingOrganization());
50160    }
50161    if (element.hasPartOf()) {
50162      composeReference("partOf", element.getPartOf());
50163    }
50164    if (element.hasCharacteristic()) { 
50165      for (CodeableConcept e : element.getCharacteristic()) 
50166          composeCodeableConcept("characteristic", e);
50167    }
50168    if (element.hasHoursOfOperation()) { 
50169      for (Availability e : element.getHoursOfOperation()) 
50170          composeAvailability("hoursOfOperation", e);
50171    }
50172    if (element.hasVirtualService()) { 
50173      for (VirtualServiceDetail e : element.getVirtualService()) 
50174          composeVirtualServiceDetail("virtualService", e);
50175    }
50176    if (element.hasEndpoint()) { 
50177      for (Reference e : element.getEndpoint()) 
50178          composeReference("endpoint", e);
50179    }
50180  }
50181
50182  protected void composeLocationPositionComponent(String name, Location.LocationPositionComponent element) throws IOException {
50183    if (element != null) {
50184    composeElementAttributes(element);
50185      xml.enter(FHIR_NS, name);
50186      composeLocationPositionComponentElements(element);
50187      composeElementClose(element);
50188      xml.exit(FHIR_NS, name);
50189    }
50190  }
50191
50192  protected void composeLocationPositionComponentElements(Location.LocationPositionComponent element) throws IOException {
50193    composeBackboneElementElements(element);
50194    if (element.hasLongitudeElement()) {
50195      composeDecimal("longitude", element.getLongitudeElement());
50196    }
50197    if (element.hasLatitudeElement()) {
50198      composeDecimal("latitude", element.getLatitudeElement());
50199    }
50200    if (element.hasAltitudeElement()) {
50201      composeDecimal("altitude", element.getAltitudeElement());
50202    }
50203  }
50204
50205  protected void composeManufacturedItemDefinition(String name, ManufacturedItemDefinition element) throws IOException {
50206    if (element != null) {
50207    composeResourceAttributes(element);
50208      xml.enter(FHIR_NS, name);
50209      composeManufacturedItemDefinitionElements(element);
50210      composeElementClose(element);
50211      xml.exit(FHIR_NS, name);
50212    }
50213  }
50214
50215  protected void composeManufacturedItemDefinitionElements(ManufacturedItemDefinition element) throws IOException {
50216    composeDomainResourceElements(element);
50217    if (element.hasIdentifier()) { 
50218      for (Identifier e : element.getIdentifier()) 
50219          composeIdentifier("identifier", e);
50220    }
50221    if (element.hasStatusElement())
50222      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
50223    if (element.hasNameElement()) {
50224      composeString("name", element.getNameElement());
50225    }
50226    if (element.hasManufacturedDoseForm()) {
50227      composeCodeableConcept("manufacturedDoseForm", element.getManufacturedDoseForm());
50228    }
50229    if (element.hasUnitOfPresentation()) {
50230      composeCodeableConcept("unitOfPresentation", element.getUnitOfPresentation());
50231    }
50232    if (element.hasManufacturer()) { 
50233      for (Reference e : element.getManufacturer()) 
50234          composeReference("manufacturer", e);
50235    }
50236    if (element.hasMarketingStatus()) { 
50237      for (MarketingStatus e : element.getMarketingStatus()) 
50238          composeMarketingStatus("marketingStatus", e);
50239    }
50240    if (element.hasIngredient()) { 
50241      for (CodeableConcept e : element.getIngredient()) 
50242          composeCodeableConcept("ingredient", e);
50243    }
50244    if (element.hasProperty()) { 
50245      for (ManufacturedItemDefinition.ManufacturedItemDefinitionPropertyComponent e : element.getProperty()) 
50246          composeManufacturedItemDefinitionPropertyComponent("property", e);
50247    }
50248    if (element.hasComponent()) { 
50249      for (ManufacturedItemDefinition.ManufacturedItemDefinitionComponentComponent e : element.getComponent()) 
50250          composeManufacturedItemDefinitionComponentComponent("component", e);
50251    }
50252  }
50253
50254  protected void composeManufacturedItemDefinitionPropertyComponent(String name, ManufacturedItemDefinition.ManufacturedItemDefinitionPropertyComponent element) throws IOException {
50255    if (element != null) {
50256    composeElementAttributes(element);
50257      xml.enter(FHIR_NS, name);
50258      composeManufacturedItemDefinitionPropertyComponentElements(element);
50259      composeElementClose(element);
50260      xml.exit(FHIR_NS, name);
50261    }
50262  }
50263
50264  protected void composeManufacturedItemDefinitionPropertyComponentElements(ManufacturedItemDefinition.ManufacturedItemDefinitionPropertyComponent element) throws IOException {
50265    composeBackboneElementElements(element);
50266    if (element.hasType()) {
50267      composeCodeableConcept("type", element.getType());
50268    }
50269    if (element.hasValue()) {
50270      composeType("value", element.getValue());
50271    }  }
50272
50273  protected void composeManufacturedItemDefinitionComponentComponent(String name, ManufacturedItemDefinition.ManufacturedItemDefinitionComponentComponent element) throws IOException {
50274    if (element != null) {
50275    composeElementAttributes(element);
50276      xml.enter(FHIR_NS, name);
50277      composeManufacturedItemDefinitionComponentComponentElements(element);
50278      composeElementClose(element);
50279      xml.exit(FHIR_NS, name);
50280    }
50281  }
50282
50283  protected void composeManufacturedItemDefinitionComponentComponentElements(ManufacturedItemDefinition.ManufacturedItemDefinitionComponentComponent element) throws IOException {
50284    composeBackboneElementElements(element);
50285    if (element.hasType()) {
50286      composeCodeableConcept("type", element.getType());
50287    }
50288    if (element.hasFunction()) { 
50289      for (CodeableConcept e : element.getFunction()) 
50290          composeCodeableConcept("function", e);
50291    }
50292    if (element.hasAmount()) { 
50293      for (Quantity e : element.getAmount()) 
50294          composeQuantity("amount", e);
50295    }
50296    if (element.hasConstituent()) { 
50297      for (ManufacturedItemDefinition.ManufacturedItemDefinitionComponentConstituentComponent e : element.getConstituent()) 
50298          composeManufacturedItemDefinitionComponentConstituentComponent("constituent", e);
50299    }
50300    if (element.hasProperty()) { 
50301      for (ManufacturedItemDefinition.ManufacturedItemDefinitionPropertyComponent e : element.getProperty()) 
50302          composeManufacturedItemDefinitionPropertyComponent("property", e);
50303    }
50304    if (element.hasComponent()) { 
50305      for (ManufacturedItemDefinition.ManufacturedItemDefinitionComponentComponent e : element.getComponent()) 
50306          composeManufacturedItemDefinitionComponentComponent("component", e);
50307    }
50308  }
50309
50310  protected void composeManufacturedItemDefinitionComponentConstituentComponent(String name, ManufacturedItemDefinition.ManufacturedItemDefinitionComponentConstituentComponent element) throws IOException {
50311    if (element != null) {
50312    composeElementAttributes(element);
50313      xml.enter(FHIR_NS, name);
50314      composeManufacturedItemDefinitionComponentConstituentComponentElements(element);
50315      composeElementClose(element);
50316      xml.exit(FHIR_NS, name);
50317    }
50318  }
50319
50320  protected void composeManufacturedItemDefinitionComponentConstituentComponentElements(ManufacturedItemDefinition.ManufacturedItemDefinitionComponentConstituentComponent element) throws IOException {
50321    composeBackboneElementElements(element);
50322    if (element.hasAmount()) { 
50323      for (Quantity e : element.getAmount()) 
50324          composeQuantity("amount", e);
50325    }
50326    if (element.hasLocation()) { 
50327      for (CodeableConcept e : element.getLocation()) 
50328          composeCodeableConcept("location", e);
50329    }
50330    if (element.hasFunction()) { 
50331      for (CodeableConcept e : element.getFunction()) 
50332          composeCodeableConcept("function", e);
50333    }
50334    if (element.hasHasIngredient()) { 
50335      for (CodeableReference e : element.getHasIngredient()) 
50336          composeCodeableReference("hasIngredient", e);
50337    }
50338  }
50339
50340  protected void composeMeasure(String name, Measure element) throws IOException {
50341    if (element != null) {
50342    composeResourceAttributes(element);
50343      xml.enter(FHIR_NS, name);
50344      composeMeasureElements(element);
50345      composeElementClose(element);
50346      xml.exit(FHIR_NS, name);
50347    }
50348  }
50349
50350  protected void composeMeasureElements(Measure element) throws IOException {
50351    composeMetadataResourceElements(element);
50352    if (element.hasUrlElement()) {
50353      composeUri("url", element.getUrlElement());
50354    }
50355    if (element.hasIdentifier()) { 
50356      for (Identifier e : element.getIdentifier()) 
50357          composeIdentifier("identifier", e);
50358    }
50359    if (element.hasVersionElement()) {
50360      composeString("version", element.getVersionElement());
50361    }
50362    if (element.hasVersionAlgorithm()) {
50363      composeType("versionAlgorithm", element.getVersionAlgorithm());
50364    }    if (element.hasNameElement()) {
50365      composeString("name", element.getNameElement());
50366    }
50367    if (element.hasTitleElement()) {
50368      composeString("title", element.getTitleElement());
50369    }
50370    if (element.hasSubtitleElement()) {
50371      composeString("subtitle", element.getSubtitleElement());
50372    }
50373    if (element.hasStatusElement())
50374      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
50375    if (element.hasExperimentalElement()) {
50376      composeBoolean("experimental", element.getExperimentalElement());
50377    }
50378    if (element.hasSubject()) {
50379      composeType("subject", element.getSubject());
50380    }    if (element.hasBasisElement())
50381      composeEnumeration("basis", element.getBasisElement(), new Enumerations.FHIRTypesEnumFactory());
50382    if (element.hasDateElement()) {
50383      composeDateTime("date", element.getDateElement());
50384    }
50385    if (element.hasPublisherElement()) {
50386      composeString("publisher", element.getPublisherElement());
50387    }
50388    if (element.hasContact()) { 
50389      for (ContactDetail e : element.getContact()) 
50390          composeContactDetail("contact", e);
50391    }
50392    if (element.hasDescriptionElement()) {
50393      composeMarkdown("description", element.getDescriptionElement());
50394    }
50395    if (element.hasUseContext()) { 
50396      for (UsageContext e : element.getUseContext()) 
50397          composeUsageContext("useContext", e);
50398    }
50399    if (element.hasJurisdiction()) { 
50400      for (CodeableConcept e : element.getJurisdiction()) 
50401          composeCodeableConcept("jurisdiction", e);
50402    }
50403    if (element.hasPurposeElement()) {
50404      composeMarkdown("purpose", element.getPurposeElement());
50405    }
50406    if (element.hasUsageElement()) {
50407      composeMarkdown("usage", element.getUsageElement());
50408    }
50409    if (element.hasCopyrightElement()) {
50410      composeMarkdown("copyright", element.getCopyrightElement());
50411    }
50412    if (element.hasCopyrightLabelElement()) {
50413      composeString("copyrightLabel", element.getCopyrightLabelElement());
50414    }
50415    if (element.hasApprovalDateElement()) {
50416      composeDate("approvalDate", element.getApprovalDateElement());
50417    }
50418    if (element.hasLastReviewDateElement()) {
50419      composeDate("lastReviewDate", element.getLastReviewDateElement());
50420    }
50421    if (element.hasEffectivePeriod()) {
50422      composePeriod("effectivePeriod", element.getEffectivePeriod());
50423    }
50424    if (element.hasTopic()) { 
50425      for (CodeableConcept e : element.getTopic()) 
50426          composeCodeableConcept("topic", e);
50427    }
50428    if (element.hasAuthor()) { 
50429      for (ContactDetail e : element.getAuthor()) 
50430          composeContactDetail("author", e);
50431    }
50432    if (element.hasEditor()) { 
50433      for (ContactDetail e : element.getEditor()) 
50434          composeContactDetail("editor", e);
50435    }
50436    if (element.hasReviewer()) { 
50437      for (ContactDetail e : element.getReviewer()) 
50438          composeContactDetail("reviewer", e);
50439    }
50440    if (element.hasEndorser()) { 
50441      for (ContactDetail e : element.getEndorser()) 
50442          composeContactDetail("endorser", e);
50443    }
50444    if (element.hasRelatedArtifact()) { 
50445      for (RelatedArtifact e : element.getRelatedArtifact()) 
50446          composeRelatedArtifact("relatedArtifact", e);
50447    }
50448    if (element.hasLibrary()) { 
50449      for (CanonicalType e : element.getLibrary()) 
50450          composeCanonical("library", e);
50451    }
50452    if (element.hasDisclaimerElement()) {
50453      composeMarkdown("disclaimer", element.getDisclaimerElement());
50454    }
50455    if (element.hasScoring()) {
50456      composeCodeableConcept("scoring", element.getScoring());
50457    }
50458    if (element.hasScoringUnit()) {
50459      composeCodeableConcept("scoringUnit", element.getScoringUnit());
50460    }
50461    if (element.hasCompositeScoring()) {
50462      composeCodeableConcept("compositeScoring", element.getCompositeScoring());
50463    }
50464    if (element.hasType()) { 
50465      for (CodeableConcept e : element.getType()) 
50466          composeCodeableConcept("type", e);
50467    }
50468    if (element.hasRiskAdjustmentElement()) {
50469      composeMarkdown("riskAdjustment", element.getRiskAdjustmentElement());
50470    }
50471    if (element.hasRateAggregationElement()) {
50472      composeMarkdown("rateAggregation", element.getRateAggregationElement());
50473    }
50474    if (element.hasRationaleElement()) {
50475      composeMarkdown("rationale", element.getRationaleElement());
50476    }
50477    if (element.hasClinicalRecommendationStatementElement()) {
50478      composeMarkdown("clinicalRecommendationStatement", element.getClinicalRecommendationStatementElement());
50479    }
50480    if (element.hasImprovementNotation()) {
50481      composeCodeableConcept("improvementNotation", element.getImprovementNotation());
50482    }
50483    if (element.hasTerm()) { 
50484      for (Measure.MeasureTermComponent e : element.getTerm()) 
50485          composeMeasureTermComponent("term", e);
50486    }
50487    if (element.hasGuidanceElement()) {
50488      composeMarkdown("guidance", element.getGuidanceElement());
50489    }
50490    if (element.hasGroup()) { 
50491      for (Measure.MeasureGroupComponent e : element.getGroup()) 
50492          composeMeasureGroupComponent("group", e);
50493    }
50494    if (element.hasSupplementalData()) { 
50495      for (Measure.MeasureSupplementalDataComponent e : element.getSupplementalData()) 
50496          composeMeasureSupplementalDataComponent("supplementalData", e);
50497    }
50498  }
50499
50500  protected void composeMeasureTermComponent(String name, Measure.MeasureTermComponent element) throws IOException {
50501    if (element != null) {
50502    composeElementAttributes(element);
50503      xml.enter(FHIR_NS, name);
50504      composeMeasureTermComponentElements(element);
50505      composeElementClose(element);
50506      xml.exit(FHIR_NS, name);
50507    }
50508  }
50509
50510  protected void composeMeasureTermComponentElements(Measure.MeasureTermComponent element) throws IOException {
50511    composeBackboneElementElements(element);
50512    if (element.hasCode()) {
50513      composeCodeableConcept("code", element.getCode());
50514    }
50515    if (element.hasDefinitionElement()) {
50516      composeMarkdown("definition", element.getDefinitionElement());
50517    }
50518  }
50519
50520  protected void composeMeasureGroupComponent(String name, Measure.MeasureGroupComponent element) throws IOException {
50521    if (element != null) {
50522    composeElementAttributes(element);
50523      xml.enter(FHIR_NS, name);
50524      composeMeasureGroupComponentElements(element);
50525      composeElementClose(element);
50526      xml.exit(FHIR_NS, name);
50527    }
50528  }
50529
50530  protected void composeMeasureGroupComponentElements(Measure.MeasureGroupComponent element) throws IOException {
50531    composeBackboneElementElements(element);
50532    if (element.hasLinkIdElement()) {
50533      composeString("linkId", element.getLinkIdElement());
50534    }
50535    if (element.hasCode()) {
50536      composeCodeableConcept("code", element.getCode());
50537    }
50538    if (element.hasDescriptionElement()) {
50539      composeMarkdown("description", element.getDescriptionElement());
50540    }
50541    if (element.hasType()) { 
50542      for (CodeableConcept e : element.getType()) 
50543          composeCodeableConcept("type", e);
50544    }
50545    if (element.hasSubject()) {
50546      composeType("subject", element.getSubject());
50547    }    if (element.hasBasisElement())
50548      composeEnumeration("basis", element.getBasisElement(), new Enumerations.FHIRTypesEnumFactory());
50549    if (element.hasScoring()) {
50550      composeCodeableConcept("scoring", element.getScoring());
50551    }
50552    if (element.hasScoringUnit()) {
50553      composeCodeableConcept("scoringUnit", element.getScoringUnit());
50554    }
50555    if (element.hasRateAggregationElement()) {
50556      composeMarkdown("rateAggregation", element.getRateAggregationElement());
50557    }
50558    if (element.hasImprovementNotation()) {
50559      composeCodeableConcept("improvementNotation", element.getImprovementNotation());
50560    }
50561    if (element.hasLibrary()) { 
50562      for (CanonicalType e : element.getLibrary()) 
50563          composeCanonical("library", e);
50564    }
50565    if (element.hasPopulation()) { 
50566      for (Measure.MeasureGroupPopulationComponent e : element.getPopulation()) 
50567          composeMeasureGroupPopulationComponent("population", e);
50568    }
50569    if (element.hasStratifier()) { 
50570      for (Measure.MeasureGroupStratifierComponent e : element.getStratifier()) 
50571          composeMeasureGroupStratifierComponent("stratifier", e);
50572    }
50573  }
50574
50575  protected void composeMeasureGroupPopulationComponent(String name, Measure.MeasureGroupPopulationComponent element) throws IOException {
50576    if (element != null) {
50577    composeElementAttributes(element);
50578      xml.enter(FHIR_NS, name);
50579      composeMeasureGroupPopulationComponentElements(element);
50580      composeElementClose(element);
50581      xml.exit(FHIR_NS, name);
50582    }
50583  }
50584
50585  protected void composeMeasureGroupPopulationComponentElements(Measure.MeasureGroupPopulationComponent element) throws IOException {
50586    composeBackboneElementElements(element);
50587    if (element.hasLinkIdElement()) {
50588      composeString("linkId", element.getLinkIdElement());
50589    }
50590    if (element.hasCode()) {
50591      composeCodeableConcept("code", element.getCode());
50592    }
50593    if (element.hasDescriptionElement()) {
50594      composeMarkdown("description", element.getDescriptionElement());
50595    }
50596    if (element.hasCriteria()) {
50597      composeExpression("criteria", element.getCriteria());
50598    }
50599    if (element.hasGroupDefinition()) {
50600      composeReference("groupDefinition", element.getGroupDefinition());
50601    }
50602    if (element.hasInputPopulationIdElement()) {
50603      composeString("inputPopulationId", element.getInputPopulationIdElement());
50604    }
50605    if (element.hasAggregateMethod()) {
50606      composeCodeableConcept("aggregateMethod", element.getAggregateMethod());
50607    }
50608  }
50609
50610  protected void composeMeasureGroupStratifierComponent(String name, Measure.MeasureGroupStratifierComponent element) throws IOException {
50611    if (element != null) {
50612    composeElementAttributes(element);
50613      xml.enter(FHIR_NS, name);
50614      composeMeasureGroupStratifierComponentElements(element);
50615      composeElementClose(element);
50616      xml.exit(FHIR_NS, name);
50617    }
50618  }
50619
50620  protected void composeMeasureGroupStratifierComponentElements(Measure.MeasureGroupStratifierComponent element) throws IOException {
50621    composeBackboneElementElements(element);
50622    if (element.hasLinkIdElement()) {
50623      composeString("linkId", element.getLinkIdElement());
50624    }
50625    if (element.hasCode()) {
50626      composeCodeableConcept("code", element.getCode());
50627    }
50628    if (element.hasDescriptionElement()) {
50629      composeMarkdown("description", element.getDescriptionElement());
50630    }
50631    if (element.hasCriteria()) {
50632      composeExpression("criteria", element.getCriteria());
50633    }
50634    if (element.hasGroupDefinition()) {
50635      composeReference("groupDefinition", element.getGroupDefinition());
50636    }
50637    if (element.hasComponent()) { 
50638      for (Measure.MeasureGroupStratifierComponentComponent e : element.getComponent()) 
50639          composeMeasureGroupStratifierComponentComponent("component", e);
50640    }
50641  }
50642
50643  protected void composeMeasureGroupStratifierComponentComponent(String name, Measure.MeasureGroupStratifierComponentComponent element) throws IOException {
50644    if (element != null) {
50645    composeElementAttributes(element);
50646      xml.enter(FHIR_NS, name);
50647      composeMeasureGroupStratifierComponentComponentElements(element);
50648      composeElementClose(element);
50649      xml.exit(FHIR_NS, name);
50650    }
50651  }
50652
50653  protected void composeMeasureGroupStratifierComponentComponentElements(Measure.MeasureGroupStratifierComponentComponent element) throws IOException {
50654    composeBackboneElementElements(element);
50655    if (element.hasLinkIdElement()) {
50656      composeString("linkId", element.getLinkIdElement());
50657    }
50658    if (element.hasCode()) {
50659      composeCodeableConcept("code", element.getCode());
50660    }
50661    if (element.hasDescriptionElement()) {
50662      composeMarkdown("description", element.getDescriptionElement());
50663    }
50664    if (element.hasCriteria()) {
50665      composeExpression("criteria", element.getCriteria());
50666    }
50667    if (element.hasGroupDefinition()) {
50668      composeReference("groupDefinition", element.getGroupDefinition());
50669    }
50670  }
50671
50672  protected void composeMeasureSupplementalDataComponent(String name, Measure.MeasureSupplementalDataComponent element) throws IOException {
50673    if (element != null) {
50674    composeElementAttributes(element);
50675      xml.enter(FHIR_NS, name);
50676      composeMeasureSupplementalDataComponentElements(element);
50677      composeElementClose(element);
50678      xml.exit(FHIR_NS, name);
50679    }
50680  }
50681
50682  protected void composeMeasureSupplementalDataComponentElements(Measure.MeasureSupplementalDataComponent element) throws IOException {
50683    composeBackboneElementElements(element);
50684    if (element.hasLinkIdElement()) {
50685      composeString("linkId", element.getLinkIdElement());
50686    }
50687    if (element.hasCode()) {
50688      composeCodeableConcept("code", element.getCode());
50689    }
50690    if (element.hasUsage()) { 
50691      for (CodeableConcept e : element.getUsage()) 
50692          composeCodeableConcept("usage", e);
50693    }
50694    if (element.hasDescriptionElement()) {
50695      composeMarkdown("description", element.getDescriptionElement());
50696    }
50697    if (element.hasCriteria()) {
50698      composeExpression("criteria", element.getCriteria());
50699    }
50700  }
50701
50702  protected void composeMeasureReport(String name, MeasureReport element) throws IOException {
50703    if (element != null) {
50704    composeResourceAttributes(element);
50705      xml.enter(FHIR_NS, name);
50706      composeMeasureReportElements(element);
50707      composeElementClose(element);
50708      xml.exit(FHIR_NS, name);
50709    }
50710  }
50711
50712  protected void composeMeasureReportElements(MeasureReport element) throws IOException {
50713    composeDomainResourceElements(element);
50714    if (element.hasIdentifier()) { 
50715      for (Identifier e : element.getIdentifier()) 
50716          composeIdentifier("identifier", e);
50717    }
50718    if (element.hasStatusElement())
50719      composeEnumeration("status", element.getStatusElement(), new MeasureReport.MeasureReportStatusEnumFactory());
50720    if (element.hasTypeElement())
50721      composeEnumeration("type", element.getTypeElement(), new MeasureReport.MeasureReportTypeEnumFactory());
50722    if (element.hasDataUpdateTypeElement())
50723      composeEnumeration("dataUpdateType", element.getDataUpdateTypeElement(), new MeasureReport.SubmitDataUpdateTypeEnumFactory());
50724    if (element.hasMeasureElement()) {
50725      composeCanonical("measure", element.getMeasureElement());
50726    }
50727    if (element.hasSubject()) {
50728      composeReference("subject", element.getSubject());
50729    }
50730    if (element.hasDateElement()) {
50731      composeDateTime("date", element.getDateElement());
50732    }
50733    if (element.hasReporter()) {
50734      composeReference("reporter", element.getReporter());
50735    }
50736    if (element.hasReportingVendor()) {
50737      composeReference("reportingVendor", element.getReportingVendor());
50738    }
50739    if (element.hasLocation()) {
50740      composeReference("location", element.getLocation());
50741    }
50742    if (element.hasPeriod()) {
50743      composePeriod("period", element.getPeriod());
50744    }
50745    if (element.hasInputParameters()) {
50746      composeReference("inputParameters", element.getInputParameters());
50747    }
50748    if (element.hasScoring()) {
50749      composeCodeableConcept("scoring", element.getScoring());
50750    }
50751    if (element.hasImprovementNotation()) {
50752      composeCodeableConcept("improvementNotation", element.getImprovementNotation());
50753    }
50754    if (element.hasGroup()) { 
50755      for (MeasureReport.MeasureReportGroupComponent e : element.getGroup()) 
50756          composeMeasureReportGroupComponent("group", e);
50757    }
50758    if (element.hasSupplementalData()) { 
50759      for (Reference e : element.getSupplementalData()) 
50760          composeReference("supplementalData", e);
50761    }
50762    if (element.hasEvaluatedResource()) { 
50763      for (Reference e : element.getEvaluatedResource()) 
50764          composeReference("evaluatedResource", e);
50765    }
50766  }
50767
50768  protected void composeMeasureReportGroupComponent(String name, MeasureReport.MeasureReportGroupComponent element) throws IOException {
50769    if (element != null) {
50770    composeElementAttributes(element);
50771      xml.enter(FHIR_NS, name);
50772      composeMeasureReportGroupComponentElements(element);
50773      composeElementClose(element);
50774      xml.exit(FHIR_NS, name);
50775    }
50776  }
50777
50778  protected void composeMeasureReportGroupComponentElements(MeasureReport.MeasureReportGroupComponent element) throws IOException {
50779    composeBackboneElementElements(element);
50780    if (element.hasLinkIdElement()) {
50781      composeString("linkId", element.getLinkIdElement());
50782    }
50783    if (element.hasCode()) {
50784      composeCodeableConcept("code", element.getCode());
50785    }
50786    if (element.hasSubject()) {
50787      composeReference("subject", element.getSubject());
50788    }
50789    if (element.hasPopulation()) { 
50790      for (MeasureReport.MeasureReportGroupPopulationComponent e : element.getPopulation()) 
50791          composeMeasureReportGroupPopulationComponent("population", e);
50792    }
50793    if (element.hasMeasureScore()) {
50794      composeType("measureScore", element.getMeasureScore());
50795    }    if (element.hasStratifier()) { 
50796      for (MeasureReport.MeasureReportGroupStratifierComponent e : element.getStratifier()) 
50797          composeMeasureReportGroupStratifierComponent("stratifier", e);
50798    }
50799  }
50800
50801  protected void composeMeasureReportGroupPopulationComponent(String name, MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
50802    if (element != null) {
50803    composeElementAttributes(element);
50804      xml.enter(FHIR_NS, name);
50805      composeMeasureReportGroupPopulationComponentElements(element);
50806      composeElementClose(element);
50807      xml.exit(FHIR_NS, name);
50808    }
50809  }
50810
50811  protected void composeMeasureReportGroupPopulationComponentElements(MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
50812    composeBackboneElementElements(element);
50813    if (element.hasLinkIdElement()) {
50814      composeString("linkId", element.getLinkIdElement());
50815    }
50816    if (element.hasCode()) {
50817      composeCodeableConcept("code", element.getCode());
50818    }
50819    if (element.hasCountElement()) {
50820      composeInteger("count", element.getCountElement());
50821    }
50822    if (element.hasSubjectResults()) {
50823      composeReference("subjectResults", element.getSubjectResults());
50824    }
50825    if (element.hasSubjectReport()) { 
50826      for (Reference e : element.getSubjectReport()) 
50827          composeReference("subjectReport", e);
50828    }
50829    if (element.hasSubjects()) {
50830      composeReference("subjects", element.getSubjects());
50831    }
50832  }
50833
50834  protected void composeMeasureReportGroupStratifierComponent(String name, MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
50835    if (element != null) {
50836    composeElementAttributes(element);
50837      xml.enter(FHIR_NS, name);
50838      composeMeasureReportGroupStratifierComponentElements(element);
50839      composeElementClose(element);
50840      xml.exit(FHIR_NS, name);
50841    }
50842  }
50843
50844  protected void composeMeasureReportGroupStratifierComponentElements(MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
50845    composeBackboneElementElements(element);
50846    if (element.hasLinkIdElement()) {
50847      composeString("linkId", element.getLinkIdElement());
50848    }
50849    if (element.hasCode()) {
50850      composeCodeableConcept("code", element.getCode());
50851    }
50852    if (element.hasStratum()) { 
50853      for (MeasureReport.StratifierGroupComponent e : element.getStratum()) 
50854          composeMeasureReportStratifierGroupComponent("stratum", e);
50855    }
50856  }
50857
50858  protected void composeMeasureReportStratifierGroupComponent(String name, MeasureReport.StratifierGroupComponent element) throws IOException {
50859    if (element != null) {
50860    composeElementAttributes(element);
50861      xml.enter(FHIR_NS, name);
50862      composeMeasureReportStratifierGroupComponentElements(element);
50863      composeElementClose(element);
50864      xml.exit(FHIR_NS, name);
50865    }
50866  }
50867
50868  protected void composeMeasureReportStratifierGroupComponentElements(MeasureReport.StratifierGroupComponent element) throws IOException {
50869    composeBackboneElementElements(element);
50870    if (element.hasValue()) {
50871      composeType("value", element.getValue());
50872    }    if (element.hasComponent()) { 
50873      for (MeasureReport.StratifierGroupComponentComponent e : element.getComponent()) 
50874          composeMeasureReportStratifierGroupComponentComponent("component", e);
50875    }
50876    if (element.hasPopulation()) { 
50877      for (MeasureReport.StratifierGroupPopulationComponent e : element.getPopulation()) 
50878          composeMeasureReportStratifierGroupPopulationComponent("population", e);
50879    }
50880    if (element.hasMeasureScore()) {
50881      composeType("measureScore", element.getMeasureScore());
50882    }  }
50883
50884  protected void composeMeasureReportStratifierGroupComponentComponent(String name, MeasureReport.StratifierGroupComponentComponent element) throws IOException {
50885    if (element != null) {
50886    composeElementAttributes(element);
50887      xml.enter(FHIR_NS, name);
50888      composeMeasureReportStratifierGroupComponentComponentElements(element);
50889      composeElementClose(element);
50890      xml.exit(FHIR_NS, name);
50891    }
50892  }
50893
50894  protected void composeMeasureReportStratifierGroupComponentComponentElements(MeasureReport.StratifierGroupComponentComponent element) throws IOException {
50895    composeBackboneElementElements(element);
50896    if (element.hasLinkIdElement()) {
50897      composeString("linkId", element.getLinkIdElement());
50898    }
50899    if (element.hasCode()) {
50900      composeCodeableConcept("code", element.getCode());
50901    }
50902    if (element.hasValue()) {
50903      composeType("value", element.getValue());
50904    }  }
50905
50906  protected void composeMeasureReportStratifierGroupPopulationComponent(String name, MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
50907    if (element != null) {
50908    composeElementAttributes(element);
50909      xml.enter(FHIR_NS, name);
50910      composeMeasureReportStratifierGroupPopulationComponentElements(element);
50911      composeElementClose(element);
50912      xml.exit(FHIR_NS, name);
50913    }
50914  }
50915
50916  protected void composeMeasureReportStratifierGroupPopulationComponentElements(MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
50917    composeBackboneElementElements(element);
50918    if (element.hasLinkIdElement()) {
50919      composeString("linkId", element.getLinkIdElement());
50920    }
50921    if (element.hasCode()) {
50922      composeCodeableConcept("code", element.getCode());
50923    }
50924    if (element.hasCountElement()) {
50925      composeInteger("count", element.getCountElement());
50926    }
50927    if (element.hasSubjectResults()) {
50928      composeReference("subjectResults", element.getSubjectResults());
50929    }
50930    if (element.hasSubjectReport()) { 
50931      for (Reference e : element.getSubjectReport()) 
50932          composeReference("subjectReport", e);
50933    }
50934    if (element.hasSubjects()) {
50935      composeReference("subjects", element.getSubjects());
50936    }
50937  }
50938
50939  protected void composeMedication(String name, Medication element) throws IOException {
50940    if (element != null) {
50941    composeResourceAttributes(element);
50942      xml.enter(FHIR_NS, name);
50943      composeMedicationElements(element);
50944      composeElementClose(element);
50945      xml.exit(FHIR_NS, name);
50946    }
50947  }
50948
50949  protected void composeMedicationElements(Medication element) throws IOException {
50950    composeDomainResourceElements(element);
50951    if (element.hasIdentifier()) { 
50952      for (Identifier e : element.getIdentifier()) 
50953          composeIdentifier("identifier", e);
50954    }
50955    if (element.hasCode()) {
50956      composeCodeableConcept("code", element.getCode());
50957    }
50958    if (element.hasStatusElement())
50959      composeEnumeration("status", element.getStatusElement(), new Medication.MedicationStatusCodesEnumFactory());
50960    if (element.hasMarketingAuthorizationHolder()) {
50961      composeReference("marketingAuthorizationHolder", element.getMarketingAuthorizationHolder());
50962    }
50963    if (element.hasDoseForm()) {
50964      composeCodeableConcept("doseForm", element.getDoseForm());
50965    }
50966    if (element.hasTotalVolume()) {
50967      composeQuantity("totalVolume", element.getTotalVolume());
50968    }
50969    if (element.hasIngredient()) { 
50970      for (Medication.MedicationIngredientComponent e : element.getIngredient()) 
50971          composeMedicationIngredientComponent("ingredient", e);
50972    }
50973    if (element.hasBatch()) {
50974      composeMedicationBatchComponent("batch", element.getBatch());
50975    }
50976    if (element.hasDefinition()) {
50977      composeReference("definition", element.getDefinition());
50978    }
50979  }
50980
50981  protected void composeMedicationIngredientComponent(String name, Medication.MedicationIngredientComponent element) throws IOException {
50982    if (element != null) {
50983    composeElementAttributes(element);
50984      xml.enter(FHIR_NS, name);
50985      composeMedicationIngredientComponentElements(element);
50986      composeElementClose(element);
50987      xml.exit(FHIR_NS, name);
50988    }
50989  }
50990
50991  protected void composeMedicationIngredientComponentElements(Medication.MedicationIngredientComponent element) throws IOException {
50992    composeBackboneElementElements(element);
50993    if (element.hasItem()) {
50994      composeCodeableReference("item", element.getItem());
50995    }
50996    if (element.hasIsActiveElement()) {
50997      composeBoolean("isActive", element.getIsActiveElement());
50998    }
50999    if (element.hasStrength()) {
51000      composeType("strength", element.getStrength());
51001    }  }
51002
51003  protected void composeMedicationBatchComponent(String name, Medication.MedicationBatchComponent element) throws IOException {
51004    if (element != null) {
51005    composeElementAttributes(element);
51006      xml.enter(FHIR_NS, name);
51007      composeMedicationBatchComponentElements(element);
51008      composeElementClose(element);
51009      xml.exit(FHIR_NS, name);
51010    }
51011  }
51012
51013  protected void composeMedicationBatchComponentElements(Medication.MedicationBatchComponent element) throws IOException {
51014    composeBackboneElementElements(element);
51015    if (element.hasLotNumberElement()) {
51016      composeString("lotNumber", element.getLotNumberElement());
51017    }
51018    if (element.hasExpirationDateElement()) {
51019      composeDateTime("expirationDate", element.getExpirationDateElement());
51020    }
51021  }
51022
51023  protected void composeMedicationAdministration(String name, MedicationAdministration element) throws IOException {
51024    if (element != null) {
51025    composeResourceAttributes(element);
51026      xml.enter(FHIR_NS, name);
51027      composeMedicationAdministrationElements(element);
51028      composeElementClose(element);
51029      xml.exit(FHIR_NS, name);
51030    }
51031  }
51032
51033  protected void composeMedicationAdministrationElements(MedicationAdministration element) throws IOException {
51034    composeDomainResourceElements(element);
51035    if (element.hasIdentifier()) { 
51036      for (Identifier e : element.getIdentifier()) 
51037          composeIdentifier("identifier", e);
51038    }
51039    if (element.hasBasedOn()) { 
51040      for (Reference e : element.getBasedOn()) 
51041          composeReference("basedOn", e);
51042    }
51043    if (element.hasPartOf()) { 
51044      for (Reference e : element.getPartOf()) 
51045          composeReference("partOf", e);
51046    }
51047    if (element.hasStatusElement())
51048      composeEnumeration("status", element.getStatusElement(), new MedicationAdministration.MedicationAdministrationStatusCodesEnumFactory());
51049    if (element.hasStatusReason()) { 
51050      for (CodeableConcept e : element.getStatusReason()) 
51051          composeCodeableConcept("statusReason", e);
51052    }
51053    if (element.hasCategory()) { 
51054      for (CodeableConcept e : element.getCategory()) 
51055          composeCodeableConcept("category", e);
51056    }
51057    if (element.hasMedication()) {
51058      composeCodeableReference("medication", element.getMedication());
51059    }
51060    if (element.hasSubject()) {
51061      composeReference("subject", element.getSubject());
51062    }
51063    if (element.hasEncounter()) {
51064      composeReference("encounter", element.getEncounter());
51065    }
51066    if (element.hasSupportingInformation()) { 
51067      for (Reference e : element.getSupportingInformation()) 
51068          composeReference("supportingInformation", e);
51069    }
51070    if (element.hasOccurence()) {
51071      composeType("occurence", element.getOccurence());
51072    }    if (element.hasRecordedElement()) {
51073      composeDateTime("recorded", element.getRecordedElement());
51074    }
51075    if (element.hasIsSubPotentElement()) {
51076      composeBoolean("isSubPotent", element.getIsSubPotentElement());
51077    }
51078    if (element.hasSubPotentReason()) { 
51079      for (CodeableConcept e : element.getSubPotentReason()) 
51080          composeCodeableConcept("subPotentReason", e);
51081    }
51082    if (element.hasPerformer()) { 
51083      for (MedicationAdministration.MedicationAdministrationPerformerComponent e : element.getPerformer()) 
51084          composeMedicationAdministrationPerformerComponent("performer", e);
51085    }
51086    if (element.hasReason()) { 
51087      for (CodeableReference e : element.getReason()) 
51088          composeCodeableReference("reason", e);
51089    }
51090    if (element.hasRequest()) {
51091      composeReference("request", element.getRequest());
51092    }
51093    if (element.hasDevice()) { 
51094      for (CodeableReference e : element.getDevice()) 
51095          composeCodeableReference("device", e);
51096    }
51097    if (element.hasNote()) { 
51098      for (Annotation e : element.getNote()) 
51099          composeAnnotation("note", e);
51100    }
51101    if (element.hasDosage()) {
51102      composeMedicationAdministrationDosageComponent("dosage", element.getDosage());
51103    }
51104    if (element.hasEventHistory()) { 
51105      for (Reference e : element.getEventHistory()) 
51106          composeReference("eventHistory", e);
51107    }
51108  }
51109
51110  protected void composeMedicationAdministrationPerformerComponent(String name, MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
51111    if (element != null) {
51112    composeElementAttributes(element);
51113      xml.enter(FHIR_NS, name);
51114      composeMedicationAdministrationPerformerComponentElements(element);
51115      composeElementClose(element);
51116      xml.exit(FHIR_NS, name);
51117    }
51118  }
51119
51120  protected void composeMedicationAdministrationPerformerComponentElements(MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
51121    composeBackboneElementElements(element);
51122    if (element.hasFunction()) {
51123      composeCodeableConcept("function", element.getFunction());
51124    }
51125    if (element.hasActor()) {
51126      composeCodeableReference("actor", element.getActor());
51127    }
51128  }
51129
51130  protected void composeMedicationAdministrationDosageComponent(String name, MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
51131    if (element != null) {
51132    composeElementAttributes(element);
51133      xml.enter(FHIR_NS, name);
51134      composeMedicationAdministrationDosageComponentElements(element);
51135      composeElementClose(element);
51136      xml.exit(FHIR_NS, name);
51137    }
51138  }
51139
51140  protected void composeMedicationAdministrationDosageComponentElements(MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
51141    composeBackboneElementElements(element);
51142    if (element.hasTextElement()) {
51143      composeString("text", element.getTextElement());
51144    }
51145    if (element.hasSite()) {
51146      composeCodeableConcept("site", element.getSite());
51147    }
51148    if (element.hasRoute()) {
51149      composeCodeableConcept("route", element.getRoute());
51150    }
51151    if (element.hasMethod()) {
51152      composeCodeableConcept("method", element.getMethod());
51153    }
51154    if (element.hasDose()) {
51155      composeQuantity("dose", element.getDose());
51156    }
51157    if (element.hasRate()) {
51158      composeType("rate", element.getRate());
51159    }  }
51160
51161  protected void composeMedicationDispense(String name, MedicationDispense element) throws IOException {
51162    if (element != null) {
51163    composeResourceAttributes(element);
51164      xml.enter(FHIR_NS, name);
51165      composeMedicationDispenseElements(element);
51166      composeElementClose(element);
51167      xml.exit(FHIR_NS, name);
51168    }
51169  }
51170
51171  protected void composeMedicationDispenseElements(MedicationDispense element) throws IOException {
51172    composeDomainResourceElements(element);
51173    if (element.hasIdentifier()) { 
51174      for (Identifier e : element.getIdentifier()) 
51175          composeIdentifier("identifier", e);
51176    }
51177    if (element.hasBasedOn()) { 
51178      for (Reference e : element.getBasedOn()) 
51179          composeReference("basedOn", e);
51180    }
51181    if (element.hasPartOf()) { 
51182      for (Reference e : element.getPartOf()) 
51183          composeReference("partOf", e);
51184    }
51185    if (element.hasStatusElement())
51186      composeEnumeration("status", element.getStatusElement(), new MedicationDispense.MedicationDispenseStatusCodesEnumFactory());
51187    if (element.hasNotPerformedReason()) {
51188      composeCodeableReference("notPerformedReason", element.getNotPerformedReason());
51189    }
51190    if (element.hasStatusChangedElement()) {
51191      composeDateTime("statusChanged", element.getStatusChangedElement());
51192    }
51193    if (element.hasCategory()) { 
51194      for (CodeableConcept e : element.getCategory()) 
51195          composeCodeableConcept("category", e);
51196    }
51197    if (element.hasMedication()) {
51198      composeCodeableReference("medication", element.getMedication());
51199    }
51200    if (element.hasSubject()) {
51201      composeReference("subject", element.getSubject());
51202    }
51203    if (element.hasEncounter()) {
51204      composeReference("encounter", element.getEncounter());
51205    }
51206    if (element.hasSupportingInformation()) { 
51207      for (Reference e : element.getSupportingInformation()) 
51208          composeReference("supportingInformation", e);
51209    }
51210    if (element.hasPerformer()) { 
51211      for (MedicationDispense.MedicationDispensePerformerComponent e : element.getPerformer()) 
51212          composeMedicationDispensePerformerComponent("performer", e);
51213    }
51214    if (element.hasLocation()) {
51215      composeReference("location", element.getLocation());
51216    }
51217    if (element.hasAuthorizingPrescription()) { 
51218      for (Reference e : element.getAuthorizingPrescription()) 
51219          composeReference("authorizingPrescription", e);
51220    }
51221    if (element.hasType()) {
51222      composeCodeableConcept("type", element.getType());
51223    }
51224    if (element.hasQuantity()) {
51225      composeQuantity("quantity", element.getQuantity());
51226    }
51227    if (element.hasDaysSupply()) {
51228      composeQuantity("daysSupply", element.getDaysSupply());
51229    }
51230    if (element.hasRecordedElement()) {
51231      composeDateTime("recorded", element.getRecordedElement());
51232    }
51233    if (element.hasWhenPreparedElement()) {
51234      composeDateTime("whenPrepared", element.getWhenPreparedElement());
51235    }
51236    if (element.hasWhenHandedOverElement()) {
51237      composeDateTime("whenHandedOver", element.getWhenHandedOverElement());
51238    }
51239    if (element.hasDestination()) {
51240      composeReference("destination", element.getDestination());
51241    }
51242    if (element.hasReceiver()) { 
51243      for (Reference e : element.getReceiver()) 
51244          composeReference("receiver", e);
51245    }
51246    if (element.hasNote()) { 
51247      for (Annotation e : element.getNote()) 
51248          composeAnnotation("note", e);
51249    }
51250    if (element.hasRenderedDosageInstructionElement()) {
51251      composeMarkdown("renderedDosageInstruction", element.getRenderedDosageInstructionElement());
51252    }
51253    if (element.hasDosageInstruction()) { 
51254      for (Dosage e : element.getDosageInstruction()) 
51255          composeDosage("dosageInstruction", e);
51256    }
51257    if (element.hasSubstitution()) {
51258      composeMedicationDispenseSubstitutionComponent("substitution", element.getSubstitution());
51259    }
51260    if (element.hasEventHistory()) { 
51261      for (Reference e : element.getEventHistory()) 
51262          composeReference("eventHistory", e);
51263    }
51264  }
51265
51266  protected void composeMedicationDispensePerformerComponent(String name, MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
51267    if (element != null) {
51268    composeElementAttributes(element);
51269      xml.enter(FHIR_NS, name);
51270      composeMedicationDispensePerformerComponentElements(element);
51271      composeElementClose(element);
51272      xml.exit(FHIR_NS, name);
51273    }
51274  }
51275
51276  protected void composeMedicationDispensePerformerComponentElements(MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
51277    composeBackboneElementElements(element);
51278    if (element.hasFunction()) {
51279      composeCodeableConcept("function", element.getFunction());
51280    }
51281    if (element.hasActor()) {
51282      composeReference("actor", element.getActor());
51283    }
51284  }
51285
51286  protected void composeMedicationDispenseSubstitutionComponent(String name, MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
51287    if (element != null) {
51288    composeElementAttributes(element);
51289      xml.enter(FHIR_NS, name);
51290      composeMedicationDispenseSubstitutionComponentElements(element);
51291      composeElementClose(element);
51292      xml.exit(FHIR_NS, name);
51293    }
51294  }
51295
51296  protected void composeMedicationDispenseSubstitutionComponentElements(MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
51297    composeBackboneElementElements(element);
51298    if (element.hasWasSubstitutedElement()) {
51299      composeBoolean("wasSubstituted", element.getWasSubstitutedElement());
51300    }
51301    if (element.hasType()) {
51302      composeCodeableConcept("type", element.getType());
51303    }
51304    if (element.hasReason()) { 
51305      for (CodeableConcept e : element.getReason()) 
51306          composeCodeableConcept("reason", e);
51307    }
51308    if (element.hasResponsibleParty()) {
51309      composeReference("responsibleParty", element.getResponsibleParty());
51310    }
51311  }
51312
51313  protected void composeMedicationKnowledge(String name, MedicationKnowledge element) throws IOException {
51314    if (element != null) {
51315    composeResourceAttributes(element);
51316      xml.enter(FHIR_NS, name);
51317      composeMedicationKnowledgeElements(element);
51318      composeElementClose(element);
51319      xml.exit(FHIR_NS, name);
51320    }
51321  }
51322
51323  protected void composeMedicationKnowledgeElements(MedicationKnowledge element) throws IOException {
51324    composeDomainResourceElements(element);
51325    if (element.hasIdentifier()) { 
51326      for (Identifier e : element.getIdentifier()) 
51327          composeIdentifier("identifier", e);
51328    }
51329    if (element.hasCode()) {
51330      composeCodeableConcept("code", element.getCode());
51331    }
51332    if (element.hasStatusElement())
51333      composeEnumeration("status", element.getStatusElement(), new MedicationKnowledge.MedicationKnowledgeStatusCodesEnumFactory());
51334    if (element.hasAuthor()) {
51335      composeReference("author", element.getAuthor());
51336    }
51337    if (element.hasIntendedJurisdiction()) { 
51338      for (CodeableConcept e : element.getIntendedJurisdiction()) 
51339          composeCodeableConcept("intendedJurisdiction", e);
51340    }
51341    if (element.hasName()) { 
51342      for (StringType e : element.getName()) 
51343          composeString("name", e);
51344    }
51345    if (element.hasRelatedMedicationKnowledge()) { 
51346      for (MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent e : element.getRelatedMedicationKnowledge()) 
51347          composeMedicationKnowledgeRelatedMedicationKnowledgeComponent("relatedMedicationKnowledge", e);
51348    }
51349    if (element.hasAssociatedMedication()) { 
51350      for (Reference e : element.getAssociatedMedication()) 
51351          composeReference("associatedMedication", e);
51352    }
51353    if (element.hasProductType()) { 
51354      for (CodeableConcept e : element.getProductType()) 
51355          composeCodeableConcept("productType", e);
51356    }
51357    if (element.hasMonograph()) { 
51358      for (MedicationKnowledge.MedicationKnowledgeMonographComponent e : element.getMonograph()) 
51359          composeMedicationKnowledgeMonographComponent("monograph", e);
51360    }
51361    if (element.hasPreparationInstructionElement()) {
51362      composeMarkdown("preparationInstruction", element.getPreparationInstructionElement());
51363    }
51364    if (element.hasCost()) { 
51365      for (MedicationKnowledge.MedicationKnowledgeCostComponent e : element.getCost()) 
51366          composeMedicationKnowledgeCostComponent("cost", e);
51367    }
51368    if (element.hasMonitoringProgram()) { 
51369      for (MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent e : element.getMonitoringProgram()) 
51370          composeMedicationKnowledgeMonitoringProgramComponent("monitoringProgram", e);
51371    }
51372    if (element.hasIndicationGuideline()) { 
51373      for (MedicationKnowledge.MedicationKnowledgeIndicationGuidelineComponent e : element.getIndicationGuideline()) 
51374          composeMedicationKnowledgeIndicationGuidelineComponent("indicationGuideline", e);
51375    }
51376    if (element.hasMedicineClassification()) { 
51377      for (MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent e : element.getMedicineClassification()) 
51378          composeMedicationKnowledgeMedicineClassificationComponent("medicineClassification", e);
51379    }
51380    if (element.hasPackaging()) { 
51381      for (MedicationKnowledge.MedicationKnowledgePackagingComponent e : element.getPackaging()) 
51382          composeMedicationKnowledgePackagingComponent("packaging", e);
51383    }
51384    if (element.hasClinicalUseIssue()) { 
51385      for (Reference e : element.getClinicalUseIssue()) 
51386          composeReference("clinicalUseIssue", e);
51387    }
51388    if (element.hasStorageGuideline()) { 
51389      for (MedicationKnowledge.MedicationKnowledgeStorageGuidelineComponent e : element.getStorageGuideline()) 
51390          composeMedicationKnowledgeStorageGuidelineComponent("storageGuideline", e);
51391    }
51392    if (element.hasRegulatory()) { 
51393      for (MedicationKnowledge.MedicationKnowledgeRegulatoryComponent e : element.getRegulatory()) 
51394          composeMedicationKnowledgeRegulatoryComponent("regulatory", e);
51395    }
51396    if (element.hasDefinitional()) {
51397      composeMedicationKnowledgeDefinitionalComponent("definitional", element.getDefinitional());
51398    }
51399  }
51400
51401  protected void composeMedicationKnowledgeRelatedMedicationKnowledgeComponent(String name, MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent element) throws IOException {
51402    if (element != null) {
51403    composeElementAttributes(element);
51404      xml.enter(FHIR_NS, name);
51405      composeMedicationKnowledgeRelatedMedicationKnowledgeComponentElements(element);
51406      composeElementClose(element);
51407      xml.exit(FHIR_NS, name);
51408    }
51409  }
51410
51411  protected void composeMedicationKnowledgeRelatedMedicationKnowledgeComponentElements(MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent element) throws IOException {
51412    composeBackboneElementElements(element);
51413    if (element.hasType()) {
51414      composeCodeableConcept("type", element.getType());
51415    }
51416    if (element.hasReference()) { 
51417      for (Reference e : element.getReference()) 
51418          composeReference("reference", e);
51419    }
51420  }
51421
51422  protected void composeMedicationKnowledgeMonographComponent(String name, MedicationKnowledge.MedicationKnowledgeMonographComponent element) throws IOException {
51423    if (element != null) {
51424    composeElementAttributes(element);
51425      xml.enter(FHIR_NS, name);
51426      composeMedicationKnowledgeMonographComponentElements(element);
51427      composeElementClose(element);
51428      xml.exit(FHIR_NS, name);
51429    }
51430  }
51431
51432  protected void composeMedicationKnowledgeMonographComponentElements(MedicationKnowledge.MedicationKnowledgeMonographComponent element) throws IOException {
51433    composeBackboneElementElements(element);
51434    if (element.hasType()) {
51435      composeCodeableConcept("type", element.getType());
51436    }
51437    if (element.hasSource()) {
51438      composeReference("source", element.getSource());
51439    }
51440  }
51441
51442  protected void composeMedicationKnowledgeCostComponent(String name, MedicationKnowledge.MedicationKnowledgeCostComponent element) throws IOException {
51443    if (element != null) {
51444    composeElementAttributes(element);
51445      xml.enter(FHIR_NS, name);
51446      composeMedicationKnowledgeCostComponentElements(element);
51447      composeElementClose(element);
51448      xml.exit(FHIR_NS, name);
51449    }
51450  }
51451
51452  protected void composeMedicationKnowledgeCostComponentElements(MedicationKnowledge.MedicationKnowledgeCostComponent element) throws IOException {
51453    composeBackboneElementElements(element);
51454    if (element.hasEffectiveDate()) { 
51455      for (Period e : element.getEffectiveDate()) 
51456          composePeriod("effectiveDate", e);
51457    }
51458    if (element.hasType()) {
51459      composeCodeableConcept("type", element.getType());
51460    }
51461    if (element.hasSourceElement()) {
51462      composeString("source", element.getSourceElement());
51463    }
51464    if (element.hasCost()) {
51465      composeType("cost", element.getCost());
51466    }  }
51467
51468  protected void composeMedicationKnowledgeMonitoringProgramComponent(String name, MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent element) throws IOException {
51469    if (element != null) {
51470    composeElementAttributes(element);
51471      xml.enter(FHIR_NS, name);
51472      composeMedicationKnowledgeMonitoringProgramComponentElements(element);
51473      composeElementClose(element);
51474      xml.exit(FHIR_NS, name);
51475    }
51476  }
51477
51478  protected void composeMedicationKnowledgeMonitoringProgramComponentElements(MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent element) throws IOException {
51479    composeBackboneElementElements(element);
51480    if (element.hasType()) {
51481      composeCodeableConcept("type", element.getType());
51482    }
51483    if (element.hasNameElement()) {
51484      composeString("name", element.getNameElement());
51485    }
51486  }
51487
51488  protected void composeMedicationKnowledgeIndicationGuidelineComponent(String name, MedicationKnowledge.MedicationKnowledgeIndicationGuidelineComponent element) throws IOException {
51489    if (element != null) {
51490    composeElementAttributes(element);
51491      xml.enter(FHIR_NS, name);
51492      composeMedicationKnowledgeIndicationGuidelineComponentElements(element);
51493      composeElementClose(element);
51494      xml.exit(FHIR_NS, name);
51495    }
51496  }
51497
51498  protected void composeMedicationKnowledgeIndicationGuidelineComponentElements(MedicationKnowledge.MedicationKnowledgeIndicationGuidelineComponent element) throws IOException {
51499    composeBackboneElementElements(element);
51500    if (element.hasIndication()) { 
51501      for (CodeableReference e : element.getIndication()) 
51502          composeCodeableReference("indication", e);
51503    }
51504    if (element.hasDosingGuideline()) { 
51505      for (MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelineComponent e : element.getDosingGuideline()) 
51506          composeMedicationKnowledgeIndicationGuidelineDosingGuidelineComponent("dosingGuideline", e);
51507    }
51508  }
51509
51510  protected void composeMedicationKnowledgeIndicationGuidelineDosingGuidelineComponent(String name, MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelineComponent element) throws IOException {
51511    if (element != null) {
51512    composeElementAttributes(element);
51513      xml.enter(FHIR_NS, name);
51514      composeMedicationKnowledgeIndicationGuidelineDosingGuidelineComponentElements(element);
51515      composeElementClose(element);
51516      xml.exit(FHIR_NS, name);
51517    }
51518  }
51519
51520  protected void composeMedicationKnowledgeIndicationGuidelineDosingGuidelineComponentElements(MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelineComponent element) throws IOException {
51521    composeBackboneElementElements(element);
51522    if (element.hasTreatmentIntent()) {
51523      composeCodeableConcept("treatmentIntent", element.getTreatmentIntent());
51524    }
51525    if (element.hasDosage()) { 
51526      for (MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponent e : element.getDosage()) 
51527          composeMedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponent("dosage", e);
51528    }
51529    if (element.hasAdministrationTreatment()) {
51530      composeCodeableConcept("administrationTreatment", element.getAdministrationTreatment());
51531    }
51532    if (element.hasPatientCharacteristic()) { 
51533      for (MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponent e : element.getPatientCharacteristic()) 
51534          composeMedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponent("patientCharacteristic", e);
51535    }
51536  }
51537
51538  protected void composeMedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponent(String name, MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponent element) throws IOException {
51539    if (element != null) {
51540    composeElementAttributes(element);
51541      xml.enter(FHIR_NS, name);
51542      composeMedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponentElements(element);
51543      composeElementClose(element);
51544      xml.exit(FHIR_NS, name);
51545    }
51546  }
51547
51548  protected void composeMedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponentElements(MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelineDosageComponent element) throws IOException {
51549    composeBackboneElementElements(element);
51550    if (element.hasType()) {
51551      composeCodeableConcept("type", element.getType());
51552    }
51553    if (element.hasDosage()) { 
51554      for (Dosage e : element.getDosage()) 
51555          composeDosage("dosage", e);
51556    }
51557  }
51558
51559  protected void composeMedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponent(String name, MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponent element) throws IOException {
51560    if (element != null) {
51561    composeElementAttributes(element);
51562      xml.enter(FHIR_NS, name);
51563      composeMedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponentElements(element);
51564      composeElementClose(element);
51565      xml.exit(FHIR_NS, name);
51566    }
51567  }
51568
51569  protected void composeMedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponentElements(MedicationKnowledge.MedicationKnowledgeIndicationGuidelineDosingGuidelinePatientCharacteristicComponent element) throws IOException {
51570    composeBackboneElementElements(element);
51571    if (element.hasType()) {
51572      composeCodeableConcept("type", element.getType());
51573    }
51574    if (element.hasValue()) {
51575      composeType("value", element.getValue());
51576    }  }
51577
51578  protected void composeMedicationKnowledgeMedicineClassificationComponent(String name, MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent element) throws IOException {
51579    if (element != null) {
51580    composeElementAttributes(element);
51581      xml.enter(FHIR_NS, name);
51582      composeMedicationKnowledgeMedicineClassificationComponentElements(element);
51583      composeElementClose(element);
51584      xml.exit(FHIR_NS, name);
51585    }
51586  }
51587
51588  protected void composeMedicationKnowledgeMedicineClassificationComponentElements(MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent element) throws IOException {
51589    composeBackboneElementElements(element);
51590    if (element.hasType()) {
51591      composeCodeableConcept("type", element.getType());
51592    }
51593    if (element.hasSource()) {
51594      composeType("source", element.getSource());
51595    }    if (element.hasClassification()) { 
51596      for (CodeableConcept e : element.getClassification()) 
51597          composeCodeableConcept("classification", e);
51598    }
51599  }
51600
51601  protected void composeMedicationKnowledgePackagingComponent(String name, MedicationKnowledge.MedicationKnowledgePackagingComponent element) throws IOException {
51602    if (element != null) {
51603    composeElementAttributes(element);
51604      xml.enter(FHIR_NS, name);
51605      composeMedicationKnowledgePackagingComponentElements(element);
51606      composeElementClose(element);
51607      xml.exit(FHIR_NS, name);
51608    }
51609  }
51610
51611  protected void composeMedicationKnowledgePackagingComponentElements(MedicationKnowledge.MedicationKnowledgePackagingComponent element) throws IOException {
51612    composeBackboneElementElements(element);
51613    if (element.hasCost()) { 
51614      for (MedicationKnowledge.MedicationKnowledgeCostComponent e : element.getCost()) 
51615          composeMedicationKnowledgeCostComponent("cost", e);
51616    }
51617    if (element.hasPackagedProduct()) {
51618      composeReference("packagedProduct", element.getPackagedProduct());
51619    }
51620  }
51621
51622  protected void composeMedicationKnowledgeStorageGuidelineComponent(String name, MedicationKnowledge.MedicationKnowledgeStorageGuidelineComponent element) throws IOException {
51623    if (element != null) {
51624    composeElementAttributes(element);
51625      xml.enter(FHIR_NS, name);
51626      composeMedicationKnowledgeStorageGuidelineComponentElements(element);
51627      composeElementClose(element);
51628      xml.exit(FHIR_NS, name);
51629    }
51630  }
51631
51632  protected void composeMedicationKnowledgeStorageGuidelineComponentElements(MedicationKnowledge.MedicationKnowledgeStorageGuidelineComponent element) throws IOException {
51633    composeBackboneElementElements(element);
51634    if (element.hasReferenceElement()) {
51635      composeUri("reference", element.getReferenceElement());
51636    }
51637    if (element.hasNote()) { 
51638      for (Annotation e : element.getNote()) 
51639          composeAnnotation("note", e);
51640    }
51641    if (element.hasStabilityDuration()) {
51642      composeDuration("stabilityDuration", element.getStabilityDuration());
51643    }
51644    if (element.hasEnvironmentalSetting()) { 
51645      for (MedicationKnowledge.MedicationKnowledgeStorageGuidelineEnvironmentalSettingComponent e : element.getEnvironmentalSetting()) 
51646          composeMedicationKnowledgeStorageGuidelineEnvironmentalSettingComponent("environmentalSetting", e);
51647    }
51648  }
51649
51650  protected void composeMedicationKnowledgeStorageGuidelineEnvironmentalSettingComponent(String name, MedicationKnowledge.MedicationKnowledgeStorageGuidelineEnvironmentalSettingComponent element) throws IOException {
51651    if (element != null) {
51652    composeElementAttributes(element);
51653      xml.enter(FHIR_NS, name);
51654      composeMedicationKnowledgeStorageGuidelineEnvironmentalSettingComponentElements(element);
51655      composeElementClose(element);
51656      xml.exit(FHIR_NS, name);
51657    }
51658  }
51659
51660  protected void composeMedicationKnowledgeStorageGuidelineEnvironmentalSettingComponentElements(MedicationKnowledge.MedicationKnowledgeStorageGuidelineEnvironmentalSettingComponent element) throws IOException {
51661    composeBackboneElementElements(element);
51662    if (element.hasType()) {
51663      composeCodeableConcept("type", element.getType());
51664    }
51665    if (element.hasValue()) {
51666      composeType("value", element.getValue());
51667    }  }
51668
51669  protected void composeMedicationKnowledgeRegulatoryComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatoryComponent element) throws IOException {
51670    if (element != null) {
51671    composeElementAttributes(element);
51672      xml.enter(FHIR_NS, name);
51673      composeMedicationKnowledgeRegulatoryComponentElements(element);
51674      composeElementClose(element);
51675      xml.exit(FHIR_NS, name);
51676    }
51677  }
51678
51679  protected void composeMedicationKnowledgeRegulatoryComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatoryComponent element) throws IOException {
51680    composeBackboneElementElements(element);
51681    if (element.hasRegulatoryAuthority()) {
51682      composeReference("regulatoryAuthority", element.getRegulatoryAuthority());
51683    }
51684    if (element.hasSubstitution()) { 
51685      for (MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent e : element.getSubstitution()) 
51686          composeMedicationKnowledgeRegulatorySubstitutionComponent("substitution", e);
51687    }
51688    if (element.hasSchedule()) { 
51689      for (CodeableConcept e : element.getSchedule()) 
51690          composeCodeableConcept("schedule", e);
51691    }
51692    if (element.hasMaxDispense()) {
51693      composeMedicationKnowledgeRegulatoryMaxDispenseComponent("maxDispense", element.getMaxDispense());
51694    }
51695  }
51696
51697  protected void composeMedicationKnowledgeRegulatorySubstitutionComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent element) throws IOException {
51698    if (element != null) {
51699    composeElementAttributes(element);
51700      xml.enter(FHIR_NS, name);
51701      composeMedicationKnowledgeRegulatorySubstitutionComponentElements(element);
51702      composeElementClose(element);
51703      xml.exit(FHIR_NS, name);
51704    }
51705  }
51706
51707  protected void composeMedicationKnowledgeRegulatorySubstitutionComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent element) throws IOException {
51708    composeBackboneElementElements(element);
51709    if (element.hasType()) {
51710      composeCodeableConcept("type", element.getType());
51711    }
51712    if (element.hasAllowedElement()) {
51713      composeBoolean("allowed", element.getAllowedElement());
51714    }
51715  }
51716
51717  protected void composeMedicationKnowledgeRegulatoryMaxDispenseComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent element) throws IOException {
51718    if (element != null) {
51719    composeElementAttributes(element);
51720      xml.enter(FHIR_NS, name);
51721      composeMedicationKnowledgeRegulatoryMaxDispenseComponentElements(element);
51722      composeElementClose(element);
51723      xml.exit(FHIR_NS, name);
51724    }
51725  }
51726
51727  protected void composeMedicationKnowledgeRegulatoryMaxDispenseComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent element) throws IOException {
51728    composeBackboneElementElements(element);
51729    if (element.hasQuantity()) {
51730      composeQuantity("quantity", element.getQuantity());
51731    }
51732    if (element.hasPeriod()) {
51733      composeDuration("period", element.getPeriod());
51734    }
51735  }
51736
51737  protected void composeMedicationKnowledgeDefinitionalComponent(String name, MedicationKnowledge.MedicationKnowledgeDefinitionalComponent element) throws IOException {
51738    if (element != null) {
51739    composeElementAttributes(element);
51740      xml.enter(FHIR_NS, name);
51741      composeMedicationKnowledgeDefinitionalComponentElements(element);
51742      composeElementClose(element);
51743      xml.exit(FHIR_NS, name);
51744    }
51745  }
51746
51747  protected void composeMedicationKnowledgeDefinitionalComponentElements(MedicationKnowledge.MedicationKnowledgeDefinitionalComponent element) throws IOException {
51748    composeBackboneElementElements(element);
51749    if (element.hasDefinition()) { 
51750      for (Reference e : element.getDefinition()) 
51751          composeReference("definition", e);
51752    }
51753    if (element.hasDoseForm()) {
51754      composeCodeableConcept("doseForm", element.getDoseForm());
51755    }
51756    if (element.hasIntendedRoute()) { 
51757      for (CodeableConcept e : element.getIntendedRoute()) 
51758          composeCodeableConcept("intendedRoute", e);
51759    }
51760    if (element.hasIngredient()) { 
51761      for (MedicationKnowledge.MedicationKnowledgeDefinitionalIngredientComponent e : element.getIngredient()) 
51762          composeMedicationKnowledgeDefinitionalIngredientComponent("ingredient", e);
51763    }
51764    if (element.hasDrugCharacteristic()) { 
51765      for (MedicationKnowledge.MedicationKnowledgeDefinitionalDrugCharacteristicComponent e : element.getDrugCharacteristic()) 
51766          composeMedicationKnowledgeDefinitionalDrugCharacteristicComponent("drugCharacteristic", e);
51767    }
51768  }
51769
51770  protected void composeMedicationKnowledgeDefinitionalIngredientComponent(String name, MedicationKnowledge.MedicationKnowledgeDefinitionalIngredientComponent element) throws IOException {
51771    if (element != null) {
51772    composeElementAttributes(element);
51773      xml.enter(FHIR_NS, name);
51774      composeMedicationKnowledgeDefinitionalIngredientComponentElements(element);
51775      composeElementClose(element);
51776      xml.exit(FHIR_NS, name);
51777    }
51778  }
51779
51780  protected void composeMedicationKnowledgeDefinitionalIngredientComponentElements(MedicationKnowledge.MedicationKnowledgeDefinitionalIngredientComponent element) throws IOException {
51781    composeBackboneElementElements(element);
51782    if (element.hasItem()) {
51783      composeCodeableReference("item", element.getItem());
51784    }
51785    if (element.hasType()) {
51786      composeCodeableConcept("type", element.getType());
51787    }
51788    if (element.hasStrength()) {
51789      composeType("strength", element.getStrength());
51790    }  }
51791
51792  protected void composeMedicationKnowledgeDefinitionalDrugCharacteristicComponent(String name, MedicationKnowledge.MedicationKnowledgeDefinitionalDrugCharacteristicComponent element) throws IOException {
51793    if (element != null) {
51794    composeElementAttributes(element);
51795      xml.enter(FHIR_NS, name);
51796      composeMedicationKnowledgeDefinitionalDrugCharacteristicComponentElements(element);
51797      composeElementClose(element);
51798      xml.exit(FHIR_NS, name);
51799    }
51800  }
51801
51802  protected void composeMedicationKnowledgeDefinitionalDrugCharacteristicComponentElements(MedicationKnowledge.MedicationKnowledgeDefinitionalDrugCharacteristicComponent element) throws IOException {
51803    composeBackboneElementElements(element);
51804    if (element.hasType()) {
51805      composeCodeableConcept("type", element.getType());
51806    }
51807    if (element.hasValue()) {
51808      composeType("value", element.getValue());
51809    }  }
51810
51811  protected void composeMedicationRequest(String name, MedicationRequest element) throws IOException {
51812    if (element != null) {
51813    composeResourceAttributes(element);
51814      xml.enter(FHIR_NS, name);
51815      composeMedicationRequestElements(element);
51816      composeElementClose(element);
51817      xml.exit(FHIR_NS, name);
51818    }
51819  }
51820
51821  protected void composeMedicationRequestElements(MedicationRequest element) throws IOException {
51822    composeDomainResourceElements(element);
51823    if (element.hasIdentifier()) { 
51824      for (Identifier e : element.getIdentifier()) 
51825          composeIdentifier("identifier", e);
51826    }
51827    if (element.hasBasedOn()) { 
51828      for (Reference e : element.getBasedOn()) 
51829          composeReference("basedOn", e);
51830    }
51831    if (element.hasPriorPrescription()) {
51832      composeReference("priorPrescription", element.getPriorPrescription());
51833    }
51834    if (element.hasGroupIdentifier()) {
51835      composeIdentifier("groupIdentifier", element.getGroupIdentifier());
51836    }
51837    if (element.hasStatusElement())
51838      composeEnumeration("status", element.getStatusElement(), new MedicationRequest.MedicationrequestStatusEnumFactory());
51839    if (element.hasStatusReason()) {
51840      composeCodeableConcept("statusReason", element.getStatusReason());
51841    }
51842    if (element.hasStatusChangedElement()) {
51843      composeDateTime("statusChanged", element.getStatusChangedElement());
51844    }
51845    if (element.hasIntentElement())
51846      composeEnumeration("intent", element.getIntentElement(), new MedicationRequest.MedicationRequestIntentEnumFactory());
51847    if (element.hasCategory()) { 
51848      for (CodeableConcept e : element.getCategory()) 
51849          composeCodeableConcept("category", e);
51850    }
51851    if (element.hasPriorityElement())
51852      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
51853    if (element.hasDoNotPerformElement()) {
51854      composeBoolean("doNotPerform", element.getDoNotPerformElement());
51855    }
51856    if (element.hasMedication()) {
51857      composeCodeableReference("medication", element.getMedication());
51858    }
51859    if (element.hasSubject()) {
51860      composeReference("subject", element.getSubject());
51861    }
51862    if (element.hasInformationSource()) { 
51863      for (Reference e : element.getInformationSource()) 
51864          composeReference("informationSource", e);
51865    }
51866    if (element.hasEncounter()) {
51867      composeReference("encounter", element.getEncounter());
51868    }
51869    if (element.hasSupportingInformation()) { 
51870      for (Reference e : element.getSupportingInformation()) 
51871          composeReference("supportingInformation", e);
51872    }
51873    if (element.hasAuthoredOnElement()) {
51874      composeDateTime("authoredOn", element.getAuthoredOnElement());
51875    }
51876    if (element.hasRequester()) {
51877      composeReference("requester", element.getRequester());
51878    }
51879    if (element.hasReportedElement()) {
51880      composeBoolean("reported", element.getReportedElement());
51881    }
51882    if (element.hasPerformerType()) {
51883      composeCodeableConcept("performerType", element.getPerformerType());
51884    }
51885    if (element.hasPerformer()) { 
51886      for (Reference e : element.getPerformer()) 
51887          composeReference("performer", e);
51888    }
51889    if (element.hasDevice()) { 
51890      for (CodeableReference e : element.getDevice()) 
51891          composeCodeableReference("device", e);
51892    }
51893    if (element.hasRecorder()) {
51894      composeReference("recorder", element.getRecorder());
51895    }
51896    if (element.hasReason()) { 
51897      for (CodeableReference e : element.getReason()) 
51898          composeCodeableReference("reason", e);
51899    }
51900    if (element.hasCourseOfTherapyType()) {
51901      composeCodeableConcept("courseOfTherapyType", element.getCourseOfTherapyType());
51902    }
51903    if (element.hasInsurance()) { 
51904      for (Reference e : element.getInsurance()) 
51905          composeReference("insurance", e);
51906    }
51907    if (element.hasNote()) { 
51908      for (Annotation e : element.getNote()) 
51909          composeAnnotation("note", e);
51910    }
51911    if (element.hasRenderedDosageInstructionElement()) {
51912      composeMarkdown("renderedDosageInstruction", element.getRenderedDosageInstructionElement());
51913    }
51914    if (element.hasEffectiveDosePeriod()) {
51915      composePeriod("effectiveDosePeriod", element.getEffectiveDosePeriod());
51916    }
51917    if (element.hasDosageInstruction()) { 
51918      for (Dosage e : element.getDosageInstruction()) 
51919          composeDosage("dosageInstruction", e);
51920    }
51921    if (element.hasDispenseRequest()) {
51922      composeMedicationRequestDispenseRequestComponent("dispenseRequest", element.getDispenseRequest());
51923    }
51924    if (element.hasSubstitution()) {
51925      composeMedicationRequestSubstitutionComponent("substitution", element.getSubstitution());
51926    }
51927    if (element.hasEventHistory()) { 
51928      for (Reference e : element.getEventHistory()) 
51929          composeReference("eventHistory", e);
51930    }
51931  }
51932
51933  protected void composeMedicationRequestDispenseRequestComponent(String name, MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
51934    if (element != null) {
51935    composeElementAttributes(element);
51936      xml.enter(FHIR_NS, name);
51937      composeMedicationRequestDispenseRequestComponentElements(element);
51938      composeElementClose(element);
51939      xml.exit(FHIR_NS, name);
51940    }
51941  }
51942
51943  protected void composeMedicationRequestDispenseRequestComponentElements(MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
51944    composeBackboneElementElements(element);
51945    if (element.hasInitialFill()) {
51946      composeMedicationRequestDispenseRequestInitialFillComponent("initialFill", element.getInitialFill());
51947    }
51948    if (element.hasDispenseInterval()) {
51949      composeDuration("dispenseInterval", element.getDispenseInterval());
51950    }
51951    if (element.hasValidityPeriod()) {
51952      composePeriod("validityPeriod", element.getValidityPeriod());
51953    }
51954    if (element.hasNumberOfRepeatsAllowedElement()) {
51955      composeUnsignedInt("numberOfRepeatsAllowed", element.getNumberOfRepeatsAllowedElement());
51956    }
51957    if (element.hasQuantity()) {
51958      composeQuantity("quantity", element.getQuantity());
51959    }
51960    if (element.hasExpectedSupplyDuration()) {
51961      composeDuration("expectedSupplyDuration", element.getExpectedSupplyDuration());
51962    }
51963    if (element.hasDispenser()) {
51964      composeReference("dispenser", element.getDispenser());
51965    }
51966    if (element.hasDispenserInstruction()) { 
51967      for (Annotation e : element.getDispenserInstruction()) 
51968          composeAnnotation("dispenserInstruction", e);
51969    }
51970    if (element.hasDoseAdministrationAid()) {
51971      composeCodeableConcept("doseAdministrationAid", element.getDoseAdministrationAid());
51972    }
51973  }
51974
51975  protected void composeMedicationRequestDispenseRequestInitialFillComponent(String name, MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent element) throws IOException {
51976    if (element != null) {
51977    composeElementAttributes(element);
51978      xml.enter(FHIR_NS, name);
51979      composeMedicationRequestDispenseRequestInitialFillComponentElements(element);
51980      composeElementClose(element);
51981      xml.exit(FHIR_NS, name);
51982    }
51983  }
51984
51985  protected void composeMedicationRequestDispenseRequestInitialFillComponentElements(MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent element) throws IOException {
51986    composeBackboneElementElements(element);
51987    if (element.hasQuantity()) {
51988      composeQuantity("quantity", element.getQuantity());
51989    }
51990    if (element.hasDuration()) {
51991      composeDuration("duration", element.getDuration());
51992    }
51993  }
51994
51995  protected void composeMedicationRequestSubstitutionComponent(String name, MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
51996    if (element != null) {
51997    composeElementAttributes(element);
51998      xml.enter(FHIR_NS, name);
51999      composeMedicationRequestSubstitutionComponentElements(element);
52000      composeElementClose(element);
52001      xml.exit(FHIR_NS, name);
52002    }
52003  }
52004
52005  protected void composeMedicationRequestSubstitutionComponentElements(MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
52006    composeBackboneElementElements(element);
52007    if (element.hasAllowed()) {
52008      composeType("allowed", element.getAllowed());
52009    }    if (element.hasReason()) {
52010      composeCodeableConcept("reason", element.getReason());
52011    }
52012  }
52013
52014  protected void composeMedicationStatement(String name, MedicationStatement element) throws IOException {
52015    if (element != null) {
52016    composeResourceAttributes(element);
52017      xml.enter(FHIR_NS, name);
52018      composeMedicationStatementElements(element);
52019      composeElementClose(element);
52020      xml.exit(FHIR_NS, name);
52021    }
52022  }
52023
52024  protected void composeMedicationStatementElements(MedicationStatement element) throws IOException {
52025    composeDomainResourceElements(element);
52026    if (element.hasIdentifier()) { 
52027      for (Identifier e : element.getIdentifier()) 
52028          composeIdentifier("identifier", e);
52029    }
52030    if (element.hasPartOf()) { 
52031      for (Reference e : element.getPartOf()) 
52032          composeReference("partOf", e);
52033    }
52034    if (element.hasStatusElement())
52035      composeEnumeration("status", element.getStatusElement(), new MedicationStatement.MedicationStatementStatusCodesEnumFactory());
52036    if (element.hasCategory()) { 
52037      for (CodeableConcept e : element.getCategory()) 
52038          composeCodeableConcept("category", e);
52039    }
52040    if (element.hasMedication()) {
52041      composeCodeableReference("medication", element.getMedication());
52042    }
52043    if (element.hasSubject()) {
52044      composeReference("subject", element.getSubject());
52045    }
52046    if (element.hasEncounter()) {
52047      composeReference("encounter", element.getEncounter());
52048    }
52049    if (element.hasEffective()) {
52050      composeType("effective", element.getEffective());
52051    }    if (element.hasDateAssertedElement()) {
52052      composeDateTime("dateAsserted", element.getDateAssertedElement());
52053    }
52054    if (element.hasInformationSource()) { 
52055      for (Reference e : element.getInformationSource()) 
52056          composeReference("informationSource", e);
52057    }
52058    if (element.hasDerivedFrom()) { 
52059      for (Reference e : element.getDerivedFrom()) 
52060          composeReference("derivedFrom", e);
52061    }
52062    if (element.hasReason()) { 
52063      for (CodeableReference e : element.getReason()) 
52064          composeCodeableReference("reason", e);
52065    }
52066    if (element.hasNote()) { 
52067      for (Annotation e : element.getNote()) 
52068          composeAnnotation("note", e);
52069    }
52070    if (element.hasRelatedClinicalInformation()) { 
52071      for (Reference e : element.getRelatedClinicalInformation()) 
52072          composeReference("relatedClinicalInformation", e);
52073    }
52074    if (element.hasRenderedDosageInstructionElement()) {
52075      composeMarkdown("renderedDosageInstruction", element.getRenderedDosageInstructionElement());
52076    }
52077    if (element.hasDosage()) { 
52078      for (Dosage e : element.getDosage()) 
52079          composeDosage("dosage", e);
52080    }
52081    if (element.hasAdherence()) {
52082      composeMedicationStatementAdherenceComponent("adherence", element.getAdherence());
52083    }
52084  }
52085
52086  protected void composeMedicationStatementAdherenceComponent(String name, MedicationStatement.MedicationStatementAdherenceComponent element) throws IOException {
52087    if (element != null) {
52088    composeElementAttributes(element);
52089      xml.enter(FHIR_NS, name);
52090      composeMedicationStatementAdherenceComponentElements(element);
52091      composeElementClose(element);
52092      xml.exit(FHIR_NS, name);
52093    }
52094  }
52095
52096  protected void composeMedicationStatementAdherenceComponentElements(MedicationStatement.MedicationStatementAdherenceComponent element) throws IOException {
52097    composeBackboneElementElements(element);
52098    if (element.hasCode()) {
52099      composeCodeableConcept("code", element.getCode());
52100    }
52101    if (element.hasReason()) {
52102      composeCodeableConcept("reason", element.getReason());
52103    }
52104  }
52105
52106  protected void composeMedicinalProductDefinition(String name, MedicinalProductDefinition element) throws IOException {
52107    if (element != null) {
52108    composeResourceAttributes(element);
52109      xml.enter(FHIR_NS, name);
52110      composeMedicinalProductDefinitionElements(element);
52111      composeElementClose(element);
52112      xml.exit(FHIR_NS, name);
52113    }
52114  }
52115
52116  protected void composeMedicinalProductDefinitionElements(MedicinalProductDefinition element) throws IOException {
52117    composeDomainResourceElements(element);
52118    if (element.hasIdentifier()) { 
52119      for (Identifier e : element.getIdentifier()) 
52120          composeIdentifier("identifier", e);
52121    }
52122    if (element.hasType()) {
52123      composeCodeableConcept("type", element.getType());
52124    }
52125    if (element.hasDomain()) {
52126      composeCodeableConcept("domain", element.getDomain());
52127    }
52128    if (element.hasVersionElement()) {
52129      composeString("version", element.getVersionElement());
52130    }
52131    if (element.hasStatus()) {
52132      composeCodeableConcept("status", element.getStatus());
52133    }
52134    if (element.hasStatusDateElement()) {
52135      composeDateTime("statusDate", element.getStatusDateElement());
52136    }
52137    if (element.hasDescriptionElement()) {
52138      composeMarkdown("description", element.getDescriptionElement());
52139    }
52140    if (element.hasCombinedPharmaceuticalDoseForm()) {
52141      composeCodeableConcept("combinedPharmaceuticalDoseForm", element.getCombinedPharmaceuticalDoseForm());
52142    }
52143    if (element.hasRoute()) { 
52144      for (CodeableConcept e : element.getRoute()) 
52145          composeCodeableConcept("route", e);
52146    }
52147    if (element.hasIndicationElement()) {
52148      composeMarkdown("indication", element.getIndicationElement());
52149    }
52150    if (element.hasLegalStatusOfSupply()) {
52151      composeCodeableConcept("legalStatusOfSupply", element.getLegalStatusOfSupply());
52152    }
52153    if (element.hasAdditionalMonitoringIndicator()) {
52154      composeCodeableConcept("additionalMonitoringIndicator", element.getAdditionalMonitoringIndicator());
52155    }
52156    if (element.hasSpecialMeasures()) { 
52157      for (CodeableConcept e : element.getSpecialMeasures()) 
52158          composeCodeableConcept("specialMeasures", e);
52159    }
52160    if (element.hasPediatricUseIndicator()) {
52161      composeCodeableConcept("pediatricUseIndicator", element.getPediatricUseIndicator());
52162    }
52163    if (element.hasClassification()) { 
52164      for (CodeableConcept e : element.getClassification()) 
52165          composeCodeableConcept("classification", e);
52166    }
52167    if (element.hasMarketingStatus()) { 
52168      for (MarketingStatus e : element.getMarketingStatus()) 
52169          composeMarketingStatus("marketingStatus", e);
52170    }
52171    if (element.hasPackagedMedicinalProduct()) { 
52172      for (CodeableConcept e : element.getPackagedMedicinalProduct()) 
52173          composeCodeableConcept("packagedMedicinalProduct", e);
52174    }
52175    if (element.hasComprisedOf()) { 
52176      for (Reference e : element.getComprisedOf()) 
52177          composeReference("comprisedOf", e);
52178    }
52179    if (element.hasIngredient()) { 
52180      for (CodeableConcept e : element.getIngredient()) 
52181          composeCodeableConcept("ingredient", e);
52182    }
52183    if (element.hasImpurity()) { 
52184      for (CodeableReference e : element.getImpurity()) 
52185          composeCodeableReference("impurity", e);
52186    }
52187    if (element.hasAttachedDocument()) { 
52188      for (Reference e : element.getAttachedDocument()) 
52189          composeReference("attachedDocument", e);
52190    }
52191    if (element.hasMasterFile()) { 
52192      for (Reference e : element.getMasterFile()) 
52193          composeReference("masterFile", e);
52194    }
52195    if (element.hasContact()) { 
52196      for (MedicinalProductDefinition.MedicinalProductDefinitionContactComponent e : element.getContact()) 
52197          composeMedicinalProductDefinitionContactComponent("contact", e);
52198    }
52199    if (element.hasClinicalTrial()) { 
52200      for (Reference e : element.getClinicalTrial()) 
52201          composeReference("clinicalTrial", e);
52202    }
52203    if (element.hasCode()) { 
52204      for (Coding e : element.getCode()) 
52205          composeCoding("code", e);
52206    }
52207    if (element.hasName()) { 
52208      for (MedicinalProductDefinition.MedicinalProductDefinitionNameComponent e : element.getName()) 
52209          composeMedicinalProductDefinitionNameComponent("name", e);
52210    }
52211    if (element.hasCrossReference()) { 
52212      for (MedicinalProductDefinition.MedicinalProductDefinitionCrossReferenceComponent e : element.getCrossReference()) 
52213          composeMedicinalProductDefinitionCrossReferenceComponent("crossReference", e);
52214    }
52215    if (element.hasOperation()) { 
52216      for (MedicinalProductDefinition.MedicinalProductDefinitionOperationComponent e : element.getOperation()) 
52217          composeMedicinalProductDefinitionOperationComponent("operation", e);
52218    }
52219    if (element.hasCharacteristic()) { 
52220      for (MedicinalProductDefinition.MedicinalProductDefinitionCharacteristicComponent e : element.getCharacteristic()) 
52221          composeMedicinalProductDefinitionCharacteristicComponent("characteristic", e);
52222    }
52223  }
52224
52225  protected void composeMedicinalProductDefinitionContactComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionContactComponent element) throws IOException {
52226    if (element != null) {
52227    composeElementAttributes(element);
52228      xml.enter(FHIR_NS, name);
52229      composeMedicinalProductDefinitionContactComponentElements(element);
52230      composeElementClose(element);
52231      xml.exit(FHIR_NS, name);
52232    }
52233  }
52234
52235  protected void composeMedicinalProductDefinitionContactComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionContactComponent element) throws IOException {
52236    composeBackboneElementElements(element);
52237    if (element.hasType()) {
52238      composeCodeableConcept("type", element.getType());
52239    }
52240    if (element.hasContact()) {
52241      composeReference("contact", element.getContact());
52242    }
52243  }
52244
52245  protected void composeMedicinalProductDefinitionNameComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionNameComponent element) throws IOException {
52246    if (element != null) {
52247    composeElementAttributes(element);
52248      xml.enter(FHIR_NS, name);
52249      composeMedicinalProductDefinitionNameComponentElements(element);
52250      composeElementClose(element);
52251      xml.exit(FHIR_NS, name);
52252    }
52253  }
52254
52255  protected void composeMedicinalProductDefinitionNameComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionNameComponent element) throws IOException {
52256    composeBackboneElementElements(element);
52257    if (element.hasProductNameElement()) {
52258      composeString("productName", element.getProductNameElement());
52259    }
52260    if (element.hasType()) {
52261      composeCodeableConcept("type", element.getType());
52262    }
52263    if (element.hasPart()) { 
52264      for (MedicinalProductDefinition.MedicinalProductDefinitionNamePartComponent e : element.getPart()) 
52265          composeMedicinalProductDefinitionNamePartComponent("part", e);
52266    }
52267    if (element.hasUsage()) { 
52268      for (MedicinalProductDefinition.MedicinalProductDefinitionNameUsageComponent e : element.getUsage()) 
52269          composeMedicinalProductDefinitionNameUsageComponent("usage", e);
52270    }
52271  }
52272
52273  protected void composeMedicinalProductDefinitionNamePartComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionNamePartComponent element) throws IOException {
52274    if (element != null) {
52275    composeElementAttributes(element);
52276      xml.enter(FHIR_NS, name);
52277      composeMedicinalProductDefinitionNamePartComponentElements(element);
52278      composeElementClose(element);
52279      xml.exit(FHIR_NS, name);
52280    }
52281  }
52282
52283  protected void composeMedicinalProductDefinitionNamePartComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionNamePartComponent element) throws IOException {
52284    composeBackboneElementElements(element);
52285    if (element.hasPartElement()) {
52286      composeString("part", element.getPartElement());
52287    }
52288    if (element.hasType()) {
52289      composeCodeableConcept("type", element.getType());
52290    }
52291  }
52292
52293  protected void composeMedicinalProductDefinitionNameUsageComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionNameUsageComponent element) throws IOException {
52294    if (element != null) {
52295    composeElementAttributes(element);
52296      xml.enter(FHIR_NS, name);
52297      composeMedicinalProductDefinitionNameUsageComponentElements(element);
52298      composeElementClose(element);
52299      xml.exit(FHIR_NS, name);
52300    }
52301  }
52302
52303  protected void composeMedicinalProductDefinitionNameUsageComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionNameUsageComponent element) throws IOException {
52304    composeBackboneElementElements(element);
52305    if (element.hasCountry()) {
52306      composeCodeableConcept("country", element.getCountry());
52307    }
52308    if (element.hasJurisdiction()) {
52309      composeCodeableConcept("jurisdiction", element.getJurisdiction());
52310    }
52311    if (element.hasLanguage()) {
52312      composeCodeableConcept("language", element.getLanguage());
52313    }
52314  }
52315
52316  protected void composeMedicinalProductDefinitionCrossReferenceComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionCrossReferenceComponent element) throws IOException {
52317    if (element != null) {
52318    composeElementAttributes(element);
52319      xml.enter(FHIR_NS, name);
52320      composeMedicinalProductDefinitionCrossReferenceComponentElements(element);
52321      composeElementClose(element);
52322      xml.exit(FHIR_NS, name);
52323    }
52324  }
52325
52326  protected void composeMedicinalProductDefinitionCrossReferenceComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionCrossReferenceComponent element) throws IOException {
52327    composeBackboneElementElements(element);
52328    if (element.hasProduct()) {
52329      composeCodeableReference("product", element.getProduct());
52330    }
52331    if (element.hasType()) {
52332      composeCodeableConcept("type", element.getType());
52333    }
52334  }
52335
52336  protected void composeMedicinalProductDefinitionOperationComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionOperationComponent element) throws IOException {
52337    if (element != null) {
52338    composeElementAttributes(element);
52339      xml.enter(FHIR_NS, name);
52340      composeMedicinalProductDefinitionOperationComponentElements(element);
52341      composeElementClose(element);
52342      xml.exit(FHIR_NS, name);
52343    }
52344  }
52345
52346  protected void composeMedicinalProductDefinitionOperationComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionOperationComponent element) throws IOException {
52347    composeBackboneElementElements(element);
52348    if (element.hasType()) {
52349      composeCodeableReference("type", element.getType());
52350    }
52351    if (element.hasEffectiveDate()) {
52352      composePeriod("effectiveDate", element.getEffectiveDate());
52353    }
52354    if (element.hasOrganization()) { 
52355      for (Reference e : element.getOrganization()) 
52356          composeReference("organization", e);
52357    }
52358    if (element.hasConfidentialityIndicator()) {
52359      composeCodeableConcept("confidentialityIndicator", element.getConfidentialityIndicator());
52360    }
52361  }
52362
52363  protected void composeMedicinalProductDefinitionCharacteristicComponent(String name, MedicinalProductDefinition.MedicinalProductDefinitionCharacteristicComponent element) throws IOException {
52364    if (element != null) {
52365    composeElementAttributes(element);
52366      xml.enter(FHIR_NS, name);
52367      composeMedicinalProductDefinitionCharacteristicComponentElements(element);
52368      composeElementClose(element);
52369      xml.exit(FHIR_NS, name);
52370    }
52371  }
52372
52373  protected void composeMedicinalProductDefinitionCharacteristicComponentElements(MedicinalProductDefinition.MedicinalProductDefinitionCharacteristicComponent element) throws IOException {
52374    composeBackboneElementElements(element);
52375    if (element.hasType()) {
52376      composeCodeableConcept("type", element.getType());
52377    }
52378    if (element.hasValue()) {
52379      composeType("value", element.getValue());
52380    }  }
52381
52382  protected void composeMessageDefinition(String name, MessageDefinition element) throws IOException {
52383    if (element != null) {
52384    composeResourceAttributes(element);
52385      xml.enter(FHIR_NS, name);
52386      composeMessageDefinitionElements(element);
52387      composeElementClose(element);
52388      xml.exit(FHIR_NS, name);
52389    }
52390  }
52391
52392  protected void composeMessageDefinitionElements(MessageDefinition element) throws IOException {
52393    composeCanonicalResourceElements(element);
52394    if (element.hasUrlElement()) {
52395      composeUri("url", element.getUrlElement());
52396    }
52397    if (element.hasIdentifier()) { 
52398      for (Identifier e : element.getIdentifier()) 
52399          composeIdentifier("identifier", e);
52400    }
52401    if (element.hasVersionElement()) {
52402      composeString("version", element.getVersionElement());
52403    }
52404    if (element.hasVersionAlgorithm()) {
52405      composeType("versionAlgorithm", element.getVersionAlgorithm());
52406    }    if (element.hasNameElement()) {
52407      composeString("name", element.getNameElement());
52408    }
52409    if (element.hasTitleElement()) {
52410      composeString("title", element.getTitleElement());
52411    }
52412    if (element.hasReplaces()) { 
52413      for (CanonicalType e : element.getReplaces()) 
52414          composeCanonical("replaces", e);
52415    }
52416    if (element.hasStatusElement())
52417      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
52418    if (element.hasExperimentalElement()) {
52419      composeBoolean("experimental", element.getExperimentalElement());
52420    }
52421    if (element.hasDateElement()) {
52422      composeDateTime("date", element.getDateElement());
52423    }
52424    if (element.hasPublisherElement()) {
52425      composeString("publisher", element.getPublisherElement());
52426    }
52427    if (element.hasContact()) { 
52428      for (ContactDetail e : element.getContact()) 
52429          composeContactDetail("contact", e);
52430    }
52431    if (element.hasDescriptionElement()) {
52432      composeMarkdown("description", element.getDescriptionElement());
52433    }
52434    if (element.hasUseContext()) { 
52435      for (UsageContext e : element.getUseContext()) 
52436          composeUsageContext("useContext", e);
52437    }
52438    if (element.hasJurisdiction()) { 
52439      for (CodeableConcept e : element.getJurisdiction()) 
52440          composeCodeableConcept("jurisdiction", e);
52441    }
52442    if (element.hasPurposeElement()) {
52443      composeMarkdown("purpose", element.getPurposeElement());
52444    }
52445    if (element.hasCopyrightElement()) {
52446      composeMarkdown("copyright", element.getCopyrightElement());
52447    }
52448    if (element.hasCopyrightLabelElement()) {
52449      composeString("copyrightLabel", element.getCopyrightLabelElement());
52450    }
52451    if (element.hasBaseElement()) {
52452      composeCanonical("base", element.getBaseElement());
52453    }
52454    if (element.hasParent()) { 
52455      for (CanonicalType e : element.getParent()) 
52456          composeCanonical("parent", e);
52457    }
52458    if (element.hasEvent()) {
52459      composeType("event", element.getEvent());
52460    }    if (element.hasCategoryElement())
52461      composeEnumeration("category", element.getCategoryElement(), new MessageDefinition.MessageSignificanceCategoryEnumFactory());
52462    if (element.hasFocus()) { 
52463      for (MessageDefinition.MessageDefinitionFocusComponent e : element.getFocus()) 
52464          composeMessageDefinitionFocusComponent("focus", e);
52465    }
52466    if (element.hasResponseRequiredElement())
52467      composeEnumeration("responseRequired", element.getResponseRequiredElement(), new MessageDefinition.MessageheaderResponseRequestEnumFactory());
52468    if (element.hasAllowedResponse()) { 
52469      for (MessageDefinition.MessageDefinitionAllowedResponseComponent e : element.getAllowedResponse()) 
52470          composeMessageDefinitionAllowedResponseComponent("allowedResponse", e);
52471    }
52472    if (element.hasGraphElement()) {
52473      composeCanonical("graph", element.getGraphElement());
52474    }
52475  }
52476
52477  protected void composeMessageDefinitionFocusComponent(String name, MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
52478    if (element != null) {
52479    composeElementAttributes(element);
52480      xml.enter(FHIR_NS, name);
52481      composeMessageDefinitionFocusComponentElements(element);
52482      composeElementClose(element);
52483      xml.exit(FHIR_NS, name);
52484    }
52485  }
52486
52487  protected void composeMessageDefinitionFocusComponentElements(MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
52488    composeBackboneElementElements(element);
52489    if (element.hasCodeElement()) {
52490      composeCode("code", element.getCodeElement());
52491    }
52492    if (element.hasProfileElement()) {
52493      composeCanonical("profile", element.getProfileElement());
52494    }
52495    if (element.hasMinElement()) {
52496      composeUnsignedInt("min", element.getMinElement());
52497    }
52498    if (element.hasMaxElement()) {
52499      composeString("max", element.getMaxElement());
52500    }
52501  }
52502
52503  protected void composeMessageDefinitionAllowedResponseComponent(String name, MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
52504    if (element != null) {
52505    composeElementAttributes(element);
52506      xml.enter(FHIR_NS, name);
52507      composeMessageDefinitionAllowedResponseComponentElements(element);
52508      composeElementClose(element);
52509      xml.exit(FHIR_NS, name);
52510    }
52511  }
52512
52513  protected void composeMessageDefinitionAllowedResponseComponentElements(MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
52514    composeBackboneElementElements(element);
52515    if (element.hasMessageElement()) {
52516      composeCanonical("message", element.getMessageElement());
52517    }
52518    if (element.hasSituationElement()) {
52519      composeMarkdown("situation", element.getSituationElement());
52520    }
52521  }
52522
52523  protected void composeMessageHeader(String name, MessageHeader element) throws IOException {
52524    if (element != null) {
52525    composeResourceAttributes(element);
52526      xml.enter(FHIR_NS, name);
52527      composeMessageHeaderElements(element);
52528      composeElementClose(element);
52529      xml.exit(FHIR_NS, name);
52530    }
52531  }
52532
52533  protected void composeMessageHeaderElements(MessageHeader element) throws IOException {
52534    composeDomainResourceElements(element);
52535    if (element.hasEvent()) {
52536      composeType("event", element.getEvent());
52537    }    if (element.hasDestination()) { 
52538      for (MessageHeader.MessageDestinationComponent e : element.getDestination()) 
52539          composeMessageHeaderMessageDestinationComponent("destination", e);
52540    }
52541    if (element.hasSender()) {
52542      composeReference("sender", element.getSender());
52543    }
52544    if (element.hasAuthor()) {
52545      composeReference("author", element.getAuthor());
52546    }
52547    if (element.hasSource()) {
52548      composeMessageHeaderMessageSourceComponent("source", element.getSource());
52549    }
52550    if (element.hasResponsible()) {
52551      composeReference("responsible", element.getResponsible());
52552    }
52553    if (element.hasReason()) {
52554      composeCodeableConcept("reason", element.getReason());
52555    }
52556    if (element.hasResponse()) {
52557      composeMessageHeaderResponseComponent("response", element.getResponse());
52558    }
52559    if (element.hasFocus()) { 
52560      for (Reference e : element.getFocus()) 
52561          composeReference("focus", e);
52562    }
52563    if (element.hasDefinitionElement()) {
52564      composeCanonical("definition", element.getDefinitionElement());
52565    }
52566  }
52567
52568  protected void composeMessageHeaderMessageDestinationComponent(String name, MessageHeader.MessageDestinationComponent element) throws IOException {
52569    if (element != null) {
52570    composeElementAttributes(element);
52571      xml.enter(FHIR_NS, name);
52572      composeMessageHeaderMessageDestinationComponentElements(element);
52573      composeElementClose(element);
52574      xml.exit(FHIR_NS, name);
52575    }
52576  }
52577
52578  protected void composeMessageHeaderMessageDestinationComponentElements(MessageHeader.MessageDestinationComponent element) throws IOException {
52579    composeBackboneElementElements(element);
52580    if (element.hasEndpoint()) {
52581      composeType("endpoint", element.getEndpoint());
52582    }    if (element.hasNameElement()) {
52583      composeString("name", element.getNameElement());
52584    }
52585    if (element.hasTarget()) {
52586      composeReference("target", element.getTarget());
52587    }
52588    if (element.hasReceiver()) {
52589      composeReference("receiver", element.getReceiver());
52590    }
52591  }
52592
52593  protected void composeMessageHeaderMessageSourceComponent(String name, MessageHeader.MessageSourceComponent element) throws IOException {
52594    if (element != null) {
52595    composeElementAttributes(element);
52596      xml.enter(FHIR_NS, name);
52597      composeMessageHeaderMessageSourceComponentElements(element);
52598      composeElementClose(element);
52599      xml.exit(FHIR_NS, name);
52600    }
52601  }
52602
52603  protected void composeMessageHeaderMessageSourceComponentElements(MessageHeader.MessageSourceComponent element) throws IOException {
52604    composeBackboneElementElements(element);
52605    if (element.hasEndpoint()) {
52606      composeType("endpoint", element.getEndpoint());
52607    }    if (element.hasNameElement()) {
52608      composeString("name", element.getNameElement());
52609    }
52610    if (element.hasSoftwareElement()) {
52611      composeString("software", element.getSoftwareElement());
52612    }
52613    if (element.hasVersionElement()) {
52614      composeString("version", element.getVersionElement());
52615    }
52616    if (element.hasContact()) {
52617      composeContactPoint("contact", element.getContact());
52618    }
52619  }
52620
52621  protected void composeMessageHeaderResponseComponent(String name, MessageHeader.MessageHeaderResponseComponent element) throws IOException {
52622    if (element != null) {
52623    composeElementAttributes(element);
52624      xml.enter(FHIR_NS, name);
52625      composeMessageHeaderResponseComponentElements(element);
52626      composeElementClose(element);
52627      xml.exit(FHIR_NS, name);
52628    }
52629  }
52630
52631  protected void composeMessageHeaderResponseComponentElements(MessageHeader.MessageHeaderResponseComponent element) throws IOException {
52632    composeBackboneElementElements(element);
52633    if (element.hasIdentifier()) {
52634      composeIdentifier("identifier", element.getIdentifier());
52635    }
52636    if (element.hasCodeElement())
52637      composeEnumeration("code", element.getCodeElement(), new MessageHeader.ResponseTypeEnumFactory());
52638    if (element.hasDetails()) {
52639      composeReference("details", element.getDetails());
52640    }
52641  }
52642
52643  protected void composeMolecularSequence(String name, MolecularSequence element) throws IOException {
52644    if (element != null) {
52645    composeResourceAttributes(element);
52646      xml.enter(FHIR_NS, name);
52647      composeMolecularSequenceElements(element);
52648      composeElementClose(element);
52649      xml.exit(FHIR_NS, name);
52650    }
52651  }
52652
52653  protected void composeMolecularSequenceElements(MolecularSequence element) throws IOException {
52654    composeDomainResourceElements(element);
52655    if (element.hasIdentifier()) { 
52656      for (Identifier e : element.getIdentifier()) 
52657          composeIdentifier("identifier", e);
52658    }
52659    if (element.hasTypeElement())
52660      composeEnumeration("type", element.getTypeElement(), new MolecularSequence.SequenceTypeEnumFactory());
52661    if (element.hasSubject()) {
52662      composeReference("subject", element.getSubject());
52663    }
52664    if (element.hasFocus()) { 
52665      for (Reference e : element.getFocus()) 
52666          composeReference("focus", e);
52667    }
52668    if (element.hasSpecimen()) {
52669      composeReference("specimen", element.getSpecimen());
52670    }
52671    if (element.hasDevice()) {
52672      composeReference("device", element.getDevice());
52673    }
52674    if (element.hasPerformer()) {
52675      composeReference("performer", element.getPerformer());
52676    }
52677    if (element.hasLiteralElement()) {
52678      composeString("literal", element.getLiteralElement());
52679    }
52680    if (element.hasFormatted()) { 
52681      for (Attachment e : element.getFormatted()) 
52682          composeAttachment("formatted", e);
52683    }
52684    if (element.hasRelative()) { 
52685      for (MolecularSequence.MolecularSequenceRelativeComponent e : element.getRelative()) 
52686          composeMolecularSequenceRelativeComponent("relative", e);
52687    }
52688  }
52689
52690  protected void composeMolecularSequenceRelativeComponent(String name, MolecularSequence.MolecularSequenceRelativeComponent element) throws IOException {
52691    if (element != null) {
52692    composeElementAttributes(element);
52693      xml.enter(FHIR_NS, name);
52694      composeMolecularSequenceRelativeComponentElements(element);
52695      composeElementClose(element);
52696      xml.exit(FHIR_NS, name);
52697    }
52698  }
52699
52700  protected void composeMolecularSequenceRelativeComponentElements(MolecularSequence.MolecularSequenceRelativeComponent element) throws IOException {
52701    composeBackboneElementElements(element);
52702    if (element.hasCoordinateSystem()) {
52703      composeCodeableConcept("coordinateSystem", element.getCoordinateSystem());
52704    }
52705    if (element.hasOrdinalPositionElement()) {
52706      composeInteger("ordinalPosition", element.getOrdinalPositionElement());
52707    }
52708    if (element.hasSequenceRange()) {
52709      composeRange("sequenceRange", element.getSequenceRange());
52710    }
52711    if (element.hasStartingSequence()) {
52712      composeMolecularSequenceRelativeStartingSequenceComponent("startingSequence", element.getStartingSequence());
52713    }
52714    if (element.hasEdit()) { 
52715      for (MolecularSequence.MolecularSequenceRelativeEditComponent e : element.getEdit()) 
52716          composeMolecularSequenceRelativeEditComponent("edit", e);
52717    }
52718  }
52719
52720  protected void composeMolecularSequenceRelativeStartingSequenceComponent(String name, MolecularSequence.MolecularSequenceRelativeStartingSequenceComponent element) throws IOException {
52721    if (element != null) {
52722    composeElementAttributes(element);
52723      xml.enter(FHIR_NS, name);
52724      composeMolecularSequenceRelativeStartingSequenceComponentElements(element);
52725      composeElementClose(element);
52726      xml.exit(FHIR_NS, name);
52727    }
52728  }
52729
52730  protected void composeMolecularSequenceRelativeStartingSequenceComponentElements(MolecularSequence.MolecularSequenceRelativeStartingSequenceComponent element) throws IOException {
52731    composeBackboneElementElements(element);
52732    if (element.hasGenomeAssembly()) {
52733      composeCodeableConcept("genomeAssembly", element.getGenomeAssembly());
52734    }
52735    if (element.hasChromosome()) {
52736      composeCodeableConcept("chromosome", element.getChromosome());
52737    }
52738    if (element.hasSequence()) {
52739      composeType("sequence", element.getSequence());
52740    }    if (element.hasWindowStartElement()) {
52741      composeInteger("windowStart", element.getWindowStartElement());
52742    }
52743    if (element.hasWindowEndElement()) {
52744      composeInteger("windowEnd", element.getWindowEndElement());
52745    }
52746    if (element.hasOrientationElement())
52747      composeEnumeration("orientation", element.getOrientationElement(), new MolecularSequence.OrientationTypeEnumFactory());
52748    if (element.hasStrandElement())
52749      composeEnumeration("strand", element.getStrandElement(), new MolecularSequence.StrandTypeEnumFactory());
52750  }
52751
52752  protected void composeMolecularSequenceRelativeEditComponent(String name, MolecularSequence.MolecularSequenceRelativeEditComponent element) throws IOException {
52753    if (element != null) {
52754    composeElementAttributes(element);
52755      xml.enter(FHIR_NS, name);
52756      composeMolecularSequenceRelativeEditComponentElements(element);
52757      composeElementClose(element);
52758      xml.exit(FHIR_NS, name);
52759    }
52760  }
52761
52762  protected void composeMolecularSequenceRelativeEditComponentElements(MolecularSequence.MolecularSequenceRelativeEditComponent element) throws IOException {
52763    composeBackboneElementElements(element);
52764    if (element.hasStartElement()) {
52765      composeInteger("start", element.getStartElement());
52766    }
52767    if (element.hasEndElement()) {
52768      composeInteger("end", element.getEndElement());
52769    }
52770    if (element.hasReplacementSequenceElement()) {
52771      composeString("replacementSequence", element.getReplacementSequenceElement());
52772    }
52773    if (element.hasReplacedSequenceElement()) {
52774      composeString("replacedSequence", element.getReplacedSequenceElement());
52775    }
52776  }
52777
52778  protected void composeNamingSystem(String name, NamingSystem element) throws IOException {
52779    if (element != null) {
52780    composeResourceAttributes(element);
52781      xml.enter(FHIR_NS, name);
52782      composeNamingSystemElements(element);
52783      composeElementClose(element);
52784      xml.exit(FHIR_NS, name);
52785    }
52786  }
52787
52788  protected void composeNamingSystemElements(NamingSystem element) throws IOException {
52789    composeMetadataResourceElements(element);
52790    if (element.hasUrlElement()) {
52791      composeUri("url", element.getUrlElement());
52792    }
52793    if (element.hasIdentifier()) { 
52794      for (Identifier e : element.getIdentifier()) 
52795          composeIdentifier("identifier", e);
52796    }
52797    if (element.hasVersionElement()) {
52798      composeString("version", element.getVersionElement());
52799    }
52800    if (element.hasVersionAlgorithm()) {
52801      composeType("versionAlgorithm", element.getVersionAlgorithm());
52802    }    if (element.hasNameElement()) {
52803      composeString("name", element.getNameElement());
52804    }
52805    if (element.hasTitleElement()) {
52806      composeString("title", element.getTitleElement());
52807    }
52808    if (element.hasStatusElement())
52809      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
52810    if (element.hasKindElement())
52811      composeEnumeration("kind", element.getKindElement(), new NamingSystem.NamingSystemTypeEnumFactory());
52812    if (element.hasExperimentalElement()) {
52813      composeBoolean("experimental", element.getExperimentalElement());
52814    }
52815    if (element.hasDateElement()) {
52816      composeDateTime("date", element.getDateElement());
52817    }
52818    if (element.hasPublisherElement()) {
52819      composeString("publisher", element.getPublisherElement());
52820    }
52821    if (element.hasContact()) { 
52822      for (ContactDetail e : element.getContact()) 
52823          composeContactDetail("contact", e);
52824    }
52825    if (element.hasResponsibleElement()) {
52826      composeString("responsible", element.getResponsibleElement());
52827    }
52828    if (element.hasType()) {
52829      composeCodeableConcept("type", element.getType());
52830    }
52831    if (element.hasDescriptionElement()) {
52832      composeMarkdown("description", element.getDescriptionElement());
52833    }
52834    if (element.hasUseContext()) { 
52835      for (UsageContext e : element.getUseContext()) 
52836          composeUsageContext("useContext", e);
52837    }
52838    if (element.hasJurisdiction()) { 
52839      for (CodeableConcept e : element.getJurisdiction()) 
52840          composeCodeableConcept("jurisdiction", e);
52841    }
52842    if (element.hasPurposeElement()) {
52843      composeMarkdown("purpose", element.getPurposeElement());
52844    }
52845    if (element.hasCopyrightElement()) {
52846      composeMarkdown("copyright", element.getCopyrightElement());
52847    }
52848    if (element.hasCopyrightLabelElement()) {
52849      composeString("copyrightLabel", element.getCopyrightLabelElement());
52850    }
52851    if (element.hasApprovalDateElement()) {
52852      composeDate("approvalDate", element.getApprovalDateElement());
52853    }
52854    if (element.hasLastReviewDateElement()) {
52855      composeDate("lastReviewDate", element.getLastReviewDateElement());
52856    }
52857    if (element.hasEffectivePeriod()) {
52858      composePeriod("effectivePeriod", element.getEffectivePeriod());
52859    }
52860    if (element.hasTopic()) { 
52861      for (CodeableConcept e : element.getTopic()) 
52862          composeCodeableConcept("topic", e);
52863    }
52864    if (element.hasAuthor()) { 
52865      for (ContactDetail e : element.getAuthor()) 
52866          composeContactDetail("author", e);
52867    }
52868    if (element.hasEditor()) { 
52869      for (ContactDetail e : element.getEditor()) 
52870          composeContactDetail("editor", e);
52871    }
52872    if (element.hasReviewer()) { 
52873      for (ContactDetail e : element.getReviewer()) 
52874          composeContactDetail("reviewer", e);
52875    }
52876    if (element.hasEndorser()) { 
52877      for (ContactDetail e : element.getEndorser()) 
52878          composeContactDetail("endorser", e);
52879    }
52880    if (element.hasRelatedArtifact()) { 
52881      for (RelatedArtifact e : element.getRelatedArtifact()) 
52882          composeRelatedArtifact("relatedArtifact", e);
52883    }
52884    if (element.hasUsageElement()) {
52885      composeString("usage", element.getUsageElement());
52886    }
52887    if (element.hasUniqueId()) { 
52888      for (NamingSystem.NamingSystemUniqueIdComponent e : element.getUniqueId()) 
52889          composeNamingSystemUniqueIdComponent("uniqueId", e);
52890    }
52891  }
52892
52893  protected void composeNamingSystemUniqueIdComponent(String name, NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
52894    if (element != null) {
52895    composeElementAttributes(element);
52896      xml.enter(FHIR_NS, name);
52897      composeNamingSystemUniqueIdComponentElements(element);
52898      composeElementClose(element);
52899      xml.exit(FHIR_NS, name);
52900    }
52901  }
52902
52903  protected void composeNamingSystemUniqueIdComponentElements(NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
52904    composeBackboneElementElements(element);
52905    if (element.hasTypeElement())
52906      composeEnumeration("type", element.getTypeElement(), new NamingSystem.NamingSystemIdentifierTypeEnumFactory());
52907    if (element.hasValueElement()) {
52908      composeString("value", element.getValueElement());
52909    }
52910    if (element.hasPreferredElement()) {
52911      composeBoolean("preferred", element.getPreferredElement());
52912    }
52913    if (element.hasCommentElement()) {
52914      composeString("comment", element.getCommentElement());
52915    }
52916    if (element.hasPeriod()) {
52917      composePeriod("period", element.getPeriod());
52918    }
52919    if (element.hasAuthoritativeElement()) {
52920      composeBoolean("authoritative", element.getAuthoritativeElement());
52921    }
52922  }
52923
52924  protected void composeNutritionIntake(String name, NutritionIntake element) throws IOException {
52925    if (element != null) {
52926    composeResourceAttributes(element);
52927      xml.enter(FHIR_NS, name);
52928      composeNutritionIntakeElements(element);
52929      composeElementClose(element);
52930      xml.exit(FHIR_NS, name);
52931    }
52932  }
52933
52934  protected void composeNutritionIntakeElements(NutritionIntake element) throws IOException {
52935    composeDomainResourceElements(element);
52936    if (element.hasIdentifier()) { 
52937      for (Identifier e : element.getIdentifier()) 
52938          composeIdentifier("identifier", e);
52939    }
52940    if (element.hasInstantiatesCanonical()) { 
52941      for (CanonicalType e : element.getInstantiatesCanonical()) 
52942          composeCanonical("instantiatesCanonical", e);
52943    }
52944    if (element.hasInstantiatesUri()) { 
52945      for (UriType e : element.getInstantiatesUri()) 
52946          composeUri("instantiatesUri", e);
52947    }
52948    if (element.hasBasedOn()) { 
52949      for (Reference e : element.getBasedOn()) 
52950          composeReference("basedOn", e);
52951    }
52952    if (element.hasPartOf()) { 
52953      for (Reference e : element.getPartOf()) 
52954          composeReference("partOf", e);
52955    }
52956    if (element.hasStatusElement())
52957      composeEnumeration("status", element.getStatusElement(), new Enumerations.EventStatusEnumFactory());
52958    if (element.hasStatusReason()) { 
52959      for (CodeableConcept e : element.getStatusReason()) 
52960          composeCodeableConcept("statusReason", e);
52961    }
52962    if (element.hasCode()) {
52963      composeCodeableConcept("code", element.getCode());
52964    }
52965    if (element.hasSubject()) {
52966      composeReference("subject", element.getSubject());
52967    }
52968    if (element.hasEncounter()) {
52969      composeReference("encounter", element.getEncounter());
52970    }
52971    if (element.hasOccurrence()) {
52972      composeType("occurrence", element.getOccurrence());
52973    }    if (element.hasRecordedElement()) {
52974      composeDateTime("recorded", element.getRecordedElement());
52975    }
52976    if (element.hasReported()) {
52977      composeType("reported", element.getReported());
52978    }    if (element.hasConsumedItem()) { 
52979      for (NutritionIntake.NutritionIntakeConsumedItemComponent e : element.getConsumedItem()) 
52980          composeNutritionIntakeConsumedItemComponent("consumedItem", e);
52981    }
52982    if (element.hasIngredientLabel()) { 
52983      for (NutritionIntake.NutritionIntakeIngredientLabelComponent e : element.getIngredientLabel()) 
52984          composeNutritionIntakeIngredientLabelComponent("ingredientLabel", e);
52985    }
52986    if (element.hasPerformer()) { 
52987      for (NutritionIntake.NutritionIntakePerformerComponent e : element.getPerformer()) 
52988          composeNutritionIntakePerformerComponent("performer", e);
52989    }
52990    if (element.hasLocation()) {
52991      composeReference("location", element.getLocation());
52992    }
52993    if (element.hasDerivedFrom()) { 
52994      for (Reference e : element.getDerivedFrom()) 
52995          composeReference("derivedFrom", e);
52996    }
52997    if (element.hasReason()) { 
52998      for (CodeableReference e : element.getReason()) 
52999          composeCodeableReference("reason", e);
53000    }
53001    if (element.hasNote()) { 
53002      for (Annotation e : element.getNote()) 
53003          composeAnnotation("note", e);
53004    }
53005  }
53006
53007  protected void composeNutritionIntakeConsumedItemComponent(String name, NutritionIntake.NutritionIntakeConsumedItemComponent element) throws IOException {
53008    if (element != null) {
53009    composeElementAttributes(element);
53010      xml.enter(FHIR_NS, name);
53011      composeNutritionIntakeConsumedItemComponentElements(element);
53012      composeElementClose(element);
53013      xml.exit(FHIR_NS, name);
53014    }
53015  }
53016
53017  protected void composeNutritionIntakeConsumedItemComponentElements(NutritionIntake.NutritionIntakeConsumedItemComponent element) throws IOException {
53018    composeBackboneElementElements(element);
53019    if (element.hasType()) {
53020      composeCodeableConcept("type", element.getType());
53021    }
53022    if (element.hasNutritionProduct()) {
53023      composeCodeableReference("nutritionProduct", element.getNutritionProduct());
53024    }
53025    if (element.hasSchedule()) {
53026      composeTiming("schedule", element.getSchedule());
53027    }
53028    if (element.hasAmount()) {
53029      composeQuantity("amount", element.getAmount());
53030    }
53031    if (element.hasRate()) {
53032      composeQuantity("rate", element.getRate());
53033    }
53034    if (element.hasNotConsumedElement()) {
53035      composeBoolean("notConsumed", element.getNotConsumedElement());
53036    }
53037    if (element.hasNotConsumedReason()) {
53038      composeCodeableConcept("notConsumedReason", element.getNotConsumedReason());
53039    }
53040  }
53041
53042  protected void composeNutritionIntakeIngredientLabelComponent(String name, NutritionIntake.NutritionIntakeIngredientLabelComponent element) throws IOException {
53043    if (element != null) {
53044    composeElementAttributes(element);
53045      xml.enter(FHIR_NS, name);
53046      composeNutritionIntakeIngredientLabelComponentElements(element);
53047      composeElementClose(element);
53048      xml.exit(FHIR_NS, name);
53049    }
53050  }
53051
53052  protected void composeNutritionIntakeIngredientLabelComponentElements(NutritionIntake.NutritionIntakeIngredientLabelComponent element) throws IOException {
53053    composeBackboneElementElements(element);
53054    if (element.hasNutrient()) {
53055      composeCodeableReference("nutrient", element.getNutrient());
53056    }
53057    if (element.hasAmount()) {
53058      composeQuantity("amount", element.getAmount());
53059    }
53060  }
53061
53062  protected void composeNutritionIntakePerformerComponent(String name, NutritionIntake.NutritionIntakePerformerComponent element) throws IOException {
53063    if (element != null) {
53064    composeElementAttributes(element);
53065      xml.enter(FHIR_NS, name);
53066      composeNutritionIntakePerformerComponentElements(element);
53067      composeElementClose(element);
53068      xml.exit(FHIR_NS, name);
53069    }
53070  }
53071
53072  protected void composeNutritionIntakePerformerComponentElements(NutritionIntake.NutritionIntakePerformerComponent element) throws IOException {
53073    composeBackboneElementElements(element);
53074    if (element.hasFunction()) {
53075      composeCodeableConcept("function", element.getFunction());
53076    }
53077    if (element.hasActor()) {
53078      composeReference("actor", element.getActor());
53079    }
53080  }
53081
53082  protected void composeNutritionOrder(String name, NutritionOrder element) throws IOException {
53083    if (element != null) {
53084    composeResourceAttributes(element);
53085      xml.enter(FHIR_NS, name);
53086      composeNutritionOrderElements(element);
53087      composeElementClose(element);
53088      xml.exit(FHIR_NS, name);
53089    }
53090  }
53091
53092  protected void composeNutritionOrderElements(NutritionOrder element) throws IOException {
53093    composeDomainResourceElements(element);
53094    if (element.hasIdentifier()) { 
53095      for (Identifier e : element.getIdentifier()) 
53096          composeIdentifier("identifier", e);
53097    }
53098    if (element.hasInstantiatesCanonical()) { 
53099      for (CanonicalType e : element.getInstantiatesCanonical()) 
53100          composeCanonical("instantiatesCanonical", e);
53101    }
53102    if (element.hasInstantiatesUri()) { 
53103      for (UriType e : element.getInstantiatesUri()) 
53104          composeUri("instantiatesUri", e);
53105    }
53106    if (element.hasInstantiates()) { 
53107      for (UriType e : element.getInstantiates()) 
53108          composeUri("instantiates", e);
53109    }
53110    if (element.hasBasedOn()) { 
53111      for (Reference e : element.getBasedOn()) 
53112          composeReference("basedOn", e);
53113    }
53114    if (element.hasGroupIdentifier()) {
53115      composeIdentifier("groupIdentifier", element.getGroupIdentifier());
53116    }
53117    if (element.hasStatusElement())
53118      composeEnumeration("status", element.getStatusElement(), new Enumerations.RequestStatusEnumFactory());
53119    if (element.hasIntentElement())
53120      composeEnumeration("intent", element.getIntentElement(), new Enumerations.RequestIntentEnumFactory());
53121    if (element.hasPriorityElement())
53122      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
53123    if (element.hasSubject()) {
53124      composeReference("subject", element.getSubject());
53125    }
53126    if (element.hasEncounter()) {
53127      composeReference("encounter", element.getEncounter());
53128    }
53129    if (element.hasSupportingInformation()) { 
53130      for (Reference e : element.getSupportingInformation()) 
53131          composeReference("supportingInformation", e);
53132    }
53133    if (element.hasDateTimeElement()) {
53134      composeDateTime("dateTime", element.getDateTimeElement());
53135    }
53136    if (element.hasOrderer()) {
53137      composeReference("orderer", element.getOrderer());
53138    }
53139    if (element.hasPerformer()) { 
53140      for (CodeableReference e : element.getPerformer()) 
53141          composeCodeableReference("performer", e);
53142    }
53143    if (element.hasAllergyIntolerance()) { 
53144      for (Reference e : element.getAllergyIntolerance()) 
53145          composeReference("allergyIntolerance", e);
53146    }
53147    if (element.hasFoodPreferenceModifier()) { 
53148      for (CodeableConcept e : element.getFoodPreferenceModifier()) 
53149          composeCodeableConcept("foodPreferenceModifier", e);
53150    }
53151    if (element.hasExcludeFoodModifier()) { 
53152      for (CodeableConcept e : element.getExcludeFoodModifier()) 
53153          composeCodeableConcept("excludeFoodModifier", e);
53154    }
53155    if (element.hasOutsideFoodAllowedElement()) {
53156      composeBoolean("outsideFoodAllowed", element.getOutsideFoodAllowedElement());
53157    }
53158    if (element.hasOralDiet()) {
53159      composeNutritionOrderOralDietComponent("oralDiet", element.getOralDiet());
53160    }
53161    if (element.hasSupplement()) { 
53162      for (NutritionOrder.NutritionOrderSupplementComponent e : element.getSupplement()) 
53163          composeNutritionOrderSupplementComponent("supplement", e);
53164    }
53165    if (element.hasEnteralFormula()) {
53166      composeNutritionOrderEnteralFormulaComponent("enteralFormula", element.getEnteralFormula());
53167    }
53168    if (element.hasNote()) { 
53169      for (Annotation e : element.getNote()) 
53170          composeAnnotation("note", e);
53171    }
53172  }
53173
53174  protected void composeNutritionOrderOralDietComponent(String name, NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
53175    if (element != null) {
53176    composeElementAttributes(element);
53177      xml.enter(FHIR_NS, name);
53178      composeNutritionOrderOralDietComponentElements(element);
53179      composeElementClose(element);
53180      xml.exit(FHIR_NS, name);
53181    }
53182  }
53183
53184  protected void composeNutritionOrderOralDietComponentElements(NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
53185    composeBackboneElementElements(element);
53186    if (element.hasType()) { 
53187      for (CodeableConcept e : element.getType()) 
53188          composeCodeableConcept("type", e);
53189    }
53190    if (element.hasSchedule()) {
53191      composeNutritionOrderOralDietScheduleComponent("schedule", element.getSchedule());
53192    }
53193    if (element.hasNutrient()) { 
53194      for (NutritionOrder.NutritionOrderOralDietNutrientComponent e : element.getNutrient()) 
53195          composeNutritionOrderOralDietNutrientComponent("nutrient", e);
53196    }
53197    if (element.hasTexture()) { 
53198      for (NutritionOrder.NutritionOrderOralDietTextureComponent e : element.getTexture()) 
53199          composeNutritionOrderOralDietTextureComponent("texture", e);
53200    }
53201    if (element.hasFluidConsistencyType()) { 
53202      for (CodeableConcept e : element.getFluidConsistencyType()) 
53203          composeCodeableConcept("fluidConsistencyType", e);
53204    }
53205    if (element.hasInstructionElement()) {
53206      composeString("instruction", element.getInstructionElement());
53207    }
53208  }
53209
53210  protected void composeNutritionOrderOralDietScheduleComponent(String name, NutritionOrder.OralDietScheduleComponent element) throws IOException {
53211    if (element != null) {
53212    composeElementAttributes(element);
53213      xml.enter(FHIR_NS, name);
53214      composeNutritionOrderOralDietScheduleComponentElements(element);
53215      composeElementClose(element);
53216      xml.exit(FHIR_NS, name);
53217    }
53218  }
53219
53220  protected void composeNutritionOrderOralDietScheduleComponentElements(NutritionOrder.OralDietScheduleComponent element) throws IOException {
53221    composeBackboneElementElements(element);
53222    if (element.hasTiming()) { 
53223      for (Timing e : element.getTiming()) 
53224          composeTiming("timing", e);
53225    }
53226    if (element.hasAsNeededElement()) {
53227      composeBoolean("asNeeded", element.getAsNeededElement());
53228    }
53229    if (element.hasAsNeededFor()) {
53230      composeCodeableConcept("asNeededFor", element.getAsNeededFor());
53231    }
53232  }
53233
53234  protected void composeNutritionOrderOralDietNutrientComponent(String name, NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
53235    if (element != null) {
53236    composeElementAttributes(element);
53237      xml.enter(FHIR_NS, name);
53238      composeNutritionOrderOralDietNutrientComponentElements(element);
53239      composeElementClose(element);
53240      xml.exit(FHIR_NS, name);
53241    }
53242  }
53243
53244  protected void composeNutritionOrderOralDietNutrientComponentElements(NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
53245    composeBackboneElementElements(element);
53246    if (element.hasModifier()) {
53247      composeCodeableConcept("modifier", element.getModifier());
53248    }
53249    if (element.hasAmount()) {
53250      composeQuantity("amount", element.getAmount());
53251    }
53252  }
53253
53254  protected void composeNutritionOrderOralDietTextureComponent(String name, NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
53255    if (element != null) {
53256    composeElementAttributes(element);
53257      xml.enter(FHIR_NS, name);
53258      composeNutritionOrderOralDietTextureComponentElements(element);
53259      composeElementClose(element);
53260      xml.exit(FHIR_NS, name);
53261    }
53262  }
53263
53264  protected void composeNutritionOrderOralDietTextureComponentElements(NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
53265    composeBackboneElementElements(element);
53266    if (element.hasModifier()) {
53267      composeCodeableConcept("modifier", element.getModifier());
53268    }
53269    if (element.hasFoodType()) {
53270      composeCodeableConcept("foodType", element.getFoodType());
53271    }
53272  }
53273
53274  protected void composeNutritionOrderSupplementComponent(String name, NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
53275    if (element != null) {
53276    composeElementAttributes(element);
53277      xml.enter(FHIR_NS, name);
53278      composeNutritionOrderSupplementComponentElements(element);
53279      composeElementClose(element);
53280      xml.exit(FHIR_NS, name);
53281    }
53282  }
53283
53284  protected void composeNutritionOrderSupplementComponentElements(NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
53285    composeBackboneElementElements(element);
53286    if (element.hasType()) {
53287      composeCodeableReference("type", element.getType());
53288    }
53289    if (element.hasProductNameElement()) {
53290      composeString("productName", element.getProductNameElement());
53291    }
53292    if (element.hasSchedule()) {
53293      composeNutritionOrderSupplementScheduleComponent("schedule", element.getSchedule());
53294    }
53295    if (element.hasQuantity()) {
53296      composeQuantity("quantity", element.getQuantity());
53297    }
53298    if (element.hasInstructionElement()) {
53299      composeString("instruction", element.getInstructionElement());
53300    }
53301  }
53302
53303  protected void composeNutritionOrderSupplementScheduleComponent(String name, NutritionOrder.SupplementScheduleComponent element) throws IOException {
53304    if (element != null) {
53305    composeElementAttributes(element);
53306      xml.enter(FHIR_NS, name);
53307      composeNutritionOrderSupplementScheduleComponentElements(element);
53308      composeElementClose(element);
53309      xml.exit(FHIR_NS, name);
53310    }
53311  }
53312
53313  protected void composeNutritionOrderSupplementScheduleComponentElements(NutritionOrder.SupplementScheduleComponent element) throws IOException {
53314    composeBackboneElementElements(element);
53315    if (element.hasTiming()) { 
53316      for (Timing e : element.getTiming()) 
53317          composeTiming("timing", e);
53318    }
53319    if (element.hasAsNeededElement()) {
53320      composeBoolean("asNeeded", element.getAsNeededElement());
53321    }
53322    if (element.hasAsNeededFor()) {
53323      composeCodeableConcept("asNeededFor", element.getAsNeededFor());
53324    }
53325  }
53326
53327  protected void composeNutritionOrderEnteralFormulaComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
53328    if (element != null) {
53329    composeElementAttributes(element);
53330      xml.enter(FHIR_NS, name);
53331      composeNutritionOrderEnteralFormulaComponentElements(element);
53332      composeElementClose(element);
53333      xml.exit(FHIR_NS, name);
53334    }
53335  }
53336
53337  protected void composeNutritionOrderEnteralFormulaComponentElements(NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
53338    composeBackboneElementElements(element);
53339    if (element.hasBaseFormulaType()) {
53340      composeCodeableReference("baseFormulaType", element.getBaseFormulaType());
53341    }
53342    if (element.hasBaseFormulaProductNameElement()) {
53343      composeString("baseFormulaProductName", element.getBaseFormulaProductNameElement());
53344    }
53345    if (element.hasDeliveryDevice()) { 
53346      for (CodeableReference e : element.getDeliveryDevice()) 
53347          composeCodeableReference("deliveryDevice", e);
53348    }
53349    if (element.hasAdditive()) { 
53350      for (NutritionOrder.NutritionOrderEnteralFormulaAdditiveComponent e : element.getAdditive()) 
53351          composeNutritionOrderEnteralFormulaAdditiveComponent("additive", e);
53352    }
53353    if (element.hasCaloricDensity()) {
53354      composeQuantity("caloricDensity", element.getCaloricDensity());
53355    }
53356    if (element.hasRouteOfAdministration()) {
53357      composeCodeableConcept("routeOfAdministration", element.getRouteOfAdministration());
53358    }
53359    if (element.hasAdministration()) { 
53360      for (NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent e : element.getAdministration()) 
53361          composeNutritionOrderEnteralFormulaAdministrationComponent("administration", e);
53362    }
53363    if (element.hasMaxVolumeToDeliver()) {
53364      composeQuantity("maxVolumeToDeliver", element.getMaxVolumeToDeliver());
53365    }
53366    if (element.hasAdministrationInstructionElement()) {
53367      composeMarkdown("administrationInstruction", element.getAdministrationInstructionElement());
53368    }
53369  }
53370
53371  protected void composeNutritionOrderEnteralFormulaAdditiveComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaAdditiveComponent element) throws IOException {
53372    if (element != null) {
53373    composeElementAttributes(element);
53374      xml.enter(FHIR_NS, name);
53375      composeNutritionOrderEnteralFormulaAdditiveComponentElements(element);
53376      composeElementClose(element);
53377      xml.exit(FHIR_NS, name);
53378    }
53379  }
53380
53381  protected void composeNutritionOrderEnteralFormulaAdditiveComponentElements(NutritionOrder.NutritionOrderEnteralFormulaAdditiveComponent element) throws IOException {
53382    composeBackboneElementElements(element);
53383    if (element.hasType()) {
53384      composeCodeableReference("type", element.getType());
53385    }
53386    if (element.hasProductNameElement()) {
53387      composeString("productName", element.getProductNameElement());
53388    }
53389    if (element.hasQuantity()) {
53390      composeQuantity("quantity", element.getQuantity());
53391    }
53392  }
53393
53394  protected void composeNutritionOrderEnteralFormulaAdministrationComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
53395    if (element != null) {
53396    composeElementAttributes(element);
53397      xml.enter(FHIR_NS, name);
53398      composeNutritionOrderEnteralFormulaAdministrationComponentElements(element);
53399      composeElementClose(element);
53400      xml.exit(FHIR_NS, name);
53401    }
53402  }
53403
53404  protected void composeNutritionOrderEnteralFormulaAdministrationComponentElements(NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
53405    composeBackboneElementElements(element);
53406    if (element.hasSchedule()) {
53407      composeNutritionOrderEnteralFormulaScheduleComponent("schedule", element.getSchedule());
53408    }
53409    if (element.hasQuantity()) {
53410      composeQuantity("quantity", element.getQuantity());
53411    }
53412    if (element.hasRate()) {
53413      composeType("rate", element.getRate());
53414    }  }
53415
53416  protected void composeNutritionOrderEnteralFormulaScheduleComponent(String name, NutritionOrder.EnteralFormulaScheduleComponent element) throws IOException {
53417    if (element != null) {
53418    composeElementAttributes(element);
53419      xml.enter(FHIR_NS, name);
53420      composeNutritionOrderEnteralFormulaScheduleComponentElements(element);
53421      composeElementClose(element);
53422      xml.exit(FHIR_NS, name);
53423    }
53424  }
53425
53426  protected void composeNutritionOrderEnteralFormulaScheduleComponentElements(NutritionOrder.EnteralFormulaScheduleComponent element) throws IOException {
53427    composeBackboneElementElements(element);
53428    if (element.hasTiming()) { 
53429      for (Timing e : element.getTiming()) 
53430          composeTiming("timing", e);
53431    }
53432    if (element.hasAsNeededElement()) {
53433      composeBoolean("asNeeded", element.getAsNeededElement());
53434    }
53435    if (element.hasAsNeededFor()) {
53436      composeCodeableConcept("asNeededFor", element.getAsNeededFor());
53437    }
53438  }
53439
53440  protected void composeNutritionProduct(String name, NutritionProduct element) throws IOException {
53441    if (element != null) {
53442    composeResourceAttributes(element);
53443      xml.enter(FHIR_NS, name);
53444      composeNutritionProductElements(element);
53445      composeElementClose(element);
53446      xml.exit(FHIR_NS, name);
53447    }
53448  }
53449
53450  protected void composeNutritionProductElements(NutritionProduct element) throws IOException {
53451    composeDomainResourceElements(element);
53452    if (element.hasCode()) {
53453      composeCodeableConcept("code", element.getCode());
53454    }
53455    if (element.hasStatusElement())
53456      composeEnumeration("status", element.getStatusElement(), new NutritionProduct.NutritionProductStatusEnumFactory());
53457    if (element.hasCategory()) { 
53458      for (CodeableConcept e : element.getCategory()) 
53459          composeCodeableConcept("category", e);
53460    }
53461    if (element.hasManufacturer()) { 
53462      for (Reference e : element.getManufacturer()) 
53463          composeReference("manufacturer", e);
53464    }
53465    if (element.hasNutrient()) { 
53466      for (NutritionProduct.NutritionProductNutrientComponent e : element.getNutrient()) 
53467          composeNutritionProductNutrientComponent("nutrient", e);
53468    }
53469    if (element.hasIngredient()) { 
53470      for (NutritionProduct.NutritionProductIngredientComponent e : element.getIngredient()) 
53471          composeNutritionProductIngredientComponent("ingredient", e);
53472    }
53473    if (element.hasKnownAllergen()) { 
53474      for (CodeableReference e : element.getKnownAllergen()) 
53475          composeCodeableReference("knownAllergen", e);
53476    }
53477    if (element.hasCharacteristic()) { 
53478      for (NutritionProduct.NutritionProductCharacteristicComponent e : element.getCharacteristic()) 
53479          composeNutritionProductCharacteristicComponent("characteristic", e);
53480    }
53481    if (element.hasInstance()) { 
53482      for (NutritionProduct.NutritionProductInstanceComponent e : element.getInstance()) 
53483          composeNutritionProductInstanceComponent("instance", e);
53484    }
53485    if (element.hasNote()) { 
53486      for (Annotation e : element.getNote()) 
53487          composeAnnotation("note", e);
53488    }
53489  }
53490
53491  protected void composeNutritionProductNutrientComponent(String name, NutritionProduct.NutritionProductNutrientComponent element) throws IOException {
53492    if (element != null) {
53493    composeElementAttributes(element);
53494      xml.enter(FHIR_NS, name);
53495      composeNutritionProductNutrientComponentElements(element);
53496      composeElementClose(element);
53497      xml.exit(FHIR_NS, name);
53498    }
53499  }
53500
53501  protected void composeNutritionProductNutrientComponentElements(NutritionProduct.NutritionProductNutrientComponent element) throws IOException {
53502    composeBackboneElementElements(element);
53503    if (element.hasItem()) {
53504      composeCodeableReference("item", element.getItem());
53505    }
53506    if (element.hasAmount()) { 
53507      for (Ratio e : element.getAmount()) 
53508          composeRatio("amount", e);
53509    }
53510  }
53511
53512  protected void composeNutritionProductIngredientComponent(String name, NutritionProduct.NutritionProductIngredientComponent element) throws IOException {
53513    if (element != null) {
53514    composeElementAttributes(element);
53515      xml.enter(FHIR_NS, name);
53516      composeNutritionProductIngredientComponentElements(element);
53517      composeElementClose(element);
53518      xml.exit(FHIR_NS, name);
53519    }
53520  }
53521
53522  protected void composeNutritionProductIngredientComponentElements(NutritionProduct.NutritionProductIngredientComponent element) throws IOException {
53523    composeBackboneElementElements(element);
53524    if (element.hasItem()) {
53525      composeCodeableReference("item", element.getItem());
53526    }
53527    if (element.hasAmount()) { 
53528      for (Ratio e : element.getAmount()) 
53529          composeRatio("amount", e);
53530    }
53531  }
53532
53533  protected void composeNutritionProductCharacteristicComponent(String name, NutritionProduct.NutritionProductCharacteristicComponent element) throws IOException {
53534    if (element != null) {
53535    composeElementAttributes(element);
53536      xml.enter(FHIR_NS, name);
53537      composeNutritionProductCharacteristicComponentElements(element);
53538      composeElementClose(element);
53539      xml.exit(FHIR_NS, name);
53540    }
53541  }
53542
53543  protected void composeNutritionProductCharacteristicComponentElements(NutritionProduct.NutritionProductCharacteristicComponent element) throws IOException {
53544    composeBackboneElementElements(element);
53545    if (element.hasType()) {
53546      composeCodeableConcept("type", element.getType());
53547    }
53548    if (element.hasValue()) {
53549      composeType("value", element.getValue());
53550    }  }
53551
53552  protected void composeNutritionProductInstanceComponent(String name, NutritionProduct.NutritionProductInstanceComponent element) throws IOException {
53553    if (element != null) {
53554    composeElementAttributes(element);
53555      xml.enter(FHIR_NS, name);
53556      composeNutritionProductInstanceComponentElements(element);
53557      composeElementClose(element);
53558      xml.exit(FHIR_NS, name);
53559    }
53560  }
53561
53562  protected void composeNutritionProductInstanceComponentElements(NutritionProduct.NutritionProductInstanceComponent element) throws IOException {
53563    composeBackboneElementElements(element);
53564    if (element.hasQuantity()) {
53565      composeQuantity("quantity", element.getQuantity());
53566    }
53567    if (element.hasIdentifier()) { 
53568      for (Identifier e : element.getIdentifier()) 
53569          composeIdentifier("identifier", e);
53570    }
53571    if (element.hasNameElement()) {
53572      composeString("name", element.getNameElement());
53573    }
53574    if (element.hasLotNumberElement()) {
53575      composeString("lotNumber", element.getLotNumberElement());
53576    }
53577    if (element.hasExpiryElement()) {
53578      composeDateTime("expiry", element.getExpiryElement());
53579    }
53580    if (element.hasUseByElement()) {
53581      composeDateTime("useBy", element.getUseByElement());
53582    }
53583    if (element.hasBiologicalSourceEvent()) {
53584      composeIdentifier("biologicalSourceEvent", element.getBiologicalSourceEvent());
53585    }
53586  }
53587
53588  protected void composeObservation(String name, Observation element) throws IOException {
53589    if (element != null) {
53590    composeResourceAttributes(element);
53591      xml.enter(FHIR_NS, name);
53592      composeObservationElements(element);
53593      composeElementClose(element);
53594      xml.exit(FHIR_NS, name);
53595    }
53596  }
53597
53598  protected void composeObservationElements(Observation element) throws IOException {
53599    composeDomainResourceElements(element);
53600    if (element.hasIdentifier()) { 
53601      for (Identifier e : element.getIdentifier()) 
53602          composeIdentifier("identifier", e);
53603    }
53604    if (element.hasInstantiates()) {
53605      composeType("instantiates", element.getInstantiates());
53606    }    if (element.hasBasedOn()) { 
53607      for (Reference e : element.getBasedOn()) 
53608          composeReference("basedOn", e);
53609    }
53610    if (element.hasTriggeredBy()) { 
53611      for (Observation.ObservationTriggeredByComponent e : element.getTriggeredBy()) 
53612          composeObservationTriggeredByComponent("triggeredBy", e);
53613    }
53614    if (element.hasPartOf()) { 
53615      for (Reference e : element.getPartOf()) 
53616          composeReference("partOf", e);
53617    }
53618    if (element.hasStatusElement())
53619      composeEnumeration("status", element.getStatusElement(), new Enumerations.ObservationStatusEnumFactory());
53620    if (element.hasCategory()) { 
53621      for (CodeableConcept e : element.getCategory()) 
53622          composeCodeableConcept("category", e);
53623    }
53624    if (element.hasCode()) {
53625      composeCodeableConcept("code", element.getCode());
53626    }
53627    if (element.hasSubject()) {
53628      composeReference("subject", element.getSubject());
53629    }
53630    if (element.hasFocus()) { 
53631      for (Reference e : element.getFocus()) 
53632          composeReference("focus", e);
53633    }
53634    if (element.hasEncounter()) {
53635      composeReference("encounter", element.getEncounter());
53636    }
53637    if (element.hasEffective()) {
53638      composeType("effective", element.getEffective());
53639    }    if (element.hasIssuedElement()) {
53640      composeInstant("issued", element.getIssuedElement());
53641    }
53642    if (element.hasPerformer()) { 
53643      for (Reference e : element.getPerformer()) 
53644          composeReference("performer", e);
53645    }
53646    if (element.hasValue()) {
53647      composeType("value", element.getValue());
53648    }    if (element.hasDataAbsentReason()) {
53649      composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
53650    }
53651    if (element.hasInterpretation()) { 
53652      for (CodeableConcept e : element.getInterpretation()) 
53653          composeCodeableConcept("interpretation", e);
53654    }
53655    if (element.hasNote()) { 
53656      for (Annotation e : element.getNote()) 
53657          composeAnnotation("note", e);
53658    }
53659    if (element.hasBodySite()) {
53660      composeCodeableConcept("bodySite", element.getBodySite());
53661    }
53662    if (element.hasBodyStructure()) {
53663      composeReference("bodyStructure", element.getBodyStructure());
53664    }
53665    if (element.hasMethod()) {
53666      composeCodeableConcept("method", element.getMethod());
53667    }
53668    if (element.hasSpecimen()) {
53669      composeReference("specimen", element.getSpecimen());
53670    }
53671    if (element.hasDevice()) {
53672      composeReference("device", element.getDevice());
53673    }
53674    if (element.hasReferenceRange()) { 
53675      for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
53676          composeObservationReferenceRangeComponent("referenceRange", e);
53677    }
53678    if (element.hasHasMember()) { 
53679      for (Reference e : element.getHasMember()) 
53680          composeReference("hasMember", e);
53681    }
53682    if (element.hasDerivedFrom()) { 
53683      for (Reference e : element.getDerivedFrom()) 
53684          composeReference("derivedFrom", e);
53685    }
53686    if (element.hasComponent()) { 
53687      for (Observation.ObservationComponentComponent e : element.getComponent()) 
53688          composeObservationComponentComponent("component", e);
53689    }
53690  }
53691
53692  protected void composeObservationTriggeredByComponent(String name, Observation.ObservationTriggeredByComponent element) throws IOException {
53693    if (element != null) {
53694    composeElementAttributes(element);
53695      xml.enter(FHIR_NS, name);
53696      composeObservationTriggeredByComponentElements(element);
53697      composeElementClose(element);
53698      xml.exit(FHIR_NS, name);
53699    }
53700  }
53701
53702  protected void composeObservationTriggeredByComponentElements(Observation.ObservationTriggeredByComponent element) throws IOException {
53703    composeBackboneElementElements(element);
53704    if (element.hasObservation()) {
53705      composeReference("observation", element.getObservation());
53706    }
53707    if (element.hasTypeElement())
53708      composeEnumeration("type", element.getTypeElement(), new Observation.TriggeredBytypeEnumFactory());
53709    if (element.hasReasonElement()) {
53710      composeString("reason", element.getReasonElement());
53711    }
53712  }
53713
53714  protected void composeObservationReferenceRangeComponent(String name, Observation.ObservationReferenceRangeComponent element) throws IOException {
53715    if (element != null) {
53716    composeElementAttributes(element);
53717      xml.enter(FHIR_NS, name);
53718      composeObservationReferenceRangeComponentElements(element);
53719      composeElementClose(element);
53720      xml.exit(FHIR_NS, name);
53721    }
53722  }
53723
53724  protected void composeObservationReferenceRangeComponentElements(Observation.ObservationReferenceRangeComponent element) throws IOException {
53725    composeBackboneElementElements(element);
53726    if (element.hasLow()) {
53727      composeQuantity("low", element.getLow());
53728    }
53729    if (element.hasHigh()) {
53730      composeQuantity("high", element.getHigh());
53731    }
53732    if (element.hasNormalValue()) {
53733      composeCodeableConcept("normalValue", element.getNormalValue());
53734    }
53735    if (element.hasType()) {
53736      composeCodeableConcept("type", element.getType());
53737    }
53738    if (element.hasAppliesTo()) { 
53739      for (CodeableConcept e : element.getAppliesTo()) 
53740          composeCodeableConcept("appliesTo", e);
53741    }
53742    if (element.hasAge()) {
53743      composeRange("age", element.getAge());
53744    }
53745    if (element.hasTextElement()) {
53746      composeMarkdown("text", element.getTextElement());
53747    }
53748  }
53749
53750  protected void composeObservationComponentComponent(String name, Observation.ObservationComponentComponent element) throws IOException {
53751    if (element != null) {
53752    composeElementAttributes(element);
53753      xml.enter(FHIR_NS, name);
53754      composeObservationComponentComponentElements(element);
53755      composeElementClose(element);
53756      xml.exit(FHIR_NS, name);
53757    }
53758  }
53759
53760  protected void composeObservationComponentComponentElements(Observation.ObservationComponentComponent element) throws IOException {
53761    composeBackboneElementElements(element);
53762    if (element.hasCode()) {
53763      composeCodeableConcept("code", element.getCode());
53764    }
53765    if (element.hasValue()) {
53766      composeType("value", element.getValue());
53767    }    if (element.hasDataAbsentReason()) {
53768      composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
53769    }
53770    if (element.hasInterpretation()) { 
53771      for (CodeableConcept e : element.getInterpretation()) 
53772          composeCodeableConcept("interpretation", e);
53773    }
53774    if (element.hasReferenceRange()) { 
53775      for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
53776          composeObservationReferenceRangeComponent("referenceRange", e);
53777    }
53778  }
53779
53780  protected void composeObservationDefinition(String name, ObservationDefinition element) throws IOException {
53781    if (element != null) {
53782    composeResourceAttributes(element);
53783      xml.enter(FHIR_NS, name);
53784      composeObservationDefinitionElements(element);
53785      composeElementClose(element);
53786      xml.exit(FHIR_NS, name);
53787    }
53788  }
53789
53790  protected void composeObservationDefinitionElements(ObservationDefinition element) throws IOException {
53791    composeDomainResourceElements(element);
53792    if (element.hasUrlElement()) {
53793      composeUri("url", element.getUrlElement());
53794    }
53795    if (element.hasIdentifier()) {
53796      composeIdentifier("identifier", element.getIdentifier());
53797    }
53798    if (element.hasVersionElement()) {
53799      composeString("version", element.getVersionElement());
53800    }
53801    if (element.hasVersionAlgorithm()) {
53802      composeType("versionAlgorithm", element.getVersionAlgorithm());
53803    }    if (element.hasNameElement()) {
53804      composeString("name", element.getNameElement());
53805    }
53806    if (element.hasTitleElement()) {
53807      composeString("title", element.getTitleElement());
53808    }
53809    if (element.hasStatusElement())
53810      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
53811    if (element.hasExperimentalElement()) {
53812      composeBoolean("experimental", element.getExperimentalElement());
53813    }
53814    if (element.hasDateElement()) {
53815      composeDateTime("date", element.getDateElement());
53816    }
53817    if (element.hasPublisherElement()) {
53818      composeString("publisher", element.getPublisherElement());
53819    }
53820    if (element.hasContact()) { 
53821      for (ContactDetail e : element.getContact()) 
53822          composeContactDetail("contact", e);
53823    }
53824    if (element.hasDescriptionElement()) {
53825      composeMarkdown("description", element.getDescriptionElement());
53826    }
53827    if (element.hasUseContext()) { 
53828      for (UsageContext e : element.getUseContext()) 
53829          composeUsageContext("useContext", e);
53830    }
53831    if (element.hasJurisdiction()) { 
53832      for (CodeableConcept e : element.getJurisdiction()) 
53833          composeCodeableConcept("jurisdiction", e);
53834    }
53835    if (element.hasPurposeElement()) {
53836      composeMarkdown("purpose", element.getPurposeElement());
53837    }
53838    if (element.hasCopyrightElement()) {
53839      composeMarkdown("copyright", element.getCopyrightElement());
53840    }
53841    if (element.hasCopyrightLabelElement()) {
53842      composeString("copyrightLabel", element.getCopyrightLabelElement());
53843    }
53844    if (element.hasApprovalDateElement()) {
53845      composeDate("approvalDate", element.getApprovalDateElement());
53846    }
53847    if (element.hasLastReviewDateElement()) {
53848      composeDate("lastReviewDate", element.getLastReviewDateElement());
53849    }
53850    if (element.hasEffectivePeriod()) {
53851      composePeriod("effectivePeriod", element.getEffectivePeriod());
53852    }
53853    if (element.hasDerivedFromCanonical()) { 
53854      for (CanonicalType e : element.getDerivedFromCanonical()) 
53855          composeCanonical("derivedFromCanonical", e);
53856    }
53857    if (element.hasDerivedFromUri()) { 
53858      for (UriType e : element.getDerivedFromUri()) 
53859          composeUri("derivedFromUri", e);
53860    }
53861    if (element.hasSubject()) { 
53862      for (CodeableConcept e : element.getSubject()) 
53863          composeCodeableConcept("subject", e);
53864    }
53865    if (element.hasPerformerType()) {
53866      composeCodeableConcept("performerType", element.getPerformerType());
53867    }
53868    if (element.hasCategory()) { 
53869      for (CodeableConcept e : element.getCategory()) 
53870          composeCodeableConcept("category", e);
53871    }
53872    if (element.hasCode()) {
53873      composeCodeableConcept("code", element.getCode());
53874    }
53875      if (element.hasPermittedDataType()) 
53876        for (Enumeration<ObservationDefinition.ObservationDataType> e : element.getPermittedDataType()) 
53877          composeEnumeration("permittedDataType", e, new ObservationDefinition.ObservationDataTypeEnumFactory());
53878    if (element.hasMultipleResultsAllowedElement()) {
53879      composeBoolean("multipleResultsAllowed", element.getMultipleResultsAllowedElement());
53880    }
53881    if (element.hasBodySite()) {
53882      composeCodeableConcept("bodySite", element.getBodySite());
53883    }
53884    if (element.hasMethod()) {
53885      composeCodeableConcept("method", element.getMethod());
53886    }
53887    if (element.hasSpecimen()) { 
53888      for (Reference e : element.getSpecimen()) 
53889          composeReference("specimen", e);
53890    }
53891    if (element.hasDevice()) { 
53892      for (Reference e : element.getDevice()) 
53893          composeReference("device", e);
53894    }
53895    if (element.hasPreferredReportNameElement()) {
53896      composeString("preferredReportName", element.getPreferredReportNameElement());
53897    }
53898    if (element.hasPermittedUnit()) { 
53899      for (Coding e : element.getPermittedUnit()) 
53900          composeCoding("permittedUnit", e);
53901    }
53902    if (element.hasQualifiedValue()) { 
53903      for (ObservationDefinition.ObservationDefinitionQualifiedValueComponent e : element.getQualifiedValue()) 
53904          composeObservationDefinitionQualifiedValueComponent("qualifiedValue", e);
53905    }
53906    if (element.hasHasMember()) { 
53907      for (Reference e : element.getHasMember()) 
53908          composeReference("hasMember", e);
53909    }
53910    if (element.hasComponent()) { 
53911      for (ObservationDefinition.ObservationDefinitionComponentComponent e : element.getComponent()) 
53912          composeObservationDefinitionComponentComponent("component", e);
53913    }
53914  }
53915
53916  protected void composeObservationDefinitionQualifiedValueComponent(String name, ObservationDefinition.ObservationDefinitionQualifiedValueComponent element) throws IOException {
53917    if (element != null) {
53918    composeElementAttributes(element);
53919      xml.enter(FHIR_NS, name);
53920      composeObservationDefinitionQualifiedValueComponentElements(element);
53921      composeElementClose(element);
53922      xml.exit(FHIR_NS, name);
53923    }
53924  }
53925
53926  protected void composeObservationDefinitionQualifiedValueComponentElements(ObservationDefinition.ObservationDefinitionQualifiedValueComponent element) throws IOException {
53927    composeBackboneElementElements(element);
53928    if (element.hasContext()) {
53929      composeCodeableConcept("context", element.getContext());
53930    }
53931    if (element.hasAppliesTo()) { 
53932      for (CodeableConcept e : element.getAppliesTo()) 
53933          composeCodeableConcept("appliesTo", e);
53934    }
53935    if (element.hasGenderElement())
53936      composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
53937    if (element.hasAge()) {
53938      composeRange("age", element.getAge());
53939    }
53940    if (element.hasGestationalAge()) {
53941      composeRange("gestationalAge", element.getGestationalAge());
53942    }
53943    if (element.hasConditionElement()) {
53944      composeString("condition", element.getConditionElement());
53945    }
53946    if (element.hasRangeCategoryElement())
53947      composeEnumeration("rangeCategory", element.getRangeCategoryElement(), new ObservationDefinition.ObservationRangeCategoryEnumFactory());
53948    if (element.hasRange()) {
53949      composeRange("range", element.getRange());
53950    }
53951    if (element.hasValidCodedValueSetElement()) {
53952      composeCanonical("validCodedValueSet", element.getValidCodedValueSetElement());
53953    }
53954    if (element.hasNormalCodedValueSetElement()) {
53955      composeCanonical("normalCodedValueSet", element.getNormalCodedValueSetElement());
53956    }
53957    if (element.hasAbnormalCodedValueSetElement()) {
53958      composeCanonical("abnormalCodedValueSet", element.getAbnormalCodedValueSetElement());
53959    }
53960    if (element.hasCriticalCodedValueSetElement()) {
53961      composeCanonical("criticalCodedValueSet", element.getCriticalCodedValueSetElement());
53962    }
53963  }
53964
53965  protected void composeObservationDefinitionComponentComponent(String name, ObservationDefinition.ObservationDefinitionComponentComponent element) throws IOException {
53966    if (element != null) {
53967    composeElementAttributes(element);
53968      xml.enter(FHIR_NS, name);
53969      composeObservationDefinitionComponentComponentElements(element);
53970      composeElementClose(element);
53971      xml.exit(FHIR_NS, name);
53972    }
53973  }
53974
53975  protected void composeObservationDefinitionComponentComponentElements(ObservationDefinition.ObservationDefinitionComponentComponent element) throws IOException {
53976    composeBackboneElementElements(element);
53977    if (element.hasCode()) {
53978      composeCodeableConcept("code", element.getCode());
53979    }
53980      if (element.hasPermittedDataType()) 
53981        for (Enumeration<ObservationDefinition.ObservationDataType> e : element.getPermittedDataType()) 
53982          composeEnumeration("permittedDataType", e, new ObservationDefinition.ObservationDataTypeEnumFactory());
53983    if (element.hasPermittedUnit()) { 
53984      for (Coding e : element.getPermittedUnit()) 
53985          composeCoding("permittedUnit", e);
53986    }
53987    if (element.hasQualifiedValue()) { 
53988      for (ObservationDefinition.ObservationDefinitionQualifiedValueComponent e : element.getQualifiedValue()) 
53989          composeObservationDefinitionQualifiedValueComponent("qualifiedValue", e);
53990    }
53991  }
53992
53993  protected void composeOperationDefinition(String name, OperationDefinition element) throws IOException {
53994    if (element != null) {
53995    composeResourceAttributes(element);
53996      xml.enter(FHIR_NS, name);
53997      composeOperationDefinitionElements(element);
53998      composeElementClose(element);
53999      xml.exit(FHIR_NS, name);
54000    }
54001  }
54002
54003  protected void composeOperationDefinitionElements(OperationDefinition element) throws IOException {
54004    composeCanonicalResourceElements(element);
54005    if (element.hasUrlElement()) {
54006      composeUri("url", element.getUrlElement());
54007    }
54008    if (element.hasIdentifier()) { 
54009      for (Identifier e : element.getIdentifier()) 
54010          composeIdentifier("identifier", e);
54011    }
54012    if (element.hasVersionElement()) {
54013      composeString("version", element.getVersionElement());
54014    }
54015    if (element.hasVersionAlgorithm()) {
54016      composeType("versionAlgorithm", element.getVersionAlgorithm());
54017    }    if (element.hasNameElement()) {
54018      composeString("name", element.getNameElement());
54019    }
54020    if (element.hasTitleElement()) {
54021      composeString("title", element.getTitleElement());
54022    }
54023    if (element.hasStatusElement())
54024      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
54025    if (element.hasKindElement())
54026      composeEnumeration("kind", element.getKindElement(), new OperationDefinition.OperationKindEnumFactory());
54027    if (element.hasExperimentalElement()) {
54028      composeBoolean("experimental", element.getExperimentalElement());
54029    }
54030    if (element.hasDateElement()) {
54031      composeDateTime("date", element.getDateElement());
54032    }
54033    if (element.hasPublisherElement()) {
54034      composeString("publisher", element.getPublisherElement());
54035    }
54036    if (element.hasContact()) { 
54037      for (ContactDetail e : element.getContact()) 
54038          composeContactDetail("contact", e);
54039    }
54040    if (element.hasDescriptionElement()) {
54041      composeMarkdown("description", element.getDescriptionElement());
54042    }
54043    if (element.hasUseContext()) { 
54044      for (UsageContext e : element.getUseContext()) 
54045          composeUsageContext("useContext", e);
54046    }
54047    if (element.hasJurisdiction()) { 
54048      for (CodeableConcept e : element.getJurisdiction()) 
54049          composeCodeableConcept("jurisdiction", e);
54050    }
54051    if (element.hasPurposeElement()) {
54052      composeMarkdown("purpose", element.getPurposeElement());
54053    }
54054    if (element.hasCopyrightElement()) {
54055      composeMarkdown("copyright", element.getCopyrightElement());
54056    }
54057    if (element.hasCopyrightLabelElement()) {
54058      composeString("copyrightLabel", element.getCopyrightLabelElement());
54059    }
54060    if (element.hasAffectsStateElement()) {
54061      composeBoolean("affectsState", element.getAffectsStateElement());
54062    }
54063    if (element.hasCodeElement()) {
54064      composeCode("code", element.getCodeElement());
54065    }
54066    if (element.hasCommentElement()) {
54067      composeMarkdown("comment", element.getCommentElement());
54068    }
54069    if (element.hasBaseElement()) {
54070      composeCanonical("base", element.getBaseElement());
54071    }
54072      if (element.hasResource()) 
54073        for (Enumeration<Enumerations.VersionIndependentResourceTypesAll> e : element.getResource()) 
54074          composeEnumeration("resource", e, new Enumerations.VersionIndependentResourceTypesAllEnumFactory());
54075    if (element.hasSystemElement()) {
54076      composeBoolean("system", element.getSystemElement());
54077    }
54078    if (element.hasTypeElement()) {
54079      composeBoolean("type", element.getTypeElement());
54080    }
54081    if (element.hasInstanceElement()) {
54082      composeBoolean("instance", element.getInstanceElement());
54083    }
54084    if (element.hasInputProfileElement()) {
54085      composeCanonical("inputProfile", element.getInputProfileElement());
54086    }
54087    if (element.hasOutputProfileElement()) {
54088      composeCanonical("outputProfile", element.getOutputProfileElement());
54089    }
54090    if (element.hasParameter()) { 
54091      for (OperationDefinition.OperationDefinitionParameterComponent e : element.getParameter()) 
54092          composeOperationDefinitionParameterComponent("parameter", e);
54093    }
54094    if (element.hasOverload()) { 
54095      for (OperationDefinition.OperationDefinitionOverloadComponent e : element.getOverload()) 
54096          composeOperationDefinitionOverloadComponent("overload", e);
54097    }
54098  }
54099
54100  protected void composeOperationDefinitionParameterComponent(String name, OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
54101    if (element != null) {
54102    composeElementAttributes(element);
54103      xml.enter(FHIR_NS, name);
54104      composeOperationDefinitionParameterComponentElements(element);
54105      composeElementClose(element);
54106      xml.exit(FHIR_NS, name);
54107    }
54108  }
54109
54110  protected void composeOperationDefinitionParameterComponentElements(OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
54111    composeBackboneElementElements(element);
54112    if (element.hasNameElement()) {
54113      composeCode("name", element.getNameElement());
54114    }
54115    if (element.hasUseElement())
54116      composeEnumeration("use", element.getUseElement(), new Enumerations.OperationParameterUseEnumFactory());
54117      if (element.hasScope()) 
54118        for (Enumeration<OperationDefinition.OperationParameterScope> e : element.getScope()) 
54119          composeEnumeration("scope", e, new OperationDefinition.OperationParameterScopeEnumFactory());
54120    if (element.hasMinElement()) {
54121      composeInteger("min", element.getMinElement());
54122    }
54123    if (element.hasMaxElement()) {
54124      composeString("max", element.getMaxElement());
54125    }
54126    if (element.hasDocumentationElement()) {
54127      composeMarkdown("documentation", element.getDocumentationElement());
54128    }
54129    if (element.hasTypeElement())
54130      composeEnumeration("type", element.getTypeElement(), new Enumerations.FHIRTypesEnumFactory());
54131      if (element.hasAllowedType()) 
54132        for (Enumeration<Enumerations.FHIRTypes> e : element.getAllowedType()) 
54133          composeEnumeration("allowedType", e, new Enumerations.FHIRTypesEnumFactory());
54134    if (element.hasTargetProfile()) { 
54135      for (CanonicalType e : element.getTargetProfile()) 
54136          composeCanonical("targetProfile", e);
54137    }
54138    if (element.hasSearchTypeElement())
54139      composeEnumeration("searchType", element.getSearchTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
54140    if (element.hasBinding()) {
54141      composeOperationDefinitionParameterBindingComponent("binding", element.getBinding());
54142    }
54143    if (element.hasReferencedFrom()) { 
54144      for (OperationDefinition.OperationDefinitionParameterReferencedFromComponent e : element.getReferencedFrom()) 
54145          composeOperationDefinitionParameterReferencedFromComponent("referencedFrom", e);
54146    }
54147    if (element.hasPart()) { 
54148      for (OperationDefinition.OperationDefinitionParameterComponent e : element.getPart()) 
54149          composeOperationDefinitionParameterComponent("part", e);
54150    }
54151  }
54152
54153  protected void composeOperationDefinitionParameterBindingComponent(String name, OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
54154    if (element != null) {
54155    composeElementAttributes(element);
54156      xml.enter(FHIR_NS, name);
54157      composeOperationDefinitionParameterBindingComponentElements(element);
54158      composeElementClose(element);
54159      xml.exit(FHIR_NS, name);
54160    }
54161  }
54162
54163  protected void composeOperationDefinitionParameterBindingComponentElements(OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
54164    composeBackboneElementElements(element);
54165    if (element.hasStrengthElement())
54166      composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
54167    if (element.hasValueSetElement()) {
54168      composeCanonical("valueSet", element.getValueSetElement());
54169    }
54170  }
54171
54172  protected void composeOperationDefinitionParameterReferencedFromComponent(String name, OperationDefinition.OperationDefinitionParameterReferencedFromComponent element) throws IOException {
54173    if (element != null) {
54174    composeElementAttributes(element);
54175      xml.enter(FHIR_NS, name);
54176      composeOperationDefinitionParameterReferencedFromComponentElements(element);
54177      composeElementClose(element);
54178      xml.exit(FHIR_NS, name);
54179    }
54180  }
54181
54182  protected void composeOperationDefinitionParameterReferencedFromComponentElements(OperationDefinition.OperationDefinitionParameterReferencedFromComponent element) throws IOException {
54183    composeBackboneElementElements(element);
54184    if (element.hasSourceElement()) {
54185      composeString("source", element.getSourceElement());
54186    }
54187    if (element.hasSourceIdElement()) {
54188      composeString("sourceId", element.getSourceIdElement());
54189    }
54190  }
54191
54192  protected void composeOperationDefinitionOverloadComponent(String name, OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
54193    if (element != null) {
54194    composeElementAttributes(element);
54195      xml.enter(FHIR_NS, name);
54196      composeOperationDefinitionOverloadComponentElements(element);
54197      composeElementClose(element);
54198      xml.exit(FHIR_NS, name);
54199    }
54200  }
54201
54202  protected void composeOperationDefinitionOverloadComponentElements(OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
54203    composeBackboneElementElements(element);
54204    if (element.hasParameterName()) { 
54205      for (StringType e : element.getParameterName()) 
54206          composeString("parameterName", e);
54207    }
54208    if (element.hasCommentElement()) {
54209      composeString("comment", element.getCommentElement());
54210    }
54211  }
54212
54213  protected void composeOperationOutcome(String name, OperationOutcome element) throws IOException {
54214    if (element != null) {
54215    composeResourceAttributes(element);
54216      xml.enter(FHIR_NS, name);
54217      composeOperationOutcomeElements(element);
54218      composeElementClose(element);
54219      xml.exit(FHIR_NS, name);
54220    }
54221  }
54222
54223  protected void composeOperationOutcomeElements(OperationOutcome element) throws IOException {
54224    composeDomainResourceElements(element);
54225    if (element.hasIssue()) { 
54226      for (OperationOutcome.OperationOutcomeIssueComponent e : element.getIssue()) 
54227          composeOperationOutcomeIssueComponent("issue", e);
54228    }
54229  }
54230
54231  protected void composeOperationOutcomeIssueComponent(String name, OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
54232    if (element != null) {
54233    composeElementAttributes(element);
54234      xml.enter(FHIR_NS, name);
54235      composeOperationOutcomeIssueComponentElements(element);
54236      composeElementClose(element);
54237      xml.exit(FHIR_NS, name);
54238    }
54239  }
54240
54241  protected void composeOperationOutcomeIssueComponentElements(OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
54242    composeBackboneElementElements(element);
54243    if (element.hasSeverityElement())
54244      composeEnumeration("severity", element.getSeverityElement(), new OperationOutcome.IssueSeverityEnumFactory());
54245    if (element.hasCodeElement())
54246      composeEnumeration("code", element.getCodeElement(), new OperationOutcome.IssueTypeEnumFactory());
54247    if (element.hasDetails()) {
54248      composeCodeableConcept("details", element.getDetails());
54249    }
54250    if (element.hasDiagnosticsElement()) {
54251      composeString("diagnostics", element.getDiagnosticsElement());
54252    }
54253    if (element.hasLocation()) { 
54254      for (StringType e : element.getLocation()) 
54255          composeString("location", e);
54256    }
54257    if (element.hasExpression()) { 
54258      for (StringType e : element.getExpression()) 
54259          composeString("expression", e);
54260    }
54261  }
54262
54263  protected void composeOrganization(String name, Organization element) throws IOException {
54264    if (element != null) {
54265    composeResourceAttributes(element);
54266      xml.enter(FHIR_NS, name);
54267      composeOrganizationElements(element);
54268      composeElementClose(element);
54269      xml.exit(FHIR_NS, name);
54270    }
54271  }
54272
54273  protected void composeOrganizationElements(Organization element) throws IOException {
54274    composeDomainResourceElements(element);
54275    if (element.hasIdentifier()) { 
54276      for (Identifier e : element.getIdentifier()) 
54277          composeIdentifier("identifier", e);
54278    }
54279    if (element.hasActiveElement()) {
54280      composeBoolean("active", element.getActiveElement());
54281    }
54282    if (element.hasType()) { 
54283      for (CodeableConcept e : element.getType()) 
54284          composeCodeableConcept("type", e);
54285    }
54286    if (element.hasNameElement()) {
54287      composeString("name", element.getNameElement());
54288    }
54289    if (element.hasAlias()) { 
54290      for (StringType e : element.getAlias()) 
54291          composeString("alias", e);
54292    }
54293    if (element.hasDescriptionElement()) {
54294      composeMarkdown("description", element.getDescriptionElement());
54295    }
54296    if (element.hasContact()) { 
54297      for (ExtendedContactDetail e : element.getContact()) 
54298          composeExtendedContactDetail("contact", e);
54299    }
54300    if (element.hasPartOf()) {
54301      composeReference("partOf", element.getPartOf());
54302    }
54303    if (element.hasEndpoint()) { 
54304      for (Reference e : element.getEndpoint()) 
54305          composeReference("endpoint", e);
54306    }
54307    if (element.hasQualification()) { 
54308      for (Organization.OrganizationQualificationComponent e : element.getQualification()) 
54309          composeOrganizationQualificationComponent("qualification", e);
54310    }
54311  }
54312
54313  protected void composeOrganizationQualificationComponent(String name, Organization.OrganizationQualificationComponent element) throws IOException {
54314    if (element != null) {
54315    composeElementAttributes(element);
54316      xml.enter(FHIR_NS, name);
54317      composeOrganizationQualificationComponentElements(element);
54318      composeElementClose(element);
54319      xml.exit(FHIR_NS, name);
54320    }
54321  }
54322
54323  protected void composeOrganizationQualificationComponentElements(Organization.OrganizationQualificationComponent element) throws IOException {
54324    composeBackboneElementElements(element);
54325    if (element.hasIdentifier()) { 
54326      for (Identifier e : element.getIdentifier()) 
54327          composeIdentifier("identifier", e);
54328    }
54329    if (element.hasCode()) {
54330      composeCodeableConcept("code", element.getCode());
54331    }
54332    if (element.hasPeriod()) {
54333      composePeriod("period", element.getPeriod());
54334    }
54335    if (element.hasIssuer()) {
54336      composeReference("issuer", element.getIssuer());
54337    }
54338  }
54339
54340  protected void composeOrganizationAffiliation(String name, OrganizationAffiliation element) throws IOException {
54341    if (element != null) {
54342    composeResourceAttributes(element);
54343      xml.enter(FHIR_NS, name);
54344      composeOrganizationAffiliationElements(element);
54345      composeElementClose(element);
54346      xml.exit(FHIR_NS, name);
54347    }
54348  }
54349
54350  protected void composeOrganizationAffiliationElements(OrganizationAffiliation element) throws IOException {
54351    composeDomainResourceElements(element);
54352    if (element.hasIdentifier()) { 
54353      for (Identifier e : element.getIdentifier()) 
54354          composeIdentifier("identifier", e);
54355    }
54356    if (element.hasActiveElement()) {
54357      composeBoolean("active", element.getActiveElement());
54358    }
54359    if (element.hasPeriod()) {
54360      composePeriod("period", element.getPeriod());
54361    }
54362    if (element.hasOrganization()) {
54363      composeReference("organization", element.getOrganization());
54364    }
54365    if (element.hasParticipatingOrganization()) {
54366      composeReference("participatingOrganization", element.getParticipatingOrganization());
54367    }
54368    if (element.hasNetwork()) { 
54369      for (Reference e : element.getNetwork()) 
54370          composeReference("network", e);
54371    }
54372    if (element.hasCode()) { 
54373      for (CodeableConcept e : element.getCode()) 
54374          composeCodeableConcept("code", e);
54375    }
54376    if (element.hasSpecialty()) { 
54377      for (CodeableConcept e : element.getSpecialty()) 
54378          composeCodeableConcept("specialty", e);
54379    }
54380    if (element.hasLocation()) { 
54381      for (Reference e : element.getLocation()) 
54382          composeReference("location", e);
54383    }
54384    if (element.hasHealthcareService()) { 
54385      for (Reference e : element.getHealthcareService()) 
54386          composeReference("healthcareService", e);
54387    }
54388    if (element.hasContact()) { 
54389      for (ExtendedContactDetail e : element.getContact()) 
54390          composeExtendedContactDetail("contact", e);
54391    }
54392    if (element.hasEndpoint()) { 
54393      for (Reference e : element.getEndpoint()) 
54394          composeReference("endpoint", e);
54395    }
54396  }
54397
54398  protected void composePackagedProductDefinition(String name, PackagedProductDefinition element) throws IOException {
54399    if (element != null) {
54400    composeResourceAttributes(element);
54401      xml.enter(FHIR_NS, name);
54402      composePackagedProductDefinitionElements(element);
54403      composeElementClose(element);
54404      xml.exit(FHIR_NS, name);
54405    }
54406  }
54407
54408  protected void composePackagedProductDefinitionElements(PackagedProductDefinition element) throws IOException {
54409    composeDomainResourceElements(element);
54410    if (element.hasIdentifier()) { 
54411      for (Identifier e : element.getIdentifier()) 
54412          composeIdentifier("identifier", e);
54413    }
54414    if (element.hasNameElement()) {
54415      composeString("name", element.getNameElement());
54416    }
54417    if (element.hasType()) {
54418      composeCodeableConcept("type", element.getType());
54419    }
54420    if (element.hasPackageFor()) { 
54421      for (Reference e : element.getPackageFor()) 
54422          composeReference("packageFor", e);
54423    }
54424    if (element.hasStatus()) {
54425      composeCodeableConcept("status", element.getStatus());
54426    }
54427    if (element.hasStatusDateElement()) {
54428      composeDateTime("statusDate", element.getStatusDateElement());
54429    }
54430    if (element.hasContainedItemQuantity()) { 
54431      for (Quantity e : element.getContainedItemQuantity()) 
54432          composeQuantity("containedItemQuantity", e);
54433    }
54434    if (element.hasDescriptionElement()) {
54435      composeMarkdown("description", element.getDescriptionElement());
54436    }
54437    if (element.hasLegalStatusOfSupply()) { 
54438      for (PackagedProductDefinition.PackagedProductDefinitionLegalStatusOfSupplyComponent e : element.getLegalStatusOfSupply()) 
54439          composePackagedProductDefinitionLegalStatusOfSupplyComponent("legalStatusOfSupply", e);
54440    }
54441    if (element.hasMarketingStatus()) { 
54442      for (MarketingStatus e : element.getMarketingStatus()) 
54443          composeMarketingStatus("marketingStatus", e);
54444    }
54445    if (element.hasCopackagedIndicatorElement()) {
54446      composeBoolean("copackagedIndicator", element.getCopackagedIndicatorElement());
54447    }
54448    if (element.hasManufacturer()) { 
54449      for (Reference e : element.getManufacturer()) 
54450          composeReference("manufacturer", e);
54451    }
54452    if (element.hasAttachedDocument()) { 
54453      for (Reference e : element.getAttachedDocument()) 
54454          composeReference("attachedDocument", e);
54455    }
54456    if (element.hasPackaging()) {
54457      composePackagedProductDefinitionPackagingComponent("packaging", element.getPackaging());
54458    }
54459    if (element.hasCharacteristic()) { 
54460      for (PackagedProductDefinition.PackagedProductDefinitionPackagingPropertyComponent e : element.getCharacteristic()) 
54461          composePackagedProductDefinitionPackagingPropertyComponent("characteristic", e);
54462    }
54463  }
54464
54465  protected void composePackagedProductDefinitionLegalStatusOfSupplyComponent(String name, PackagedProductDefinition.PackagedProductDefinitionLegalStatusOfSupplyComponent element) throws IOException {
54466    if (element != null) {
54467    composeElementAttributes(element);
54468      xml.enter(FHIR_NS, name);
54469      composePackagedProductDefinitionLegalStatusOfSupplyComponentElements(element);
54470      composeElementClose(element);
54471      xml.exit(FHIR_NS, name);
54472    }
54473  }
54474
54475  protected void composePackagedProductDefinitionLegalStatusOfSupplyComponentElements(PackagedProductDefinition.PackagedProductDefinitionLegalStatusOfSupplyComponent element) throws IOException {
54476    composeBackboneElementElements(element);
54477    if (element.hasCode()) {
54478      composeCodeableConcept("code", element.getCode());
54479    }
54480    if (element.hasJurisdiction()) {
54481      composeCodeableConcept("jurisdiction", element.getJurisdiction());
54482    }
54483  }
54484
54485  protected void composePackagedProductDefinitionPackagingComponent(String name, PackagedProductDefinition.PackagedProductDefinitionPackagingComponent element) throws IOException {
54486    if (element != null) {
54487    composeElementAttributes(element);
54488      xml.enter(FHIR_NS, name);
54489      composePackagedProductDefinitionPackagingComponentElements(element);
54490      composeElementClose(element);
54491      xml.exit(FHIR_NS, name);
54492    }
54493  }
54494
54495  protected void composePackagedProductDefinitionPackagingComponentElements(PackagedProductDefinition.PackagedProductDefinitionPackagingComponent element) throws IOException {
54496    composeBackboneElementElements(element);
54497    if (element.hasIdentifier()) { 
54498      for (Identifier e : element.getIdentifier()) 
54499          composeIdentifier("identifier", e);
54500    }
54501    if (element.hasType()) {
54502      composeCodeableConcept("type", element.getType());
54503    }
54504    if (element.hasComponentPartElement()) {
54505      composeBoolean("componentPart", element.getComponentPartElement());
54506    }
54507    if (element.hasQuantityElement()) {
54508      composeInteger("quantity", element.getQuantityElement());
54509    }
54510    if (element.hasMaterial()) { 
54511      for (CodeableConcept e : element.getMaterial()) 
54512          composeCodeableConcept("material", e);
54513    }
54514    if (element.hasAlternateMaterial()) { 
54515      for (CodeableConcept e : element.getAlternateMaterial()) 
54516          composeCodeableConcept("alternateMaterial", e);
54517    }
54518    if (element.hasShelfLifeStorage()) { 
54519      for (ProductShelfLife e : element.getShelfLifeStorage()) 
54520          composeProductShelfLife("shelfLifeStorage", e);
54521    }
54522    if (element.hasManufacturer()) { 
54523      for (Reference e : element.getManufacturer()) 
54524          composeReference("manufacturer", e);
54525    }
54526    if (element.hasProperty()) { 
54527      for (PackagedProductDefinition.PackagedProductDefinitionPackagingPropertyComponent e : element.getProperty()) 
54528          composePackagedProductDefinitionPackagingPropertyComponent("property", e);
54529    }
54530    if (element.hasContainedItem()) { 
54531      for (PackagedProductDefinition.PackagedProductDefinitionPackagingContainedItemComponent e : element.getContainedItem()) 
54532          composePackagedProductDefinitionPackagingContainedItemComponent("containedItem", e);
54533    }
54534    if (element.hasPackaging()) { 
54535      for (PackagedProductDefinition.PackagedProductDefinitionPackagingComponent e : element.getPackaging()) 
54536          composePackagedProductDefinitionPackagingComponent("packaging", e);
54537    }
54538  }
54539
54540  protected void composePackagedProductDefinitionPackagingPropertyComponent(String name, PackagedProductDefinition.PackagedProductDefinitionPackagingPropertyComponent element) throws IOException {
54541    if (element != null) {
54542    composeElementAttributes(element);
54543      xml.enter(FHIR_NS, name);
54544      composePackagedProductDefinitionPackagingPropertyComponentElements(element);
54545      composeElementClose(element);
54546      xml.exit(FHIR_NS, name);
54547    }
54548  }
54549
54550  protected void composePackagedProductDefinitionPackagingPropertyComponentElements(PackagedProductDefinition.PackagedProductDefinitionPackagingPropertyComponent element) throws IOException {
54551    composeBackboneElementElements(element);
54552    if (element.hasType()) {
54553      composeCodeableConcept("type", element.getType());
54554    }
54555    if (element.hasValue()) {
54556      composeType("value", element.getValue());
54557    }  }
54558
54559  protected void composePackagedProductDefinitionPackagingContainedItemComponent(String name, PackagedProductDefinition.PackagedProductDefinitionPackagingContainedItemComponent element) throws IOException {
54560    if (element != null) {
54561    composeElementAttributes(element);
54562      xml.enter(FHIR_NS, name);
54563      composePackagedProductDefinitionPackagingContainedItemComponentElements(element);
54564      composeElementClose(element);
54565      xml.exit(FHIR_NS, name);
54566    }
54567  }
54568
54569  protected void composePackagedProductDefinitionPackagingContainedItemComponentElements(PackagedProductDefinition.PackagedProductDefinitionPackagingContainedItemComponent element) throws IOException {
54570    composeBackboneElementElements(element);
54571    if (element.hasItem()) {
54572      composeCodeableReference("item", element.getItem());
54573    }
54574    if (element.hasAmount()) {
54575      composeQuantity("amount", element.getAmount());
54576    }
54577  }
54578
54579  protected void composeParameters(String name, Parameters element) throws IOException {
54580    if (element != null) {
54581    composeResourceAttributes(element);
54582      xml.enter(FHIR_NS, name);
54583      composeParametersElements(element);
54584      composeElementClose(element);
54585      xml.exit(FHIR_NS, name);
54586    }
54587  }
54588
54589  protected void composeParametersElements(Parameters element) throws IOException {
54590    composeResourceElements(element);
54591    if (element.hasParameter()) { 
54592      for (Parameters.ParametersParameterComponent e : element.getParameter()) 
54593          composeParametersParameterComponent("parameter", e);
54594    }
54595  }
54596
54597  protected void composeParametersParameterComponent(String name, Parameters.ParametersParameterComponent element) throws IOException {
54598    if (element != null) {
54599    composeElementAttributes(element);
54600      xml.enter(FHIR_NS, name);
54601      composeParametersParameterComponentElements(element);
54602      composeElementClose(element);
54603      xml.exit(FHIR_NS, name);
54604    }
54605  }
54606
54607  protected void composeParametersParameterComponentElements(Parameters.ParametersParameterComponent element) throws IOException {
54608    composeBackboneElementElements(element);
54609    if (element.hasNameElement()) {
54610      composeString("name", element.getNameElement());
54611    }
54612    if (element.hasValue()) {
54613      composeType("value", element.getValue());
54614    }    if (element.hasResource()) {
54615      xml.enter(FHIR_NS, "resource");
54616      composeResource(element.getResource());
54617      xml.exit(FHIR_NS, "resource");
54618    }
54619    if (element.hasPart()) { 
54620      for (Parameters.ParametersParameterComponent e : element.getPart()) 
54621          composeParametersParameterComponent("part", e);
54622    }
54623  }
54624
54625  protected void composePatient(String name, Patient element) throws IOException {
54626    if (element != null) {
54627    composeResourceAttributes(element);
54628      xml.enter(FHIR_NS, name);
54629      composePatientElements(element);
54630      composeElementClose(element);
54631      xml.exit(FHIR_NS, name);
54632    }
54633  }
54634
54635  protected void composePatientElements(Patient element) throws IOException {
54636    composeDomainResourceElements(element);
54637    if (element.hasIdentifier()) { 
54638      for (Identifier e : element.getIdentifier()) 
54639          composeIdentifier("identifier", e);
54640    }
54641    if (element.hasActiveElement()) {
54642      composeBoolean("active", element.getActiveElement());
54643    }
54644    if (element.hasName()) { 
54645      for (HumanName e : element.getName()) 
54646          composeHumanName("name", e);
54647    }
54648    if (element.hasTelecom()) { 
54649      for (ContactPoint e : element.getTelecom()) 
54650          composeContactPoint("telecom", e);
54651    }
54652    if (element.hasGenderElement())
54653      composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
54654    if (element.hasBirthDateElement()) {
54655      composeDate("birthDate", element.getBirthDateElement());
54656    }
54657    if (element.hasDeceased()) {
54658      composeType("deceased", element.getDeceased());
54659    }    if (element.hasAddress()) { 
54660      for (Address e : element.getAddress()) 
54661          composeAddress("address", e);
54662    }
54663    if (element.hasMaritalStatus()) {
54664      composeCodeableConcept("maritalStatus", element.getMaritalStatus());
54665    }
54666    if (element.hasMultipleBirth()) {
54667      composeType("multipleBirth", element.getMultipleBirth());
54668    }    if (element.hasPhoto()) { 
54669      for (Attachment e : element.getPhoto()) 
54670          composeAttachment("photo", e);
54671    }
54672    if (element.hasContact()) { 
54673      for (Patient.ContactComponent e : element.getContact()) 
54674          composePatientContactComponent("contact", e);
54675    }
54676    if (element.hasCommunication()) { 
54677      for (Patient.PatientCommunicationComponent e : element.getCommunication()) 
54678          composePatientCommunicationComponent("communication", e);
54679    }
54680    if (element.hasGeneralPractitioner()) { 
54681      for (Reference e : element.getGeneralPractitioner()) 
54682          composeReference("generalPractitioner", e);
54683    }
54684    if (element.hasManagingOrganization()) {
54685      composeReference("managingOrganization", element.getManagingOrganization());
54686    }
54687    if (element.hasLink()) { 
54688      for (Patient.PatientLinkComponent e : element.getLink()) 
54689          composePatientLinkComponent("link", e);
54690    }
54691  }
54692
54693  protected void composePatientContactComponent(String name, Patient.ContactComponent element) throws IOException {
54694    if (element != null) {
54695    composeElementAttributes(element);
54696      xml.enter(FHIR_NS, name);
54697      composePatientContactComponentElements(element);
54698      composeElementClose(element);
54699      xml.exit(FHIR_NS, name);
54700    }
54701  }
54702
54703  protected void composePatientContactComponentElements(Patient.ContactComponent element) throws IOException {
54704    composeBackboneElementElements(element);
54705    if (element.hasRelationship()) { 
54706      for (CodeableConcept e : element.getRelationship()) 
54707          composeCodeableConcept("relationship", e);
54708    }
54709    if (element.hasName()) {
54710      composeHumanName("name", element.getName());
54711    }
54712    if (element.hasTelecom()) { 
54713      for (ContactPoint e : element.getTelecom()) 
54714          composeContactPoint("telecom", e);
54715    }
54716    if (element.hasAddress()) {
54717      composeAddress("address", element.getAddress());
54718    }
54719    if (element.hasGenderElement())
54720      composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
54721    if (element.hasOrganization()) {
54722      composeReference("organization", element.getOrganization());
54723    }
54724    if (element.hasPeriod()) {
54725      composePeriod("period", element.getPeriod());
54726    }
54727  }
54728
54729  protected void composePatientCommunicationComponent(String name, Patient.PatientCommunicationComponent element) throws IOException {
54730    if (element != null) {
54731    composeElementAttributes(element);
54732      xml.enter(FHIR_NS, name);
54733      composePatientCommunicationComponentElements(element);
54734      composeElementClose(element);
54735      xml.exit(FHIR_NS, name);
54736    }
54737  }
54738
54739  protected void composePatientCommunicationComponentElements(Patient.PatientCommunicationComponent element) throws IOException {
54740    composeBackboneElementElements(element);
54741    if (element.hasLanguage()) {
54742      composeCodeableConcept("language", element.getLanguage());
54743    }
54744    if (element.hasPreferredElement()) {
54745      composeBoolean("preferred", element.getPreferredElement());
54746    }
54747  }
54748
54749  protected void composePatientLinkComponent(String name, Patient.PatientLinkComponent element) throws IOException {
54750    if (element != null) {
54751    composeElementAttributes(element);
54752      xml.enter(FHIR_NS, name);
54753      composePatientLinkComponentElements(element);
54754      composeElementClose(element);
54755      xml.exit(FHIR_NS, name);
54756    }
54757  }
54758
54759  protected void composePatientLinkComponentElements(Patient.PatientLinkComponent element) throws IOException {
54760    composeBackboneElementElements(element);
54761    if (element.hasOther()) {
54762      composeReference("other", element.getOther());
54763    }
54764    if (element.hasTypeElement())
54765      composeEnumeration("type", element.getTypeElement(), new Patient.LinkTypeEnumFactory());
54766  }
54767
54768  protected void composePaymentNotice(String name, PaymentNotice element) throws IOException {
54769    if (element != null) {
54770    composeResourceAttributes(element);
54771      xml.enter(FHIR_NS, name);
54772      composePaymentNoticeElements(element);
54773      composeElementClose(element);
54774      xml.exit(FHIR_NS, name);
54775    }
54776  }
54777
54778  protected void composePaymentNoticeElements(PaymentNotice element) throws IOException {
54779    composeDomainResourceElements(element);
54780    if (element.hasIdentifier()) { 
54781      for (Identifier e : element.getIdentifier()) 
54782          composeIdentifier("identifier", e);
54783    }
54784    if (element.hasStatusElement())
54785      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
54786    if (element.hasRequest()) {
54787      composeReference("request", element.getRequest());
54788    }
54789    if (element.hasResponse()) {
54790      composeReference("response", element.getResponse());
54791    }
54792    if (element.hasCreatedElement()) {
54793      composeDateTime("created", element.getCreatedElement());
54794    }
54795    if (element.hasReporter()) {
54796      composeReference("reporter", element.getReporter());
54797    }
54798    if (element.hasPayment()) {
54799      composeReference("payment", element.getPayment());
54800    }
54801    if (element.hasPaymentDateElement()) {
54802      composeDate("paymentDate", element.getPaymentDateElement());
54803    }
54804    if (element.hasPayee()) {
54805      composeReference("payee", element.getPayee());
54806    }
54807    if (element.hasRecipient()) {
54808      composeReference("recipient", element.getRecipient());
54809    }
54810    if (element.hasAmount()) {
54811      composeMoney("amount", element.getAmount());
54812    }
54813    if (element.hasPaymentStatus()) {
54814      composeCodeableConcept("paymentStatus", element.getPaymentStatus());
54815    }
54816  }
54817
54818  protected void composePaymentReconciliation(String name, PaymentReconciliation element) throws IOException {
54819    if (element != null) {
54820    composeResourceAttributes(element);
54821      xml.enter(FHIR_NS, name);
54822      composePaymentReconciliationElements(element);
54823      composeElementClose(element);
54824      xml.exit(FHIR_NS, name);
54825    }
54826  }
54827
54828  protected void composePaymentReconciliationElements(PaymentReconciliation element) throws IOException {
54829    composeDomainResourceElements(element);
54830    if (element.hasIdentifier()) { 
54831      for (Identifier e : element.getIdentifier()) 
54832          composeIdentifier("identifier", e);
54833    }
54834    if (element.hasType()) {
54835      composeCodeableConcept("type", element.getType());
54836    }
54837    if (element.hasStatusElement())
54838      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
54839    if (element.hasKind()) {
54840      composeCodeableConcept("kind", element.getKind());
54841    }
54842    if (element.hasPeriod()) {
54843      composePeriod("period", element.getPeriod());
54844    }
54845    if (element.hasCreatedElement()) {
54846      composeDateTime("created", element.getCreatedElement());
54847    }
54848    if (element.hasEnterer()) {
54849      composeReference("enterer", element.getEnterer());
54850    }
54851    if (element.hasIssuerType()) {
54852      composeCodeableConcept("issuerType", element.getIssuerType());
54853    }
54854    if (element.hasPaymentIssuer()) {
54855      composeReference("paymentIssuer", element.getPaymentIssuer());
54856    }
54857    if (element.hasRequest()) {
54858      composeReference("request", element.getRequest());
54859    }
54860    if (element.hasRequestor()) {
54861      composeReference("requestor", element.getRequestor());
54862    }
54863    if (element.hasOutcomeElement())
54864      composeEnumeration("outcome", element.getOutcomeElement(), new PaymentReconciliation.PaymentOutcomeEnumFactory());
54865    if (element.hasDispositionElement()) {
54866      composeString("disposition", element.getDispositionElement());
54867    }
54868    if (element.hasDateElement()) {
54869      composeDate("date", element.getDateElement());
54870    }
54871    if (element.hasLocation()) {
54872      composeReference("location", element.getLocation());
54873    }
54874    if (element.hasMethod()) {
54875      composeCodeableConcept("method", element.getMethod());
54876    }
54877    if (element.hasCardBrandElement()) {
54878      composeString("cardBrand", element.getCardBrandElement());
54879    }
54880    if (element.hasAccountNumberElement()) {
54881      composeString("accountNumber", element.getAccountNumberElement());
54882    }
54883    if (element.hasExpirationDateElement()) {
54884      composeDate("expirationDate", element.getExpirationDateElement());
54885    }
54886    if (element.hasProcessorElement()) {
54887      composeString("processor", element.getProcessorElement());
54888    }
54889    if (element.hasReferenceNumberElement()) {
54890      composeString("referenceNumber", element.getReferenceNumberElement());
54891    }
54892    if (element.hasAuthorizationElement()) {
54893      composeString("authorization", element.getAuthorizationElement());
54894    }
54895    if (element.hasTenderedAmount()) {
54896      composeMoney("tenderedAmount", element.getTenderedAmount());
54897    }
54898    if (element.hasReturnedAmount()) {
54899      composeMoney("returnedAmount", element.getReturnedAmount());
54900    }
54901    if (element.hasAmount()) {
54902      composeMoney("amount", element.getAmount());
54903    }
54904    if (element.hasPaymentIdentifier()) {
54905      composeIdentifier("paymentIdentifier", element.getPaymentIdentifier());
54906    }
54907    if (element.hasAllocation()) { 
54908      for (PaymentReconciliation.PaymentReconciliationAllocationComponent e : element.getAllocation()) 
54909          composePaymentReconciliationAllocationComponent("allocation", e);
54910    }
54911    if (element.hasFormCode()) {
54912      composeCodeableConcept("formCode", element.getFormCode());
54913    }
54914    if (element.hasProcessNote()) { 
54915      for (PaymentReconciliation.NotesComponent e : element.getProcessNote()) 
54916          composePaymentReconciliationNotesComponent("processNote", e);
54917    }
54918  }
54919
54920  protected void composePaymentReconciliationAllocationComponent(String name, PaymentReconciliation.PaymentReconciliationAllocationComponent element) throws IOException {
54921    if (element != null) {
54922    composeElementAttributes(element);
54923      xml.enter(FHIR_NS, name);
54924      composePaymentReconciliationAllocationComponentElements(element);
54925      composeElementClose(element);
54926      xml.exit(FHIR_NS, name);
54927    }
54928  }
54929
54930  protected void composePaymentReconciliationAllocationComponentElements(PaymentReconciliation.PaymentReconciliationAllocationComponent element) throws IOException {
54931    composeBackboneElementElements(element);
54932    if (element.hasIdentifier()) {
54933      composeIdentifier("identifier", element.getIdentifier());
54934    }
54935    if (element.hasPredecessor()) {
54936      composeIdentifier("predecessor", element.getPredecessor());
54937    }
54938    if (element.hasTarget()) {
54939      composeReference("target", element.getTarget());
54940    }
54941    if (element.hasTargetItem()) {
54942      composeType("targetItem", element.getTargetItem());
54943    }    if (element.hasEncounter()) {
54944      composeReference("encounter", element.getEncounter());
54945    }
54946    if (element.hasAccount()) {
54947      composeReference("account", element.getAccount());
54948    }
54949    if (element.hasType()) {
54950      composeCodeableConcept("type", element.getType());
54951    }
54952    if (element.hasSubmitter()) {
54953      composeReference("submitter", element.getSubmitter());
54954    }
54955    if (element.hasResponse()) {
54956      composeReference("response", element.getResponse());
54957    }
54958    if (element.hasDateElement()) {
54959      composeDate("date", element.getDateElement());
54960    }
54961    if (element.hasResponsible()) {
54962      composeReference("responsible", element.getResponsible());
54963    }
54964    if (element.hasPayee()) {
54965      composeReference("payee", element.getPayee());
54966    }
54967    if (element.hasAmount()) {
54968      composeMoney("amount", element.getAmount());
54969    }
54970  }
54971
54972  protected void composePaymentReconciliationNotesComponent(String name, PaymentReconciliation.NotesComponent element) throws IOException {
54973    if (element != null) {
54974    composeElementAttributes(element);
54975      xml.enter(FHIR_NS, name);
54976      composePaymentReconciliationNotesComponentElements(element);
54977      composeElementClose(element);
54978      xml.exit(FHIR_NS, name);
54979    }
54980  }
54981
54982  protected void composePaymentReconciliationNotesComponentElements(PaymentReconciliation.NotesComponent element) throws IOException {
54983    composeBackboneElementElements(element);
54984    if (element.hasTypeElement())
54985      composeEnumeration("type", element.getTypeElement(), new PaymentReconciliation.NoteTypeEnumFactory());
54986    if (element.hasTextElement()) {
54987      composeString("text", element.getTextElement());
54988    }
54989  }
54990
54991  protected void composePermission(String name, Permission element) throws IOException {
54992    if (element != null) {
54993    composeResourceAttributes(element);
54994      xml.enter(FHIR_NS, name);
54995      composePermissionElements(element);
54996      composeElementClose(element);
54997      xml.exit(FHIR_NS, name);
54998    }
54999  }
55000
55001  protected void composePermissionElements(Permission element) throws IOException {
55002    composeDomainResourceElements(element);
55003    if (element.hasStatusElement())
55004      composeEnumeration("status", element.getStatusElement(), new Permission.PermissionStatusEnumFactory());
55005    if (element.hasAsserter()) {
55006      composeReference("asserter", element.getAsserter());
55007    }
55008    if (element.hasDate()) { 
55009      for (DateTimeType e : element.getDate()) 
55010          composeDateTime("date", e);
55011    }
55012    if (element.hasValidity()) {
55013      composePeriod("validity", element.getValidity());
55014    }
55015    if (element.hasJustification()) {
55016      composePermissionJustificationComponent("justification", element.getJustification());
55017    }
55018    if (element.hasCombiningElement())
55019      composeEnumeration("combining", element.getCombiningElement(), new Permission.PermissionRuleCombiningEnumFactory());
55020    if (element.hasRule()) { 
55021      for (Permission.RuleComponent e : element.getRule()) 
55022          composePermissionRuleComponent("rule", e);
55023    }
55024  }
55025
55026  protected void composePermissionJustificationComponent(String name, Permission.PermissionJustificationComponent element) throws IOException {
55027    if (element != null) {
55028    composeElementAttributes(element);
55029      xml.enter(FHIR_NS, name);
55030      composePermissionJustificationComponentElements(element);
55031      composeElementClose(element);
55032      xml.exit(FHIR_NS, name);
55033    }
55034  }
55035
55036  protected void composePermissionJustificationComponentElements(Permission.PermissionJustificationComponent element) throws IOException {
55037    composeBackboneElementElements(element);
55038    if (element.hasBasis()) { 
55039      for (CodeableConcept e : element.getBasis()) 
55040          composeCodeableConcept("basis", e);
55041    }
55042    if (element.hasEvidence()) { 
55043      for (Reference e : element.getEvidence()) 
55044          composeReference("evidence", e);
55045    }
55046  }
55047
55048  protected void composePermissionRuleComponent(String name, Permission.RuleComponent element) throws IOException {
55049    if (element != null) {
55050    composeElementAttributes(element);
55051      xml.enter(FHIR_NS, name);
55052      composePermissionRuleComponentElements(element);
55053      composeElementClose(element);
55054      xml.exit(FHIR_NS, name);
55055    }
55056  }
55057
55058  protected void composePermissionRuleComponentElements(Permission.RuleComponent element) throws IOException {
55059    composeBackboneElementElements(element);
55060    if (element.hasTypeElement())
55061      composeEnumeration("type", element.getTypeElement(), new Enumerations.ConsentProvisionTypeEnumFactory());
55062    if (element.hasData()) { 
55063      for (Permission.RuleDataComponent e : element.getData()) 
55064          composePermissionRuleDataComponent("data", e);
55065    }
55066    if (element.hasActivity()) { 
55067      for (Permission.RuleActivityComponent e : element.getActivity()) 
55068          composePermissionRuleActivityComponent("activity", e);
55069    }
55070    if (element.hasLimit()) { 
55071      for (CodeableConcept e : element.getLimit()) 
55072          composeCodeableConcept("limit", e);
55073    }
55074  }
55075
55076  protected void composePermissionRuleDataComponent(String name, Permission.RuleDataComponent element) throws IOException {
55077    if (element != null) {
55078    composeElementAttributes(element);
55079      xml.enter(FHIR_NS, name);
55080      composePermissionRuleDataComponentElements(element);
55081      composeElementClose(element);
55082      xml.exit(FHIR_NS, name);
55083    }
55084  }
55085
55086  protected void composePermissionRuleDataComponentElements(Permission.RuleDataComponent element) throws IOException {
55087    composeBackboneElementElements(element);
55088    if (element.hasResource()) { 
55089      for (Permission.RuleDataResourceComponent e : element.getResource()) 
55090          composePermissionRuleDataResourceComponent("resource", e);
55091    }
55092    if (element.hasSecurity()) { 
55093      for (Coding e : element.getSecurity()) 
55094          composeCoding("security", e);
55095    }
55096    if (element.hasPeriod()) { 
55097      for (Period e : element.getPeriod()) 
55098          composePeriod("period", e);
55099    }
55100    if (element.hasExpression()) {
55101      composeExpression("expression", element.getExpression());
55102    }
55103  }
55104
55105  protected void composePermissionRuleDataResourceComponent(String name, Permission.RuleDataResourceComponent element) throws IOException {
55106    if (element != null) {
55107    composeElementAttributes(element);
55108      xml.enter(FHIR_NS, name);
55109      composePermissionRuleDataResourceComponentElements(element);
55110      composeElementClose(element);
55111      xml.exit(FHIR_NS, name);
55112    }
55113  }
55114
55115  protected void composePermissionRuleDataResourceComponentElements(Permission.RuleDataResourceComponent element) throws IOException {
55116    composeBackboneElementElements(element);
55117    if (element.hasMeaningElement())
55118      composeEnumeration("meaning", element.getMeaningElement(), new Enumerations.ConsentDataMeaningEnumFactory());
55119    if (element.hasReference()) {
55120      composeReference("reference", element.getReference());
55121    }
55122  }
55123
55124  protected void composePermissionRuleActivityComponent(String name, Permission.RuleActivityComponent element) throws IOException {
55125    if (element != null) {
55126    composeElementAttributes(element);
55127      xml.enter(FHIR_NS, name);
55128      composePermissionRuleActivityComponentElements(element);
55129      composeElementClose(element);
55130      xml.exit(FHIR_NS, name);
55131    }
55132  }
55133
55134  protected void composePermissionRuleActivityComponentElements(Permission.RuleActivityComponent element) throws IOException {
55135    composeBackboneElementElements(element);
55136    if (element.hasActor()) { 
55137      for (Reference e : element.getActor()) 
55138          composeReference("actor", e);
55139    }
55140    if (element.hasAction()) { 
55141      for (CodeableConcept e : element.getAction()) 
55142          composeCodeableConcept("action", e);
55143    }
55144    if (element.hasPurpose()) { 
55145      for (CodeableConcept e : element.getPurpose()) 
55146          composeCodeableConcept("purpose", e);
55147    }
55148  }
55149
55150  protected void composePerson(String name, Person element) throws IOException {
55151    if (element != null) {
55152    composeResourceAttributes(element);
55153      xml.enter(FHIR_NS, name);
55154      composePersonElements(element);
55155      composeElementClose(element);
55156      xml.exit(FHIR_NS, name);
55157    }
55158  }
55159
55160  protected void composePersonElements(Person element) throws IOException {
55161    composeDomainResourceElements(element);
55162    if (element.hasIdentifier()) { 
55163      for (Identifier e : element.getIdentifier()) 
55164          composeIdentifier("identifier", e);
55165    }
55166    if (element.hasActiveElement()) {
55167      composeBoolean("active", element.getActiveElement());
55168    }
55169    if (element.hasName()) { 
55170      for (HumanName e : element.getName()) 
55171          composeHumanName("name", e);
55172    }
55173    if (element.hasTelecom()) { 
55174      for (ContactPoint e : element.getTelecom()) 
55175          composeContactPoint("telecom", e);
55176    }
55177    if (element.hasGenderElement())
55178      composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
55179    if (element.hasBirthDateElement()) {
55180      composeDate("birthDate", element.getBirthDateElement());
55181    }
55182    if (element.hasDeceased()) {
55183      composeType("deceased", element.getDeceased());
55184    }    if (element.hasAddress()) { 
55185      for (Address e : element.getAddress()) 
55186          composeAddress("address", e);
55187    }
55188    if (element.hasMaritalStatus()) {
55189      composeCodeableConcept("maritalStatus", element.getMaritalStatus());
55190    }
55191    if (element.hasPhoto()) { 
55192      for (Attachment e : element.getPhoto()) 
55193          composeAttachment("photo", e);
55194    }
55195    if (element.hasCommunication()) { 
55196      for (Person.PersonCommunicationComponent e : element.getCommunication()) 
55197          composePersonCommunicationComponent("communication", e);
55198    }
55199    if (element.hasManagingOrganization()) {
55200      composeReference("managingOrganization", element.getManagingOrganization());
55201    }
55202    if (element.hasLink()) { 
55203      for (Person.PersonLinkComponent e : element.getLink()) 
55204          composePersonLinkComponent("link", e);
55205    }
55206  }
55207
55208  protected void composePersonCommunicationComponent(String name, Person.PersonCommunicationComponent element) throws IOException {
55209    if (element != null) {
55210    composeElementAttributes(element);
55211      xml.enter(FHIR_NS, name);
55212      composePersonCommunicationComponentElements(element);
55213      composeElementClose(element);
55214      xml.exit(FHIR_NS, name);
55215    }
55216  }
55217
55218  protected void composePersonCommunicationComponentElements(Person.PersonCommunicationComponent element) throws IOException {
55219    composeBackboneElementElements(element);
55220    if (element.hasLanguage()) {
55221      composeCodeableConcept("language", element.getLanguage());
55222    }
55223    if (element.hasPreferredElement()) {
55224      composeBoolean("preferred", element.getPreferredElement());
55225    }
55226  }
55227
55228  protected void composePersonLinkComponent(String name, Person.PersonLinkComponent element) throws IOException {
55229    if (element != null) {
55230    composeElementAttributes(element);
55231      xml.enter(FHIR_NS, name);
55232      composePersonLinkComponentElements(element);
55233      composeElementClose(element);
55234      xml.exit(FHIR_NS, name);
55235    }
55236  }
55237
55238  protected void composePersonLinkComponentElements(Person.PersonLinkComponent element) throws IOException {
55239    composeBackboneElementElements(element);
55240    if (element.hasTarget()) {
55241      composeReference("target", element.getTarget());
55242    }
55243    if (element.hasAssuranceElement())
55244      composeEnumeration("assurance", element.getAssuranceElement(), new Person.IdentityAssuranceLevelEnumFactory());
55245  }
55246
55247  protected void composePlanDefinition(String name, PlanDefinition element) throws IOException {
55248    if (element != null) {
55249    composeResourceAttributes(element);
55250      xml.enter(FHIR_NS, name);
55251      composePlanDefinitionElements(element);
55252      composeElementClose(element);
55253      xml.exit(FHIR_NS, name);
55254    }
55255  }
55256
55257  protected void composePlanDefinitionElements(PlanDefinition element) throws IOException {
55258    composeMetadataResourceElements(element);
55259    if (element.hasUrlElement()) {
55260      composeUri("url", element.getUrlElement());
55261    }
55262    if (element.hasIdentifier()) { 
55263      for (Identifier e : element.getIdentifier()) 
55264          composeIdentifier("identifier", e);
55265    }
55266    if (element.hasVersionElement()) {
55267      composeString("version", element.getVersionElement());
55268    }
55269    if (element.hasVersionAlgorithm()) {
55270      composeType("versionAlgorithm", element.getVersionAlgorithm());
55271    }    if (element.hasNameElement()) {
55272      composeString("name", element.getNameElement());
55273    }
55274    if (element.hasTitleElement()) {
55275      composeString("title", element.getTitleElement());
55276    }
55277    if (element.hasSubtitleElement()) {
55278      composeString("subtitle", element.getSubtitleElement());
55279    }
55280    if (element.hasType()) {
55281      composeCodeableConcept("type", element.getType());
55282    }
55283    if (element.hasStatusElement())
55284      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
55285    if (element.hasExperimentalElement()) {
55286      composeBoolean("experimental", element.getExperimentalElement());
55287    }
55288    if (element.hasSubject()) {
55289      composeType("subject", element.getSubject());
55290    }    if (element.hasDateElement()) {
55291      composeDateTime("date", element.getDateElement());
55292    }
55293    if (element.hasPublisherElement()) {
55294      composeString("publisher", element.getPublisherElement());
55295    }
55296    if (element.hasContact()) { 
55297      for (ContactDetail e : element.getContact()) 
55298          composeContactDetail("contact", e);
55299    }
55300    if (element.hasDescriptionElement()) {
55301      composeMarkdown("description", element.getDescriptionElement());
55302    }
55303    if (element.hasUseContext()) { 
55304      for (UsageContext e : element.getUseContext()) 
55305          composeUsageContext("useContext", e);
55306    }
55307    if (element.hasJurisdiction()) { 
55308      for (CodeableConcept e : element.getJurisdiction()) 
55309          composeCodeableConcept("jurisdiction", e);
55310    }
55311    if (element.hasPurposeElement()) {
55312      composeMarkdown("purpose", element.getPurposeElement());
55313    }
55314    if (element.hasUsageElement()) {
55315      composeMarkdown("usage", element.getUsageElement());
55316    }
55317    if (element.hasCopyrightElement()) {
55318      composeMarkdown("copyright", element.getCopyrightElement());
55319    }
55320    if (element.hasCopyrightLabelElement()) {
55321      composeString("copyrightLabel", element.getCopyrightLabelElement());
55322    }
55323    if (element.hasApprovalDateElement()) {
55324      composeDate("approvalDate", element.getApprovalDateElement());
55325    }
55326    if (element.hasLastReviewDateElement()) {
55327      composeDate("lastReviewDate", element.getLastReviewDateElement());
55328    }
55329    if (element.hasEffectivePeriod()) {
55330      composePeriod("effectivePeriod", element.getEffectivePeriod());
55331    }
55332    if (element.hasTopic()) { 
55333      for (CodeableConcept e : element.getTopic()) 
55334          composeCodeableConcept("topic", e);
55335    }
55336    if (element.hasAuthor()) { 
55337      for (ContactDetail e : element.getAuthor()) 
55338          composeContactDetail("author", e);
55339    }
55340    if (element.hasEditor()) { 
55341      for (ContactDetail e : element.getEditor()) 
55342          composeContactDetail("editor", e);
55343    }
55344    if (element.hasReviewer()) { 
55345      for (ContactDetail e : element.getReviewer()) 
55346          composeContactDetail("reviewer", e);
55347    }
55348    if (element.hasEndorser()) { 
55349      for (ContactDetail e : element.getEndorser()) 
55350          composeContactDetail("endorser", e);
55351    }
55352    if (element.hasRelatedArtifact()) { 
55353      for (RelatedArtifact e : element.getRelatedArtifact()) 
55354          composeRelatedArtifact("relatedArtifact", e);
55355    }
55356    if (element.hasLibrary()) { 
55357      for (CanonicalType e : element.getLibrary()) 
55358          composeCanonical("library", e);
55359    }
55360    if (element.hasGoal()) { 
55361      for (PlanDefinition.PlanDefinitionGoalComponent e : element.getGoal()) 
55362          composePlanDefinitionGoalComponent("goal", e);
55363    }
55364    if (element.hasActor()) { 
55365      for (PlanDefinition.PlanDefinitionActorComponent e : element.getActor()) 
55366          composePlanDefinitionActorComponent("actor", e);
55367    }
55368    if (element.hasAction()) { 
55369      for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
55370          composePlanDefinitionActionComponent("action", e);
55371    }
55372    if (element.hasAsNeeded()) {
55373      composeType("asNeeded", element.getAsNeeded());
55374    }  }
55375
55376  protected void composePlanDefinitionGoalComponent(String name, PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
55377    if (element != null) {
55378    composeElementAttributes(element);
55379      xml.enter(FHIR_NS, name);
55380      composePlanDefinitionGoalComponentElements(element);
55381      composeElementClose(element);
55382      xml.exit(FHIR_NS, name);
55383    }
55384  }
55385
55386  protected void composePlanDefinitionGoalComponentElements(PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
55387    composeBackboneElementElements(element);
55388    if (element.hasCategory()) {
55389      composeCodeableConcept("category", element.getCategory());
55390    }
55391    if (element.hasDescription()) {
55392      composeCodeableConcept("description", element.getDescription());
55393    }
55394    if (element.hasPriority()) {
55395      composeCodeableConcept("priority", element.getPriority());
55396    }
55397    if (element.hasStart()) {
55398      composeCodeableConcept("start", element.getStart());
55399    }
55400    if (element.hasAddresses()) { 
55401      for (CodeableConcept e : element.getAddresses()) 
55402          composeCodeableConcept("addresses", e);
55403    }
55404    if (element.hasDocumentation()) { 
55405      for (RelatedArtifact e : element.getDocumentation()) 
55406          composeRelatedArtifact("documentation", e);
55407    }
55408    if (element.hasTarget()) { 
55409      for (PlanDefinition.PlanDefinitionGoalTargetComponent e : element.getTarget()) 
55410          composePlanDefinitionGoalTargetComponent("target", e);
55411    }
55412  }
55413
55414  protected void composePlanDefinitionGoalTargetComponent(String name, PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
55415    if (element != null) {
55416    composeElementAttributes(element);
55417      xml.enter(FHIR_NS, name);
55418      composePlanDefinitionGoalTargetComponentElements(element);
55419      composeElementClose(element);
55420      xml.exit(FHIR_NS, name);
55421    }
55422  }
55423
55424  protected void composePlanDefinitionGoalTargetComponentElements(PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
55425    composeBackboneElementElements(element);
55426    if (element.hasMeasure()) {
55427      composeCodeableConcept("measure", element.getMeasure());
55428    }
55429    if (element.hasDetail()) {
55430      composeType("detail", element.getDetail());
55431    }    if (element.hasDue()) {
55432      composeDuration("due", element.getDue());
55433    }
55434  }
55435
55436  protected void composePlanDefinitionActorComponent(String name, PlanDefinition.PlanDefinitionActorComponent element) throws IOException {
55437    if (element != null) {
55438    composeElementAttributes(element);
55439      xml.enter(FHIR_NS, name);
55440      composePlanDefinitionActorComponentElements(element);
55441      composeElementClose(element);
55442      xml.exit(FHIR_NS, name);
55443    }
55444  }
55445
55446  protected void composePlanDefinitionActorComponentElements(PlanDefinition.PlanDefinitionActorComponent element) throws IOException {
55447    composeBackboneElementElements(element);
55448    if (element.hasTitleElement()) {
55449      composeString("title", element.getTitleElement());
55450    }
55451    if (element.hasDescriptionElement()) {
55452      composeMarkdown("description", element.getDescriptionElement());
55453    }
55454    if (element.hasOption()) { 
55455      for (PlanDefinition.PlanDefinitionActorOptionComponent e : element.getOption()) 
55456          composePlanDefinitionActorOptionComponent("option", e);
55457    }
55458  }
55459
55460  protected void composePlanDefinitionActorOptionComponent(String name, PlanDefinition.PlanDefinitionActorOptionComponent element) throws IOException {
55461    if (element != null) {
55462    composeElementAttributes(element);
55463      xml.enter(FHIR_NS, name);
55464      composePlanDefinitionActorOptionComponentElements(element);
55465      composeElementClose(element);
55466      xml.exit(FHIR_NS, name);
55467    }
55468  }
55469
55470  protected void composePlanDefinitionActorOptionComponentElements(PlanDefinition.PlanDefinitionActorOptionComponent element) throws IOException {
55471    composeBackboneElementElements(element);
55472    if (element.hasTypeElement())
55473      composeEnumeration("type", element.getTypeElement(), new Enumerations.ActionParticipantTypeEnumFactory());
55474    if (element.hasTypeCanonicalElement()) {
55475      composeCanonical("typeCanonical", element.getTypeCanonicalElement());
55476    }
55477    if (element.hasTypeReference()) {
55478      composeReference("typeReference", element.getTypeReference());
55479    }
55480    if (element.hasRole()) {
55481      composeCodeableConcept("role", element.getRole());
55482    }
55483  }
55484
55485  protected void composePlanDefinitionActionComponent(String name, PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
55486    if (element != null) {
55487    composeElementAttributes(element);
55488      xml.enter(FHIR_NS, name);
55489      composePlanDefinitionActionComponentElements(element);
55490      composeElementClose(element);
55491      xml.exit(FHIR_NS, name);
55492    }
55493  }
55494
55495  protected void composePlanDefinitionActionComponentElements(PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
55496    composeBackboneElementElements(element);
55497    if (element.hasLinkIdElement()) {
55498      composeString("linkId", element.getLinkIdElement());
55499    }
55500    if (element.hasPrefixElement()) {
55501      composeString("prefix", element.getPrefixElement());
55502    }
55503    if (element.hasTitleElement()) {
55504      composeString("title", element.getTitleElement());
55505    }
55506    if (element.hasDescriptionElement()) {
55507      composeMarkdown("description", element.getDescriptionElement());
55508    }
55509    if (element.hasTextEquivalentElement()) {
55510      composeMarkdown("textEquivalent", element.getTextEquivalentElement());
55511    }
55512    if (element.hasPriorityElement())
55513      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
55514    if (element.hasCode()) {
55515      composeCodeableConcept("code", element.getCode());
55516    }
55517    if (element.hasReason()) { 
55518      for (CodeableConcept e : element.getReason()) 
55519          composeCodeableConcept("reason", e);
55520    }
55521    if (element.hasDocumentation()) { 
55522      for (RelatedArtifact e : element.getDocumentation()) 
55523          composeRelatedArtifact("documentation", e);
55524    }
55525    if (element.hasGoalId()) { 
55526      for (IdType e : element.getGoalId()) 
55527          composeId("goalId", e);
55528    }
55529    if (element.hasSubject()) {
55530      composeType("subject", element.getSubject());
55531    }    if (element.hasTrigger()) { 
55532      for (TriggerDefinition e : element.getTrigger()) 
55533          composeTriggerDefinition("trigger", e);
55534    }
55535    if (element.hasCondition()) { 
55536      for (PlanDefinition.PlanDefinitionActionConditionComponent e : element.getCondition()) 
55537          composePlanDefinitionActionConditionComponent("condition", e);
55538    }
55539    if (element.hasInput()) { 
55540      for (PlanDefinition.PlanDefinitionActionInputComponent e : element.getInput()) 
55541          composePlanDefinitionActionInputComponent("input", e);
55542    }
55543    if (element.hasOutput()) { 
55544      for (PlanDefinition.PlanDefinitionActionOutputComponent e : element.getOutput()) 
55545          composePlanDefinitionActionOutputComponent("output", e);
55546    }
55547    if (element.hasRelatedAction()) { 
55548      for (PlanDefinition.PlanDefinitionActionRelatedActionComponent e : element.getRelatedAction()) 
55549          composePlanDefinitionActionRelatedActionComponent("relatedAction", e);
55550    }
55551    if (element.hasTiming()) {
55552      composeType("timing", element.getTiming());
55553    }    if (element.hasLocation()) {
55554      composeCodeableReference("location", element.getLocation());
55555    }
55556    if (element.hasParticipant()) { 
55557      for (PlanDefinition.PlanDefinitionActionParticipantComponent e : element.getParticipant()) 
55558          composePlanDefinitionActionParticipantComponent("participant", e);
55559    }
55560    if (element.hasType()) {
55561      composeCodeableConcept("type", element.getType());
55562    }
55563    if (element.hasGroupingBehaviorElement())
55564      composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new Enumerations.ActionGroupingBehaviorEnumFactory());
55565    if (element.hasSelectionBehaviorElement())
55566      composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new Enumerations.ActionSelectionBehaviorEnumFactory());
55567    if (element.hasRequiredBehaviorElement())
55568      composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new Enumerations.ActionRequiredBehaviorEnumFactory());
55569    if (element.hasPrecheckBehaviorElement())
55570      composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new Enumerations.ActionPrecheckBehaviorEnumFactory());
55571    if (element.hasCardinalityBehaviorElement())
55572      composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new Enumerations.ActionCardinalityBehaviorEnumFactory());
55573    if (element.hasDefinition()) {
55574      composeType("definition", element.getDefinition());
55575    }    if (element.hasTransformElement()) {
55576      composeCanonical("transform", element.getTransformElement());
55577    }
55578    if (element.hasDynamicValue()) { 
55579      for (PlanDefinition.PlanDefinitionActionDynamicValueComponent e : element.getDynamicValue()) 
55580          composePlanDefinitionActionDynamicValueComponent("dynamicValue", e);
55581    }
55582    if (element.hasAction()) { 
55583      for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
55584          composePlanDefinitionActionComponent("action", e);
55585    }
55586  }
55587
55588  protected void composePlanDefinitionActionConditionComponent(String name, PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
55589    if (element != null) {
55590    composeElementAttributes(element);
55591      xml.enter(FHIR_NS, name);
55592      composePlanDefinitionActionConditionComponentElements(element);
55593      composeElementClose(element);
55594      xml.exit(FHIR_NS, name);
55595    }
55596  }
55597
55598  protected void composePlanDefinitionActionConditionComponentElements(PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
55599    composeBackboneElementElements(element);
55600    if (element.hasKindElement())
55601      composeEnumeration("kind", element.getKindElement(), new Enumerations.ActionConditionKindEnumFactory());
55602    if (element.hasExpression()) {
55603      composeExpression("expression", element.getExpression());
55604    }
55605  }
55606
55607  protected void composePlanDefinitionActionInputComponent(String name, PlanDefinition.PlanDefinitionActionInputComponent element) throws IOException {
55608    if (element != null) {
55609    composeElementAttributes(element);
55610      xml.enter(FHIR_NS, name);
55611      composePlanDefinitionActionInputComponentElements(element);
55612      composeElementClose(element);
55613      xml.exit(FHIR_NS, name);
55614    }
55615  }
55616
55617  protected void composePlanDefinitionActionInputComponentElements(PlanDefinition.PlanDefinitionActionInputComponent element) throws IOException {
55618    composeBackboneElementElements(element);
55619    if (element.hasTitleElement()) {
55620      composeString("title", element.getTitleElement());
55621    }
55622    if (element.hasRequirement()) {
55623      composeDataRequirement("requirement", element.getRequirement());
55624    }
55625    if (element.hasRelatedDataElement()) {
55626      composeId("relatedData", element.getRelatedDataElement());
55627    }
55628  }
55629
55630  protected void composePlanDefinitionActionOutputComponent(String name, PlanDefinition.PlanDefinitionActionOutputComponent element) throws IOException {
55631    if (element != null) {
55632    composeElementAttributes(element);
55633      xml.enter(FHIR_NS, name);
55634      composePlanDefinitionActionOutputComponentElements(element);
55635      composeElementClose(element);
55636      xml.exit(FHIR_NS, name);
55637    }
55638  }
55639
55640  protected void composePlanDefinitionActionOutputComponentElements(PlanDefinition.PlanDefinitionActionOutputComponent element) throws IOException {
55641    composeBackboneElementElements(element);
55642    if (element.hasTitleElement()) {
55643      composeString("title", element.getTitleElement());
55644    }
55645    if (element.hasRequirement()) {
55646      composeDataRequirement("requirement", element.getRequirement());
55647    }
55648    if (element.hasRelatedDataElement()) {
55649      composeString("relatedData", element.getRelatedDataElement());
55650    }
55651  }
55652
55653  protected void composePlanDefinitionActionRelatedActionComponent(String name, PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
55654    if (element != null) {
55655    composeElementAttributes(element);
55656      xml.enter(FHIR_NS, name);
55657      composePlanDefinitionActionRelatedActionComponentElements(element);
55658      composeElementClose(element);
55659      xml.exit(FHIR_NS, name);
55660    }
55661  }
55662
55663  protected void composePlanDefinitionActionRelatedActionComponentElements(PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
55664    composeBackboneElementElements(element);
55665    if (element.hasTargetIdElement()) {
55666      composeId("targetId", element.getTargetIdElement());
55667    }
55668    if (element.hasRelationshipElement())
55669      composeEnumeration("relationship", element.getRelationshipElement(), new Enumerations.ActionRelationshipTypeEnumFactory());
55670    if (element.hasEndRelationshipElement())
55671      composeEnumeration("endRelationship", element.getEndRelationshipElement(), new Enumerations.ActionRelationshipTypeEnumFactory());
55672    if (element.hasOffset()) {
55673      composeType("offset", element.getOffset());
55674    }  }
55675
55676  protected void composePlanDefinitionActionParticipantComponent(String name, PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
55677    if (element != null) {
55678    composeElementAttributes(element);
55679      xml.enter(FHIR_NS, name);
55680      composePlanDefinitionActionParticipantComponentElements(element);
55681      composeElementClose(element);
55682      xml.exit(FHIR_NS, name);
55683    }
55684  }
55685
55686  protected void composePlanDefinitionActionParticipantComponentElements(PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
55687    composeBackboneElementElements(element);
55688    if (element.hasActorIdElement()) {
55689      composeString("actorId", element.getActorIdElement());
55690    }
55691    if (element.hasTypeElement())
55692      composeEnumeration("type", element.getTypeElement(), new Enumerations.ActionParticipantTypeEnumFactory());
55693    if (element.hasTypeCanonicalElement()) {
55694      composeCanonical("typeCanonical", element.getTypeCanonicalElement());
55695    }
55696    if (element.hasTypeReference()) {
55697      composeReference("typeReference", element.getTypeReference());
55698    }
55699    if (element.hasRole()) {
55700      composeCodeableConcept("role", element.getRole());
55701    }
55702    if (element.hasFunction()) {
55703      composeCodeableConcept("function", element.getFunction());
55704    }
55705  }
55706
55707  protected void composePlanDefinitionActionDynamicValueComponent(String name, PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
55708    if (element != null) {
55709    composeElementAttributes(element);
55710      xml.enter(FHIR_NS, name);
55711      composePlanDefinitionActionDynamicValueComponentElements(element);
55712      composeElementClose(element);
55713      xml.exit(FHIR_NS, name);
55714    }
55715  }
55716
55717  protected void composePlanDefinitionActionDynamicValueComponentElements(PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
55718    composeBackboneElementElements(element);
55719    if (element.hasPathElement()) {
55720      composeString("path", element.getPathElement());
55721    }
55722    if (element.hasExpression()) {
55723      composeExpression("expression", element.getExpression());
55724    }
55725  }
55726
55727  protected void composePractitioner(String name, Practitioner element) throws IOException {
55728    if (element != null) {
55729    composeResourceAttributes(element);
55730      xml.enter(FHIR_NS, name);
55731      composePractitionerElements(element);
55732      composeElementClose(element);
55733      xml.exit(FHIR_NS, name);
55734    }
55735  }
55736
55737  protected void composePractitionerElements(Practitioner element) throws IOException {
55738    composeDomainResourceElements(element);
55739    if (element.hasIdentifier()) { 
55740      for (Identifier e : element.getIdentifier()) 
55741          composeIdentifier("identifier", e);
55742    }
55743    if (element.hasActiveElement()) {
55744      composeBoolean("active", element.getActiveElement());
55745    }
55746    if (element.hasName()) { 
55747      for (HumanName e : element.getName()) 
55748          composeHumanName("name", e);
55749    }
55750    if (element.hasTelecom()) { 
55751      for (ContactPoint e : element.getTelecom()) 
55752          composeContactPoint("telecom", e);
55753    }
55754    if (element.hasGenderElement())
55755      composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
55756    if (element.hasBirthDateElement()) {
55757      composeDate("birthDate", element.getBirthDateElement());
55758    }
55759    if (element.hasDeceased()) {
55760      composeType("deceased", element.getDeceased());
55761    }    if (element.hasAddress()) { 
55762      for (Address e : element.getAddress()) 
55763          composeAddress("address", e);
55764    }
55765    if (element.hasPhoto()) { 
55766      for (Attachment e : element.getPhoto()) 
55767          composeAttachment("photo", e);
55768    }
55769    if (element.hasQualification()) { 
55770      for (Practitioner.PractitionerQualificationComponent e : element.getQualification()) 
55771          composePractitionerQualificationComponent("qualification", e);
55772    }
55773    if (element.hasCommunication()) { 
55774      for (Practitioner.PractitionerCommunicationComponent e : element.getCommunication()) 
55775          composePractitionerCommunicationComponent("communication", e);
55776    }
55777  }
55778
55779  protected void composePractitionerQualificationComponent(String name, Practitioner.PractitionerQualificationComponent element) throws IOException {
55780    if (element != null) {
55781    composeElementAttributes(element);
55782      xml.enter(FHIR_NS, name);
55783      composePractitionerQualificationComponentElements(element);
55784      composeElementClose(element);
55785      xml.exit(FHIR_NS, name);
55786    }
55787  }
55788
55789  protected void composePractitionerQualificationComponentElements(Practitioner.PractitionerQualificationComponent element) throws IOException {
55790    composeBackboneElementElements(element);
55791    if (element.hasIdentifier()) { 
55792      for (Identifier e : element.getIdentifier()) 
55793          composeIdentifier("identifier", e);
55794    }
55795    if (element.hasCode()) {
55796      composeCodeableConcept("code", element.getCode());
55797    }
55798    if (element.hasPeriod()) {
55799      composePeriod("period", element.getPeriod());
55800    }
55801    if (element.hasIssuer()) {
55802      composeReference("issuer", element.getIssuer());
55803    }
55804  }
55805
55806  protected void composePractitionerCommunicationComponent(String name, Practitioner.PractitionerCommunicationComponent element) throws IOException {
55807    if (element != null) {
55808    composeElementAttributes(element);
55809      xml.enter(FHIR_NS, name);
55810      composePractitionerCommunicationComponentElements(element);
55811      composeElementClose(element);
55812      xml.exit(FHIR_NS, name);
55813    }
55814  }
55815
55816  protected void composePractitionerCommunicationComponentElements(Practitioner.PractitionerCommunicationComponent element) throws IOException {
55817    composeBackboneElementElements(element);
55818    if (element.hasLanguage()) {
55819      composeCodeableConcept("language", element.getLanguage());
55820    }
55821    if (element.hasPreferredElement()) {
55822      composeBoolean("preferred", element.getPreferredElement());
55823    }
55824  }
55825
55826  protected void composePractitionerRole(String name, PractitionerRole element) throws IOException {
55827    if (element != null) {
55828    composeResourceAttributes(element);
55829      xml.enter(FHIR_NS, name);
55830      composePractitionerRoleElements(element);
55831      composeElementClose(element);
55832      xml.exit(FHIR_NS, name);
55833    }
55834  }
55835
55836  protected void composePractitionerRoleElements(PractitionerRole element) throws IOException {
55837    composeDomainResourceElements(element);
55838    if (element.hasIdentifier()) { 
55839      for (Identifier e : element.getIdentifier()) 
55840          composeIdentifier("identifier", e);
55841    }
55842    if (element.hasActiveElement()) {
55843      composeBoolean("active", element.getActiveElement());
55844    }
55845    if (element.hasPeriod()) {
55846      composePeriod("period", element.getPeriod());
55847    }
55848    if (element.hasPractitioner()) {
55849      composeReference("practitioner", element.getPractitioner());
55850    }
55851    if (element.hasOrganization()) {
55852      composeReference("organization", element.getOrganization());
55853    }
55854    if (element.hasCode()) { 
55855      for (CodeableConcept e : element.getCode()) 
55856          composeCodeableConcept("code", e);
55857    }
55858    if (element.hasSpecialty()) { 
55859      for (CodeableConcept e : element.getSpecialty()) 
55860          composeCodeableConcept("specialty", e);
55861    }
55862    if (element.hasLocation()) { 
55863      for (Reference e : element.getLocation()) 
55864          composeReference("location", e);
55865    }
55866    if (element.hasHealthcareService()) { 
55867      for (Reference e : element.getHealthcareService()) 
55868          composeReference("healthcareService", e);
55869    }
55870    if (element.hasContact()) { 
55871      for (ExtendedContactDetail e : element.getContact()) 
55872          composeExtendedContactDetail("contact", e);
55873    }
55874    if (element.hasCharacteristic()) { 
55875      for (CodeableConcept e : element.getCharacteristic()) 
55876          composeCodeableConcept("characteristic", e);
55877    }
55878    if (element.hasCommunication()) { 
55879      for (CodeableConcept e : element.getCommunication()) 
55880          composeCodeableConcept("communication", e);
55881    }
55882    if (element.hasAvailability()) { 
55883      for (Availability e : element.getAvailability()) 
55884          composeAvailability("availability", e);
55885    }
55886    if (element.hasEndpoint()) { 
55887      for (Reference e : element.getEndpoint()) 
55888          composeReference("endpoint", e);
55889    }
55890  }
55891
55892  protected void composeProcedure(String name, Procedure element) throws IOException {
55893    if (element != null) {
55894    composeResourceAttributes(element);
55895      xml.enter(FHIR_NS, name);
55896      composeProcedureElements(element);
55897      composeElementClose(element);
55898      xml.exit(FHIR_NS, name);
55899    }
55900  }
55901
55902  protected void composeProcedureElements(Procedure element) throws IOException {
55903    composeDomainResourceElements(element);
55904    if (element.hasIdentifier()) { 
55905      for (Identifier e : element.getIdentifier()) 
55906          composeIdentifier("identifier", e);
55907    }
55908    if (element.hasInstantiatesCanonical()) { 
55909      for (CanonicalType e : element.getInstantiatesCanonical()) 
55910          composeCanonical("instantiatesCanonical", e);
55911    }
55912    if (element.hasInstantiatesUri()) { 
55913      for (UriType e : element.getInstantiatesUri()) 
55914          composeUri("instantiatesUri", e);
55915    }
55916    if (element.hasBasedOn()) { 
55917      for (Reference e : element.getBasedOn()) 
55918          composeReference("basedOn", e);
55919    }
55920    if (element.hasPartOf()) { 
55921      for (Reference e : element.getPartOf()) 
55922          composeReference("partOf", e);
55923    }
55924    if (element.hasStatusElement())
55925      composeEnumeration("status", element.getStatusElement(), new Enumerations.EventStatusEnumFactory());
55926    if (element.hasStatusReason()) {
55927      composeCodeableConcept("statusReason", element.getStatusReason());
55928    }
55929    if (element.hasCategory()) { 
55930      for (CodeableConcept e : element.getCategory()) 
55931          composeCodeableConcept("category", e);
55932    }
55933    if (element.hasCode()) {
55934      composeCodeableConcept("code", element.getCode());
55935    }
55936    if (element.hasSubject()) {
55937      composeReference("subject", element.getSubject());
55938    }
55939    if (element.hasFocus()) {
55940      composeReference("focus", element.getFocus());
55941    }
55942    if (element.hasEncounter()) {
55943      composeReference("encounter", element.getEncounter());
55944    }
55945    if (element.hasOccurrence()) {
55946      composeType("occurrence", element.getOccurrence());
55947    }    if (element.hasRecordedElement()) {
55948      composeDateTime("recorded", element.getRecordedElement());
55949    }
55950    if (element.hasRecorder()) {
55951      composeReference("recorder", element.getRecorder());
55952    }
55953    if (element.hasReported()) {
55954      composeType("reported", element.getReported());
55955    }    if (element.hasPerformer()) { 
55956      for (Procedure.ProcedurePerformerComponent e : element.getPerformer()) 
55957          composeProcedurePerformerComponent("performer", e);
55958    }
55959    if (element.hasLocation()) {
55960      composeReference("location", element.getLocation());
55961    }
55962    if (element.hasReason()) { 
55963      for (CodeableReference e : element.getReason()) 
55964          composeCodeableReference("reason", e);
55965    }
55966    if (element.hasBodySite()) { 
55967      for (CodeableConcept e : element.getBodySite()) 
55968          composeCodeableConcept("bodySite", e);
55969    }
55970    if (element.hasOutcome()) {
55971      composeCodeableConcept("outcome", element.getOutcome());
55972    }
55973    if (element.hasReport()) { 
55974      for (Reference e : element.getReport()) 
55975          composeReference("report", e);
55976    }
55977    if (element.hasComplication()) { 
55978      for (CodeableReference e : element.getComplication()) 
55979          composeCodeableReference("complication", e);
55980    }
55981    if (element.hasFollowUp()) { 
55982      for (CodeableConcept e : element.getFollowUp()) 
55983          composeCodeableConcept("followUp", e);
55984    }
55985    if (element.hasNote()) { 
55986      for (Annotation e : element.getNote()) 
55987          composeAnnotation("note", e);
55988    }
55989    if (element.hasFocalDevice()) { 
55990      for (Procedure.ProcedureFocalDeviceComponent e : element.getFocalDevice()) 
55991          composeProcedureFocalDeviceComponent("focalDevice", e);
55992    }
55993    if (element.hasUsed()) { 
55994      for (CodeableReference e : element.getUsed()) 
55995          composeCodeableReference("used", e);
55996    }
55997    if (element.hasSupportingInfo()) { 
55998      for (Reference e : element.getSupportingInfo()) 
55999          composeReference("supportingInfo", e);
56000    }
56001  }
56002
56003  protected void composeProcedurePerformerComponent(String name, Procedure.ProcedurePerformerComponent element) throws IOException {
56004    if (element != null) {
56005    composeElementAttributes(element);
56006      xml.enter(FHIR_NS, name);
56007      composeProcedurePerformerComponentElements(element);
56008      composeElementClose(element);
56009      xml.exit(FHIR_NS, name);
56010    }
56011  }
56012
56013  protected void composeProcedurePerformerComponentElements(Procedure.ProcedurePerformerComponent element) throws IOException {
56014    composeBackboneElementElements(element);
56015    if (element.hasFunction()) {
56016      composeCodeableConcept("function", element.getFunction());
56017    }
56018    if (element.hasActor()) {
56019      composeReference("actor", element.getActor());
56020    }
56021    if (element.hasOnBehalfOf()) {
56022      composeReference("onBehalfOf", element.getOnBehalfOf());
56023    }
56024    if (element.hasPeriod()) {
56025      composePeriod("period", element.getPeriod());
56026    }
56027  }
56028
56029  protected void composeProcedureFocalDeviceComponent(String name, Procedure.ProcedureFocalDeviceComponent element) throws IOException {
56030    if (element != null) {
56031    composeElementAttributes(element);
56032      xml.enter(FHIR_NS, name);
56033      composeProcedureFocalDeviceComponentElements(element);
56034      composeElementClose(element);
56035      xml.exit(FHIR_NS, name);
56036    }
56037  }
56038
56039  protected void composeProcedureFocalDeviceComponentElements(Procedure.ProcedureFocalDeviceComponent element) throws IOException {
56040    composeBackboneElementElements(element);
56041    if (element.hasAction()) {
56042      composeCodeableConcept("action", element.getAction());
56043    }
56044    if (element.hasManipulated()) {
56045      composeReference("manipulated", element.getManipulated());
56046    }
56047  }
56048
56049  protected void composeProvenance(String name, Provenance element) throws IOException {
56050    if (element != null) {
56051    composeResourceAttributes(element);
56052      xml.enter(FHIR_NS, name);
56053      composeProvenanceElements(element);
56054      composeElementClose(element);
56055      xml.exit(FHIR_NS, name);
56056    }
56057  }
56058
56059  protected void composeProvenanceElements(Provenance element) throws IOException {
56060    composeDomainResourceElements(element);
56061    if (element.hasTarget()) { 
56062      for (Reference e : element.getTarget()) 
56063          composeReference("target", e);
56064    }
56065    if (element.hasOccurred()) {
56066      composeType("occurred", element.getOccurred());
56067    }    if (element.hasRecordedElement()) {
56068      composeInstant("recorded", element.getRecordedElement());
56069    }
56070    if (element.hasPolicy()) { 
56071      for (UriType e : element.getPolicy()) 
56072          composeUri("policy", e);
56073    }
56074    if (element.hasLocation()) {
56075      composeReference("location", element.getLocation());
56076    }
56077    if (element.hasAuthorization()) { 
56078      for (CodeableReference e : element.getAuthorization()) 
56079          composeCodeableReference("authorization", e);
56080    }
56081    if (element.hasActivity()) {
56082      composeCodeableConcept("activity", element.getActivity());
56083    }
56084    if (element.hasBasedOn()) { 
56085      for (Reference e : element.getBasedOn()) 
56086          composeReference("basedOn", e);
56087    }
56088    if (element.hasPatient()) {
56089      composeReference("patient", element.getPatient());
56090    }
56091    if (element.hasEncounter()) {
56092      composeReference("encounter", element.getEncounter());
56093    }
56094    if (element.hasAgent()) { 
56095      for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
56096          composeProvenanceAgentComponent("agent", e);
56097    }
56098    if (element.hasEntity()) { 
56099      for (Provenance.ProvenanceEntityComponent e : element.getEntity()) 
56100          composeProvenanceEntityComponent("entity", e);
56101    }
56102    if (element.hasSignature()) { 
56103      for (Signature e : element.getSignature()) 
56104          composeSignature("signature", e);
56105    }
56106  }
56107
56108  protected void composeProvenanceAgentComponent(String name, Provenance.ProvenanceAgentComponent element) throws IOException {
56109    if (element != null) {
56110    composeElementAttributes(element);
56111      xml.enter(FHIR_NS, name);
56112      composeProvenanceAgentComponentElements(element);
56113      composeElementClose(element);
56114      xml.exit(FHIR_NS, name);
56115    }
56116  }
56117
56118  protected void composeProvenanceAgentComponentElements(Provenance.ProvenanceAgentComponent element) throws IOException {
56119    composeBackboneElementElements(element);
56120    if (element.hasType()) {
56121      composeCodeableConcept("type", element.getType());
56122    }
56123    if (element.hasRole()) { 
56124      for (CodeableConcept e : element.getRole()) 
56125          composeCodeableConcept("role", e);
56126    }
56127    if (element.hasWho()) {
56128      composeReference("who", element.getWho());
56129    }
56130    if (element.hasOnBehalfOf()) {
56131      composeReference("onBehalfOf", element.getOnBehalfOf());
56132    }
56133  }
56134
56135  protected void composeProvenanceEntityComponent(String name, Provenance.ProvenanceEntityComponent element) throws IOException {
56136    if (element != null) {
56137    composeElementAttributes(element);
56138      xml.enter(FHIR_NS, name);
56139      composeProvenanceEntityComponentElements(element);
56140      composeElementClose(element);
56141      xml.exit(FHIR_NS, name);
56142    }
56143  }
56144
56145  protected void composeProvenanceEntityComponentElements(Provenance.ProvenanceEntityComponent element) throws IOException {
56146    composeBackboneElementElements(element);
56147    if (element.hasRoleElement())
56148      composeEnumeration("role", element.getRoleElement(), new Provenance.ProvenanceEntityRoleEnumFactory());
56149    if (element.hasWhat()) {
56150      composeReference("what", element.getWhat());
56151    }
56152    if (element.hasAgent()) { 
56153      for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
56154          composeProvenanceAgentComponent("agent", e);
56155    }
56156  }
56157
56158  protected void composeQuestionnaire(String name, Questionnaire element) throws IOException {
56159    if (element != null) {
56160    composeResourceAttributes(element);
56161      xml.enter(FHIR_NS, name);
56162      composeQuestionnaireElements(element);
56163      composeElementClose(element);
56164      xml.exit(FHIR_NS, name);
56165    }
56166  }
56167
56168  protected void composeQuestionnaireElements(Questionnaire element) throws IOException {
56169    composeMetadataResourceElements(element);
56170    if (element.hasUrlElement()) {
56171      composeUri("url", element.getUrlElement());
56172    }
56173    if (element.hasIdentifier()) { 
56174      for (Identifier e : element.getIdentifier()) 
56175          composeIdentifier("identifier", e);
56176    }
56177    if (element.hasVersionElement()) {
56178      composeString("version", element.getVersionElement());
56179    }
56180    if (element.hasVersionAlgorithm()) {
56181      composeType("versionAlgorithm", element.getVersionAlgorithm());
56182    }    if (element.hasNameElement()) {
56183      composeString("name", element.getNameElement());
56184    }
56185    if (element.hasTitleElement()) {
56186      composeString("title", element.getTitleElement());
56187    }
56188    if (element.hasDerivedFrom()) { 
56189      for (CanonicalType e : element.getDerivedFrom()) 
56190          composeCanonical("derivedFrom", e);
56191    }
56192    if (element.hasStatusElement())
56193      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
56194    if (element.hasExperimentalElement()) {
56195      composeBoolean("experimental", element.getExperimentalElement());
56196    }
56197    if (element.hasSubjectType()) { 
56198      for (CodeType e : element.getSubjectType()) 
56199          composeCode("subjectType", e);
56200    }
56201    if (element.hasDateElement()) {
56202      composeDateTime("date", element.getDateElement());
56203    }
56204    if (element.hasPublisherElement()) {
56205      composeString("publisher", element.getPublisherElement());
56206    }
56207    if (element.hasContact()) { 
56208      for (ContactDetail e : element.getContact()) 
56209          composeContactDetail("contact", e);
56210    }
56211    if (element.hasDescriptionElement()) {
56212      composeMarkdown("description", element.getDescriptionElement());
56213    }
56214    if (element.hasUseContext()) { 
56215      for (UsageContext e : element.getUseContext()) 
56216          composeUsageContext("useContext", e);
56217    }
56218    if (element.hasJurisdiction()) { 
56219      for (CodeableConcept e : element.getJurisdiction()) 
56220          composeCodeableConcept("jurisdiction", e);
56221    }
56222    if (element.hasPurposeElement()) {
56223      composeMarkdown("purpose", element.getPurposeElement());
56224    }
56225    if (element.hasCopyrightElement()) {
56226      composeMarkdown("copyright", element.getCopyrightElement());
56227    }
56228    if (element.hasCopyrightLabelElement()) {
56229      composeString("copyrightLabel", element.getCopyrightLabelElement());
56230    }
56231    if (element.hasApprovalDateElement()) {
56232      composeDate("approvalDate", element.getApprovalDateElement());
56233    }
56234    if (element.hasLastReviewDateElement()) {
56235      composeDate("lastReviewDate", element.getLastReviewDateElement());
56236    }
56237    if (element.hasEffectivePeriod()) {
56238      composePeriod("effectivePeriod", element.getEffectivePeriod());
56239    }
56240    if (element.hasCode()) { 
56241      for (Coding e : element.getCode()) 
56242          composeCoding("code", e);
56243    }
56244    if (element.hasItem()) { 
56245      for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
56246          composeQuestionnaireItemComponent("item", e);
56247    }
56248  }
56249
56250  protected void composeQuestionnaireItemComponent(String name, Questionnaire.QuestionnaireItemComponent element) throws IOException {
56251    if (element != null) {
56252    composeElementAttributes(element);
56253      xml.enter(FHIR_NS, name);
56254      composeQuestionnaireItemComponentElements(element);
56255      composeElementClose(element);
56256      xml.exit(FHIR_NS, name);
56257    }
56258  }
56259
56260  protected void composeQuestionnaireItemComponentElements(Questionnaire.QuestionnaireItemComponent element) throws IOException {
56261    composeBackboneElementElements(element);
56262    if (element.hasLinkIdElement()) {
56263      composeString("linkId", element.getLinkIdElement());
56264    }
56265    if (element.hasDefinitionElement()) {
56266      composeUri("definition", element.getDefinitionElement());
56267    }
56268    if (element.hasCode()) { 
56269      for (Coding e : element.getCode()) 
56270          composeCoding("code", e);
56271    }
56272    if (element.hasPrefixElement()) {
56273      composeString("prefix", element.getPrefixElement());
56274    }
56275    if (element.hasTextElement()) {
56276      composeString("text", element.getTextElement());
56277    }
56278    if (element.hasTypeElement())
56279      composeEnumeration("type", element.getTypeElement(), new Questionnaire.QuestionnaireItemTypeEnumFactory());
56280    if (element.hasEnableWhen()) { 
56281      for (Questionnaire.QuestionnaireItemEnableWhenComponent e : element.getEnableWhen()) 
56282          composeQuestionnaireItemEnableWhenComponent("enableWhen", e);
56283    }
56284    if (element.hasEnableBehaviorElement())
56285      composeEnumeration("enableBehavior", element.getEnableBehaviorElement(), new Questionnaire.EnableWhenBehaviorEnumFactory());
56286    if (element.hasDisabledDisplayElement())
56287      composeEnumeration("disabledDisplay", element.getDisabledDisplayElement(), new Questionnaire.QuestionnaireItemDisabledDisplayEnumFactory());
56288    if (element.hasRequiredElement()) {
56289      composeBoolean("required", element.getRequiredElement());
56290    }
56291    if (element.hasRepeatsElement()) {
56292      composeBoolean("repeats", element.getRepeatsElement());
56293    }
56294    if (element.hasReadOnlyElement()) {
56295      composeBoolean("readOnly", element.getReadOnlyElement());
56296    }
56297    if (element.hasMaxLengthElement()) {
56298      composeInteger("maxLength", element.getMaxLengthElement());
56299    }
56300    if (element.hasAnswerConstraintElement())
56301      composeEnumeration("answerConstraint", element.getAnswerConstraintElement(), new Questionnaire.QuestionnaireAnswerConstraintEnumFactory());
56302    if (element.hasAnswerValueSetElement()) {
56303      composeCanonical("answerValueSet", element.getAnswerValueSetElement());
56304    }
56305    if (element.hasAnswerOption()) { 
56306      for (Questionnaire.QuestionnaireItemAnswerOptionComponent e : element.getAnswerOption()) 
56307          composeQuestionnaireItemAnswerOptionComponent("answerOption", e);
56308    }
56309    if (element.hasInitial()) { 
56310      for (Questionnaire.QuestionnaireItemInitialComponent e : element.getInitial()) 
56311          composeQuestionnaireItemInitialComponent("initial", e);
56312    }
56313    if (element.hasItem()) { 
56314      for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
56315          composeQuestionnaireItemComponent("item", e);
56316    }
56317  }
56318
56319  protected void composeQuestionnaireItemEnableWhenComponent(String name, Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
56320    if (element != null) {
56321    composeElementAttributes(element);
56322      xml.enter(FHIR_NS, name);
56323      composeQuestionnaireItemEnableWhenComponentElements(element);
56324      composeElementClose(element);
56325      xml.exit(FHIR_NS, name);
56326    }
56327  }
56328
56329  protected void composeQuestionnaireItemEnableWhenComponentElements(Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
56330    composeBackboneElementElements(element);
56331    if (element.hasQuestionElement()) {
56332      composeString("question", element.getQuestionElement());
56333    }
56334    if (element.hasOperatorElement())
56335      composeEnumeration("operator", element.getOperatorElement(), new Questionnaire.QuestionnaireItemOperatorEnumFactory());
56336    if (element.hasAnswer()) {
56337      composeType("answer", element.getAnswer());
56338    }  }
56339
56340  protected void composeQuestionnaireItemAnswerOptionComponent(String name, Questionnaire.QuestionnaireItemAnswerOptionComponent element) throws IOException {
56341    if (element != null) {
56342    composeElementAttributes(element);
56343      xml.enter(FHIR_NS, name);
56344      composeQuestionnaireItemAnswerOptionComponentElements(element);
56345      composeElementClose(element);
56346      xml.exit(FHIR_NS, name);
56347    }
56348  }
56349
56350  protected void composeQuestionnaireItemAnswerOptionComponentElements(Questionnaire.QuestionnaireItemAnswerOptionComponent element) throws IOException {
56351    composeBackboneElementElements(element);
56352    if (element.hasValue()) {
56353      composeType("value", element.getValue());
56354    }    if (element.hasInitialSelectedElement()) {
56355      composeBoolean("initialSelected", element.getInitialSelectedElement());
56356    }
56357  }
56358
56359  protected void composeQuestionnaireItemInitialComponent(String name, Questionnaire.QuestionnaireItemInitialComponent element) throws IOException {
56360    if (element != null) {
56361    composeElementAttributes(element);
56362      xml.enter(FHIR_NS, name);
56363      composeQuestionnaireItemInitialComponentElements(element);
56364      composeElementClose(element);
56365      xml.exit(FHIR_NS, name);
56366    }
56367  }
56368
56369  protected void composeQuestionnaireItemInitialComponentElements(Questionnaire.QuestionnaireItemInitialComponent element) throws IOException {
56370    composeBackboneElementElements(element);
56371    if (element.hasValue()) {
56372      composeType("value", element.getValue());
56373    }  }
56374
56375  protected void composeQuestionnaireResponse(String name, QuestionnaireResponse element) throws IOException {
56376    if (element != null) {
56377    composeResourceAttributes(element);
56378      xml.enter(FHIR_NS, name);
56379      composeQuestionnaireResponseElements(element);
56380      composeElementClose(element);
56381      xml.exit(FHIR_NS, name);
56382    }
56383  }
56384
56385  protected void composeQuestionnaireResponseElements(QuestionnaireResponse element) throws IOException {
56386    composeDomainResourceElements(element);
56387    if (element.hasIdentifier()) { 
56388      for (Identifier e : element.getIdentifier()) 
56389          composeIdentifier("identifier", e);
56390    }
56391    if (element.hasBasedOn()) { 
56392      for (Reference e : element.getBasedOn()) 
56393          composeReference("basedOn", e);
56394    }
56395    if (element.hasPartOf()) { 
56396      for (Reference e : element.getPartOf()) 
56397          composeReference("partOf", e);
56398    }
56399    if (element.hasQuestionnaireElement()) {
56400      composeCanonical("questionnaire", element.getQuestionnaireElement());
56401    }
56402    if (element.hasStatusElement())
56403      composeEnumeration("status", element.getStatusElement(), new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory());
56404    if (element.hasSubject()) {
56405      composeReference("subject", element.getSubject());
56406    }
56407    if (element.hasEncounter()) {
56408      composeReference("encounter", element.getEncounter());
56409    }
56410    if (element.hasAuthoredElement()) {
56411      composeDateTime("authored", element.getAuthoredElement());
56412    }
56413    if (element.hasAuthor()) {
56414      composeReference("author", element.getAuthor());
56415    }
56416    if (element.hasSource()) {
56417      composeReference("source", element.getSource());
56418    }
56419    if (element.hasItem()) { 
56420      for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
56421          composeQuestionnaireResponseItemComponent("item", e);
56422    }
56423  }
56424
56425  protected void composeQuestionnaireResponseItemComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
56426    if (element != null) {
56427    composeElementAttributes(element);
56428      xml.enter(FHIR_NS, name);
56429      composeQuestionnaireResponseItemComponentElements(element);
56430      composeElementClose(element);
56431      xml.exit(FHIR_NS, name);
56432    }
56433  }
56434
56435  protected void composeQuestionnaireResponseItemComponentElements(QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
56436    composeBackboneElementElements(element);
56437    if (element.hasLinkIdElement()) {
56438      composeString("linkId", element.getLinkIdElement());
56439    }
56440    if (element.hasDefinitionElement()) {
56441      composeUri("definition", element.getDefinitionElement());
56442    }
56443    if (element.hasTextElement()) {
56444      composeString("text", element.getTextElement());
56445    }
56446    if (element.hasAnswer()) { 
56447      for (QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent e : element.getAnswer()) 
56448          composeQuestionnaireResponseItemAnswerComponent("answer", e);
56449    }
56450    if (element.hasItem()) { 
56451      for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
56452          composeQuestionnaireResponseItemComponent("item", e);
56453    }
56454  }
56455
56456  protected void composeQuestionnaireResponseItemAnswerComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
56457    if (element != null) {
56458    composeElementAttributes(element);
56459      xml.enter(FHIR_NS, name);
56460      composeQuestionnaireResponseItemAnswerComponentElements(element);
56461      composeElementClose(element);
56462      xml.exit(FHIR_NS, name);
56463    }
56464  }
56465
56466  protected void composeQuestionnaireResponseItemAnswerComponentElements(QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
56467    composeBackboneElementElements(element);
56468    if (element.hasValue()) {
56469      composeType("value", element.getValue());
56470    }    if (element.hasItem()) { 
56471      for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
56472          composeQuestionnaireResponseItemComponent("item", e);
56473    }
56474  }
56475
56476  protected void composeRegulatedAuthorization(String name, RegulatedAuthorization element) throws IOException {
56477    if (element != null) {
56478    composeResourceAttributes(element);
56479      xml.enter(FHIR_NS, name);
56480      composeRegulatedAuthorizationElements(element);
56481      composeElementClose(element);
56482      xml.exit(FHIR_NS, name);
56483    }
56484  }
56485
56486  protected void composeRegulatedAuthorizationElements(RegulatedAuthorization element) throws IOException {
56487    composeDomainResourceElements(element);
56488    if (element.hasIdentifier()) { 
56489      for (Identifier e : element.getIdentifier()) 
56490          composeIdentifier("identifier", e);
56491    }
56492    if (element.hasSubject()) { 
56493      for (Reference e : element.getSubject()) 
56494          composeReference("subject", e);
56495    }
56496    if (element.hasType()) {
56497      composeCodeableConcept("type", element.getType());
56498    }
56499    if (element.hasDescriptionElement()) {
56500      composeMarkdown("description", element.getDescriptionElement());
56501    }
56502    if (element.hasRegion()) { 
56503      for (CodeableConcept e : element.getRegion()) 
56504          composeCodeableConcept("region", e);
56505    }
56506    if (element.hasStatus()) {
56507      composeCodeableConcept("status", element.getStatus());
56508    }
56509    if (element.hasStatusDateElement()) {
56510      composeDateTime("statusDate", element.getStatusDateElement());
56511    }
56512    if (element.hasValidityPeriod()) {
56513      composePeriod("validityPeriod", element.getValidityPeriod());
56514    }
56515    if (element.hasIndication()) { 
56516      for (CodeableReference e : element.getIndication()) 
56517          composeCodeableReference("indication", e);
56518    }
56519    if (element.hasIntendedUse()) {
56520      composeCodeableConcept("intendedUse", element.getIntendedUse());
56521    }
56522    if (element.hasBasis()) { 
56523      for (CodeableConcept e : element.getBasis()) 
56524          composeCodeableConcept("basis", e);
56525    }
56526    if (element.hasHolder()) {
56527      composeReference("holder", element.getHolder());
56528    }
56529    if (element.hasRegulator()) {
56530      composeReference("regulator", element.getRegulator());
56531    }
56532    if (element.hasAttachedDocument()) { 
56533      for (Reference e : element.getAttachedDocument()) 
56534          composeReference("attachedDocument", e);
56535    }
56536    if (element.hasCase()) {
56537      composeRegulatedAuthorizationCaseComponent("case", element.getCase());
56538    }
56539  }
56540
56541  protected void composeRegulatedAuthorizationCaseComponent(String name, RegulatedAuthorization.RegulatedAuthorizationCaseComponent element) throws IOException {
56542    if (element != null) {
56543    composeElementAttributes(element);
56544      xml.enter(FHIR_NS, name);
56545      composeRegulatedAuthorizationCaseComponentElements(element);
56546      composeElementClose(element);
56547      xml.exit(FHIR_NS, name);
56548    }
56549  }
56550
56551  protected void composeRegulatedAuthorizationCaseComponentElements(RegulatedAuthorization.RegulatedAuthorizationCaseComponent element) throws IOException {
56552    composeBackboneElementElements(element);
56553    if (element.hasIdentifier()) {
56554      composeIdentifier("identifier", element.getIdentifier());
56555    }
56556    if (element.hasType()) {
56557      composeCodeableConcept("type", element.getType());
56558    }
56559    if (element.hasStatus()) {
56560      composeCodeableConcept("status", element.getStatus());
56561    }
56562    if (element.hasDate()) {
56563      composeType("date", element.getDate());
56564    }    if (element.hasApplication()) { 
56565      for (RegulatedAuthorization.RegulatedAuthorizationCaseComponent e : element.getApplication()) 
56566          composeRegulatedAuthorizationCaseComponent("application", e);
56567    }
56568  }
56569
56570  protected void composeRelatedPerson(String name, RelatedPerson element) throws IOException {
56571    if (element != null) {
56572    composeResourceAttributes(element);
56573      xml.enter(FHIR_NS, name);
56574      composeRelatedPersonElements(element);
56575      composeElementClose(element);
56576      xml.exit(FHIR_NS, name);
56577    }
56578  }
56579
56580  protected void composeRelatedPersonElements(RelatedPerson element) throws IOException {
56581    composeDomainResourceElements(element);
56582    if (element.hasIdentifier()) { 
56583      for (Identifier e : element.getIdentifier()) 
56584          composeIdentifier("identifier", e);
56585    }
56586    if (element.hasActiveElement()) {
56587      composeBoolean("active", element.getActiveElement());
56588    }
56589    if (element.hasPatient()) {
56590      composeReference("patient", element.getPatient());
56591    }
56592    if (element.hasRelationship()) { 
56593      for (CodeableConcept e : element.getRelationship()) 
56594          composeCodeableConcept("relationship", e);
56595    }
56596    if (element.hasName()) { 
56597      for (HumanName e : element.getName()) 
56598          composeHumanName("name", e);
56599    }
56600    if (element.hasTelecom()) { 
56601      for (ContactPoint e : element.getTelecom()) 
56602          composeContactPoint("telecom", e);
56603    }
56604    if (element.hasGenderElement())
56605      composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
56606    if (element.hasBirthDateElement()) {
56607      composeDate("birthDate", element.getBirthDateElement());
56608    }
56609    if (element.hasAddress()) { 
56610      for (Address e : element.getAddress()) 
56611          composeAddress("address", e);
56612    }
56613    if (element.hasPhoto()) { 
56614      for (Attachment e : element.getPhoto()) 
56615          composeAttachment("photo", e);
56616    }
56617    if (element.hasPeriod()) {
56618      composePeriod("period", element.getPeriod());
56619    }
56620    if (element.hasCommunication()) { 
56621      for (RelatedPerson.RelatedPersonCommunicationComponent e : element.getCommunication()) 
56622          composeRelatedPersonCommunicationComponent("communication", e);
56623    }
56624  }
56625
56626  protected void composeRelatedPersonCommunicationComponent(String name, RelatedPerson.RelatedPersonCommunicationComponent element) throws IOException {
56627    if (element != null) {
56628    composeElementAttributes(element);
56629      xml.enter(FHIR_NS, name);
56630      composeRelatedPersonCommunicationComponentElements(element);
56631      composeElementClose(element);
56632      xml.exit(FHIR_NS, name);
56633    }
56634  }
56635
56636  protected void composeRelatedPersonCommunicationComponentElements(RelatedPerson.RelatedPersonCommunicationComponent element) throws IOException {
56637    composeBackboneElementElements(element);
56638    if (element.hasLanguage()) {
56639      composeCodeableConcept("language", element.getLanguage());
56640    }
56641    if (element.hasPreferredElement()) {
56642      composeBoolean("preferred", element.getPreferredElement());
56643    }
56644  }
56645
56646  protected void composeRequestOrchestration(String name, RequestOrchestration element) throws IOException {
56647    if (element != null) {
56648    composeResourceAttributes(element);
56649      xml.enter(FHIR_NS, name);
56650      composeRequestOrchestrationElements(element);
56651      composeElementClose(element);
56652      xml.exit(FHIR_NS, name);
56653    }
56654  }
56655
56656  protected void composeRequestOrchestrationElements(RequestOrchestration element) throws IOException {
56657    composeDomainResourceElements(element);
56658    if (element.hasIdentifier()) { 
56659      for (Identifier e : element.getIdentifier()) 
56660          composeIdentifier("identifier", e);
56661    }
56662    if (element.hasInstantiatesCanonical()) { 
56663      for (CanonicalType e : element.getInstantiatesCanonical()) 
56664          composeCanonical("instantiatesCanonical", e);
56665    }
56666    if (element.hasInstantiatesUri()) { 
56667      for (UriType e : element.getInstantiatesUri()) 
56668          composeUri("instantiatesUri", e);
56669    }
56670    if (element.hasBasedOn()) { 
56671      for (Reference e : element.getBasedOn()) 
56672          composeReference("basedOn", e);
56673    }
56674    if (element.hasReplaces()) { 
56675      for (Reference e : element.getReplaces()) 
56676          composeReference("replaces", e);
56677    }
56678    if (element.hasGroupIdentifier()) {
56679      composeIdentifier("groupIdentifier", element.getGroupIdentifier());
56680    }
56681    if (element.hasStatusElement())
56682      composeEnumeration("status", element.getStatusElement(), new Enumerations.RequestStatusEnumFactory());
56683    if (element.hasIntentElement())
56684      composeEnumeration("intent", element.getIntentElement(), new Enumerations.RequestIntentEnumFactory());
56685    if (element.hasPriorityElement())
56686      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
56687    if (element.hasCode()) {
56688      composeCodeableConcept("code", element.getCode());
56689    }
56690    if (element.hasSubject()) {
56691      composeReference("subject", element.getSubject());
56692    }
56693    if (element.hasEncounter()) {
56694      composeReference("encounter", element.getEncounter());
56695    }
56696    if (element.hasAuthoredOnElement()) {
56697      composeDateTime("authoredOn", element.getAuthoredOnElement());
56698    }
56699    if (element.hasAuthor()) {
56700      composeReference("author", element.getAuthor());
56701    }
56702    if (element.hasReason()) { 
56703      for (CodeableReference e : element.getReason()) 
56704          composeCodeableReference("reason", e);
56705    }
56706    if (element.hasGoal()) { 
56707      for (Reference e : element.getGoal()) 
56708          composeReference("goal", e);
56709    }
56710    if (element.hasNote()) { 
56711      for (Annotation e : element.getNote()) 
56712          composeAnnotation("note", e);
56713    }
56714    if (element.hasAction()) { 
56715      for (RequestOrchestration.RequestOrchestrationActionComponent e : element.getAction()) 
56716          composeRequestOrchestrationActionComponent("action", e);
56717    }
56718  }
56719
56720  protected void composeRequestOrchestrationActionComponent(String name, RequestOrchestration.RequestOrchestrationActionComponent element) throws IOException {
56721    if (element != null) {
56722    composeElementAttributes(element);
56723      xml.enter(FHIR_NS, name);
56724      composeRequestOrchestrationActionComponentElements(element);
56725      composeElementClose(element);
56726      xml.exit(FHIR_NS, name);
56727    }
56728  }
56729
56730  protected void composeRequestOrchestrationActionComponentElements(RequestOrchestration.RequestOrchestrationActionComponent element) throws IOException {
56731    composeBackboneElementElements(element);
56732    if (element.hasLinkIdElement()) {
56733      composeString("linkId", element.getLinkIdElement());
56734    }
56735    if (element.hasPrefixElement()) {
56736      composeString("prefix", element.getPrefixElement());
56737    }
56738    if (element.hasTitleElement()) {
56739      composeString("title", element.getTitleElement());
56740    }
56741    if (element.hasDescriptionElement()) {
56742      composeMarkdown("description", element.getDescriptionElement());
56743    }
56744    if (element.hasTextEquivalentElement()) {
56745      composeMarkdown("textEquivalent", element.getTextEquivalentElement());
56746    }
56747    if (element.hasPriorityElement())
56748      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
56749    if (element.hasCode()) { 
56750      for (CodeableConcept e : element.getCode()) 
56751          composeCodeableConcept("code", e);
56752    }
56753    if (element.hasDocumentation()) { 
56754      for (RelatedArtifact e : element.getDocumentation()) 
56755          composeRelatedArtifact("documentation", e);
56756    }
56757    if (element.hasGoal()) { 
56758      for (Reference e : element.getGoal()) 
56759          composeReference("goal", e);
56760    }
56761    if (element.hasCondition()) { 
56762      for (RequestOrchestration.RequestOrchestrationActionConditionComponent e : element.getCondition()) 
56763          composeRequestOrchestrationActionConditionComponent("condition", e);
56764    }
56765    if (element.hasInput()) { 
56766      for (RequestOrchestration.RequestOrchestrationActionInputComponent e : element.getInput()) 
56767          composeRequestOrchestrationActionInputComponent("input", e);
56768    }
56769    if (element.hasOutput()) { 
56770      for (RequestOrchestration.RequestOrchestrationActionOutputComponent e : element.getOutput()) 
56771          composeRequestOrchestrationActionOutputComponent("output", e);
56772    }
56773    if (element.hasRelatedAction()) { 
56774      for (RequestOrchestration.RequestOrchestrationActionRelatedActionComponent e : element.getRelatedAction()) 
56775          composeRequestOrchestrationActionRelatedActionComponent("relatedAction", e);
56776    }
56777    if (element.hasTiming()) {
56778      composeType("timing", element.getTiming());
56779    }    if (element.hasLocation()) {
56780      composeCodeableReference("location", element.getLocation());
56781    }
56782    if (element.hasParticipant()) { 
56783      for (RequestOrchestration.RequestOrchestrationActionParticipantComponent e : element.getParticipant()) 
56784          composeRequestOrchestrationActionParticipantComponent("participant", e);
56785    }
56786    if (element.hasType()) {
56787      composeCodeableConcept("type", element.getType());
56788    }
56789    if (element.hasGroupingBehaviorElement())
56790      composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new Enumerations.ActionGroupingBehaviorEnumFactory());
56791    if (element.hasSelectionBehaviorElement())
56792      composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new Enumerations.ActionSelectionBehaviorEnumFactory());
56793    if (element.hasRequiredBehaviorElement())
56794      composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new Enumerations.ActionRequiredBehaviorEnumFactory());
56795    if (element.hasPrecheckBehaviorElement())
56796      composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new Enumerations.ActionPrecheckBehaviorEnumFactory());
56797    if (element.hasCardinalityBehaviorElement())
56798      composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new Enumerations.ActionCardinalityBehaviorEnumFactory());
56799    if (element.hasResource()) {
56800      composeReference("resource", element.getResource());
56801    }
56802    if (element.hasDefinition()) {
56803      composeType("definition", element.getDefinition());
56804    }    if (element.hasTransformElement()) {
56805      composeCanonical("transform", element.getTransformElement());
56806    }
56807    if (element.hasDynamicValue()) { 
56808      for (RequestOrchestration.RequestOrchestrationActionDynamicValueComponent e : element.getDynamicValue()) 
56809          composeRequestOrchestrationActionDynamicValueComponent("dynamicValue", e);
56810    }
56811    if (element.hasAction()) { 
56812      for (RequestOrchestration.RequestOrchestrationActionComponent e : element.getAction()) 
56813          composeRequestOrchestrationActionComponent("action", e);
56814    }
56815  }
56816
56817  protected void composeRequestOrchestrationActionConditionComponent(String name, RequestOrchestration.RequestOrchestrationActionConditionComponent element) throws IOException {
56818    if (element != null) {
56819    composeElementAttributes(element);
56820      xml.enter(FHIR_NS, name);
56821      composeRequestOrchestrationActionConditionComponentElements(element);
56822      composeElementClose(element);
56823      xml.exit(FHIR_NS, name);
56824    }
56825  }
56826
56827  protected void composeRequestOrchestrationActionConditionComponentElements(RequestOrchestration.RequestOrchestrationActionConditionComponent element) throws IOException {
56828    composeBackboneElementElements(element);
56829    if (element.hasKindElement())
56830      composeEnumeration("kind", element.getKindElement(), new Enumerations.ActionConditionKindEnumFactory());
56831    if (element.hasExpression()) {
56832      composeExpression("expression", element.getExpression());
56833    }
56834  }
56835
56836  protected void composeRequestOrchestrationActionInputComponent(String name, RequestOrchestration.RequestOrchestrationActionInputComponent element) throws IOException {
56837    if (element != null) {
56838    composeElementAttributes(element);
56839      xml.enter(FHIR_NS, name);
56840      composeRequestOrchestrationActionInputComponentElements(element);
56841      composeElementClose(element);
56842      xml.exit(FHIR_NS, name);
56843    }
56844  }
56845
56846  protected void composeRequestOrchestrationActionInputComponentElements(RequestOrchestration.RequestOrchestrationActionInputComponent element) throws IOException {
56847    composeBackboneElementElements(element);
56848    if (element.hasTitleElement()) {
56849      composeString("title", element.getTitleElement());
56850    }
56851    if (element.hasRequirement()) {
56852      composeDataRequirement("requirement", element.getRequirement());
56853    }
56854    if (element.hasRelatedDataElement()) {
56855      composeId("relatedData", element.getRelatedDataElement());
56856    }
56857  }
56858
56859  protected void composeRequestOrchestrationActionOutputComponent(String name, RequestOrchestration.RequestOrchestrationActionOutputComponent element) throws IOException {
56860    if (element != null) {
56861    composeElementAttributes(element);
56862      xml.enter(FHIR_NS, name);
56863      composeRequestOrchestrationActionOutputComponentElements(element);
56864      composeElementClose(element);
56865      xml.exit(FHIR_NS, name);
56866    }
56867  }
56868
56869  protected void composeRequestOrchestrationActionOutputComponentElements(RequestOrchestration.RequestOrchestrationActionOutputComponent element) throws IOException {
56870    composeBackboneElementElements(element);
56871    if (element.hasTitleElement()) {
56872      composeString("title", element.getTitleElement());
56873    }
56874    if (element.hasRequirement()) {
56875      composeDataRequirement("requirement", element.getRequirement());
56876    }
56877    if (element.hasRelatedDataElement()) {
56878      composeString("relatedData", element.getRelatedDataElement());
56879    }
56880  }
56881
56882  protected void composeRequestOrchestrationActionRelatedActionComponent(String name, RequestOrchestration.RequestOrchestrationActionRelatedActionComponent element) throws IOException {
56883    if (element != null) {
56884    composeElementAttributes(element);
56885      xml.enter(FHIR_NS, name);
56886      composeRequestOrchestrationActionRelatedActionComponentElements(element);
56887      composeElementClose(element);
56888      xml.exit(FHIR_NS, name);
56889    }
56890  }
56891
56892  protected void composeRequestOrchestrationActionRelatedActionComponentElements(RequestOrchestration.RequestOrchestrationActionRelatedActionComponent element) throws IOException {
56893    composeBackboneElementElements(element);
56894    if (element.hasTargetIdElement()) {
56895      composeId("targetId", element.getTargetIdElement());
56896    }
56897    if (element.hasRelationshipElement())
56898      composeEnumeration("relationship", element.getRelationshipElement(), new Enumerations.ActionRelationshipTypeEnumFactory());
56899    if (element.hasEndRelationshipElement())
56900      composeEnumeration("endRelationship", element.getEndRelationshipElement(), new Enumerations.ActionRelationshipTypeEnumFactory());
56901    if (element.hasOffset()) {
56902      composeType("offset", element.getOffset());
56903    }  }
56904
56905  protected void composeRequestOrchestrationActionParticipantComponent(String name, RequestOrchestration.RequestOrchestrationActionParticipantComponent element) throws IOException {
56906    if (element != null) {
56907    composeElementAttributes(element);
56908      xml.enter(FHIR_NS, name);
56909      composeRequestOrchestrationActionParticipantComponentElements(element);
56910      composeElementClose(element);
56911      xml.exit(FHIR_NS, name);
56912    }
56913  }
56914
56915  protected void composeRequestOrchestrationActionParticipantComponentElements(RequestOrchestration.RequestOrchestrationActionParticipantComponent element) throws IOException {
56916    composeBackboneElementElements(element);
56917    if (element.hasTypeElement())
56918      composeEnumeration("type", element.getTypeElement(), new Enumerations.ActionParticipantTypeEnumFactory());
56919    if (element.hasTypeCanonicalElement()) {
56920      composeCanonical("typeCanonical", element.getTypeCanonicalElement());
56921    }
56922    if (element.hasTypeReference()) {
56923      composeReference("typeReference", element.getTypeReference());
56924    }
56925    if (element.hasRole()) {
56926      composeCodeableConcept("role", element.getRole());
56927    }
56928    if (element.hasFunction()) {
56929      composeCodeableConcept("function", element.getFunction());
56930    }
56931    if (element.hasActor()) {
56932      composeType("actor", element.getActor());
56933    }  }
56934
56935  protected void composeRequestOrchestrationActionDynamicValueComponent(String name, RequestOrchestration.RequestOrchestrationActionDynamicValueComponent element) throws IOException {
56936    if (element != null) {
56937    composeElementAttributes(element);
56938      xml.enter(FHIR_NS, name);
56939      composeRequestOrchestrationActionDynamicValueComponentElements(element);
56940      composeElementClose(element);
56941      xml.exit(FHIR_NS, name);
56942    }
56943  }
56944
56945  protected void composeRequestOrchestrationActionDynamicValueComponentElements(RequestOrchestration.RequestOrchestrationActionDynamicValueComponent element) throws IOException {
56946    composeBackboneElementElements(element);
56947    if (element.hasPathElement()) {
56948      composeString("path", element.getPathElement());
56949    }
56950    if (element.hasExpression()) {
56951      composeExpression("expression", element.getExpression());
56952    }
56953  }
56954
56955  protected void composeRequirements(String name, Requirements element) throws IOException {
56956    if (element != null) {
56957    composeResourceAttributes(element);
56958      xml.enter(FHIR_NS, name);
56959      composeRequirementsElements(element);
56960      composeElementClose(element);
56961      xml.exit(FHIR_NS, name);
56962    }
56963  }
56964
56965  protected void composeRequirementsElements(Requirements element) throws IOException {
56966    composeCanonicalResourceElements(element);
56967    if (element.hasUrlElement()) {
56968      composeUri("url", element.getUrlElement());
56969    }
56970    if (element.hasIdentifier()) { 
56971      for (Identifier e : element.getIdentifier()) 
56972          composeIdentifier("identifier", e);
56973    }
56974    if (element.hasVersionElement()) {
56975      composeString("version", element.getVersionElement());
56976    }
56977    if (element.hasVersionAlgorithm()) {
56978      composeType("versionAlgorithm", element.getVersionAlgorithm());
56979    }    if (element.hasNameElement()) {
56980      composeString("name", element.getNameElement());
56981    }
56982    if (element.hasTitleElement()) {
56983      composeString("title", element.getTitleElement());
56984    }
56985    if (element.hasStatusElement())
56986      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
56987    if (element.hasExperimentalElement()) {
56988      composeBoolean("experimental", element.getExperimentalElement());
56989    }
56990    if (element.hasDateElement()) {
56991      composeDateTime("date", element.getDateElement());
56992    }
56993    if (element.hasPublisherElement()) {
56994      composeString("publisher", element.getPublisherElement());
56995    }
56996    if (element.hasContact()) { 
56997      for (ContactDetail e : element.getContact()) 
56998          composeContactDetail("contact", e);
56999    }
57000    if (element.hasDescriptionElement()) {
57001      composeMarkdown("description", element.getDescriptionElement());
57002    }
57003    if (element.hasUseContext()) { 
57004      for (UsageContext e : element.getUseContext()) 
57005          composeUsageContext("useContext", e);
57006    }
57007    if (element.hasJurisdiction()) { 
57008      for (CodeableConcept e : element.getJurisdiction()) 
57009          composeCodeableConcept("jurisdiction", e);
57010    }
57011    if (element.hasPurposeElement()) {
57012      composeMarkdown("purpose", element.getPurposeElement());
57013    }
57014    if (element.hasCopyrightElement()) {
57015      composeMarkdown("copyright", element.getCopyrightElement());
57016    }
57017    if (element.hasCopyrightLabelElement()) {
57018      composeString("copyrightLabel", element.getCopyrightLabelElement());
57019    }
57020    if (element.hasDerivedFrom()) { 
57021      for (CanonicalType e : element.getDerivedFrom()) 
57022          composeCanonical("derivedFrom", e);
57023    }
57024    if (element.hasReference()) { 
57025      for (UrlType e : element.getReference()) 
57026          composeUrl("reference", e);
57027    }
57028    if (element.hasActor()) { 
57029      for (CanonicalType e : element.getActor()) 
57030          composeCanonical("actor", e);
57031    }
57032    if (element.hasStatement()) { 
57033      for (Requirements.RequirementsStatementComponent e : element.getStatement()) 
57034          composeRequirementsStatementComponent("statement", e);
57035    }
57036  }
57037
57038  protected void composeRequirementsStatementComponent(String name, Requirements.RequirementsStatementComponent element) throws IOException {
57039    if (element != null) {
57040    composeElementAttributes(element);
57041      xml.enter(FHIR_NS, name);
57042      composeRequirementsStatementComponentElements(element);
57043      composeElementClose(element);
57044      xml.exit(FHIR_NS, name);
57045    }
57046  }
57047
57048  protected void composeRequirementsStatementComponentElements(Requirements.RequirementsStatementComponent element) throws IOException {
57049    composeBackboneElementElements(element);
57050    if (element.hasKeyElement()) {
57051      composeId("key", element.getKeyElement());
57052    }
57053    if (element.hasLabelElement()) {
57054      composeString("label", element.getLabelElement());
57055    }
57056      if (element.hasConformance()) 
57057        for (Enumeration<Requirements.ConformanceExpectation> e : element.getConformance()) 
57058          composeEnumeration("conformance", e, new Requirements.ConformanceExpectationEnumFactory());
57059    if (element.hasConditionalityElement()) {
57060      composeBoolean("conditionality", element.getConditionalityElement());
57061    }
57062    if (element.hasRequirementElement()) {
57063      composeMarkdown("requirement", element.getRequirementElement());
57064    }
57065    if (element.hasDerivedFromElement()) {
57066      composeString("derivedFrom", element.getDerivedFromElement());
57067    }
57068    if (element.hasParentElement()) {
57069      composeString("parent", element.getParentElement());
57070    }
57071    if (element.hasSatisfiedBy()) { 
57072      for (UrlType e : element.getSatisfiedBy()) 
57073          composeUrl("satisfiedBy", e);
57074    }
57075    if (element.hasReference()) { 
57076      for (UrlType e : element.getReference()) 
57077          composeUrl("reference", e);
57078    }
57079    if (element.hasSource()) { 
57080      for (Reference e : element.getSource()) 
57081          composeReference("source", e);
57082    }
57083  }
57084
57085  protected void composeResearchStudy(String name, ResearchStudy element) throws IOException {
57086    if (element != null) {
57087    composeResourceAttributes(element);
57088      xml.enter(FHIR_NS, name);
57089      composeResearchStudyElements(element);
57090      composeElementClose(element);
57091      xml.exit(FHIR_NS, name);
57092    }
57093  }
57094
57095  protected void composeResearchStudyElements(ResearchStudy element) throws IOException {
57096    composeDomainResourceElements(element);
57097    if (element.hasUrlElement()) {
57098      composeUri("url", element.getUrlElement());
57099    }
57100    if (element.hasIdentifier()) { 
57101      for (Identifier e : element.getIdentifier()) 
57102          composeIdentifier("identifier", e);
57103    }
57104    if (element.hasVersionElement()) {
57105      composeString("version", element.getVersionElement());
57106    }
57107    if (element.hasNameElement()) {
57108      composeString("name", element.getNameElement());
57109    }
57110    if (element.hasTitleElement()) {
57111      composeString("title", element.getTitleElement());
57112    }
57113    if (element.hasLabel()) { 
57114      for (ResearchStudy.ResearchStudyLabelComponent e : element.getLabel()) 
57115          composeResearchStudyLabelComponent("label", e);
57116    }
57117    if (element.hasProtocol()) { 
57118      for (Reference e : element.getProtocol()) 
57119          composeReference("protocol", e);
57120    }
57121    if (element.hasPartOf()) { 
57122      for (Reference e : element.getPartOf()) 
57123          composeReference("partOf", e);
57124    }
57125    if (element.hasRelatedArtifact()) { 
57126      for (RelatedArtifact e : element.getRelatedArtifact()) 
57127          composeRelatedArtifact("relatedArtifact", e);
57128    }
57129    if (element.hasDateElement()) {
57130      composeDateTime("date", element.getDateElement());
57131    }
57132    if (element.hasStatusElement())
57133      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
57134    if (element.hasPrimaryPurposeType()) {
57135      composeCodeableConcept("primaryPurposeType", element.getPrimaryPurposeType());
57136    }
57137    if (element.hasPhase()) {
57138      composeCodeableConcept("phase", element.getPhase());
57139    }
57140    if (element.hasStudyDesign()) { 
57141      for (CodeableConcept e : element.getStudyDesign()) 
57142          composeCodeableConcept("studyDesign", e);
57143    }
57144    if (element.hasFocus()) { 
57145      for (CodeableReference e : element.getFocus()) 
57146          composeCodeableReference("focus", e);
57147    }
57148    if (element.hasCondition()) { 
57149      for (CodeableConcept e : element.getCondition()) 
57150          composeCodeableConcept("condition", e);
57151    }
57152    if (element.hasKeyword()) { 
57153      for (CodeableConcept e : element.getKeyword()) 
57154          composeCodeableConcept("keyword", e);
57155    }
57156    if (element.hasRegion()) { 
57157      for (CodeableConcept e : element.getRegion()) 
57158          composeCodeableConcept("region", e);
57159    }
57160    if (element.hasDescriptionSummaryElement()) {
57161      composeMarkdown("descriptionSummary", element.getDescriptionSummaryElement());
57162    }
57163    if (element.hasDescriptionElement()) {
57164      composeMarkdown("description", element.getDescriptionElement());
57165    }
57166    if (element.hasPeriod()) {
57167      composePeriod("period", element.getPeriod());
57168    }
57169    if (element.hasSite()) { 
57170      for (Reference e : element.getSite()) 
57171          composeReference("site", e);
57172    }
57173    if (element.hasNote()) { 
57174      for (Annotation e : element.getNote()) 
57175          composeAnnotation("note", e);
57176    }
57177    if (element.hasClassifier()) { 
57178      for (CodeableConcept e : element.getClassifier()) 
57179          composeCodeableConcept("classifier", e);
57180    }
57181    if (element.hasAssociatedParty()) { 
57182      for (ResearchStudy.ResearchStudyAssociatedPartyComponent e : element.getAssociatedParty()) 
57183          composeResearchStudyAssociatedPartyComponent("associatedParty", e);
57184    }
57185    if (element.hasProgressStatus()) { 
57186      for (ResearchStudy.ResearchStudyProgressStatusComponent e : element.getProgressStatus()) 
57187          composeResearchStudyProgressStatusComponent("progressStatus", e);
57188    }
57189    if (element.hasWhyStopped()) {
57190      composeCodeableConcept("whyStopped", element.getWhyStopped());
57191    }
57192    if (element.hasRecruitment()) {
57193      composeResearchStudyRecruitmentComponent("recruitment", element.getRecruitment());
57194    }
57195    if (element.hasComparisonGroup()) { 
57196      for (ResearchStudy.ResearchStudyComparisonGroupComponent e : element.getComparisonGroup()) 
57197          composeResearchStudyComparisonGroupComponent("comparisonGroup", e);
57198    }
57199    if (element.hasObjective()) { 
57200      for (ResearchStudy.ResearchStudyObjectiveComponent e : element.getObjective()) 
57201          composeResearchStudyObjectiveComponent("objective", e);
57202    }
57203    if (element.hasOutcomeMeasure()) { 
57204      for (ResearchStudy.ResearchStudyOutcomeMeasureComponent e : element.getOutcomeMeasure()) 
57205          composeResearchStudyOutcomeMeasureComponent("outcomeMeasure", e);
57206    }
57207    if (element.hasResult()) { 
57208      for (Reference e : element.getResult()) 
57209          composeReference("result", e);
57210    }
57211  }
57212
57213  protected void composeResearchStudyLabelComponent(String name, ResearchStudy.ResearchStudyLabelComponent element) throws IOException {
57214    if (element != null) {
57215    composeElementAttributes(element);
57216      xml.enter(FHIR_NS, name);
57217      composeResearchStudyLabelComponentElements(element);
57218      composeElementClose(element);
57219      xml.exit(FHIR_NS, name);
57220    }
57221  }
57222
57223  protected void composeResearchStudyLabelComponentElements(ResearchStudy.ResearchStudyLabelComponent element) throws IOException {
57224    composeBackboneElementElements(element);
57225    if (element.hasType()) {
57226      composeCodeableConcept("type", element.getType());
57227    }
57228    if (element.hasValueElement()) {
57229      composeString("value", element.getValueElement());
57230    }
57231  }
57232
57233  protected void composeResearchStudyAssociatedPartyComponent(String name, ResearchStudy.ResearchStudyAssociatedPartyComponent element) throws IOException {
57234    if (element != null) {
57235    composeElementAttributes(element);
57236      xml.enter(FHIR_NS, name);
57237      composeResearchStudyAssociatedPartyComponentElements(element);
57238      composeElementClose(element);
57239      xml.exit(FHIR_NS, name);
57240    }
57241  }
57242
57243  protected void composeResearchStudyAssociatedPartyComponentElements(ResearchStudy.ResearchStudyAssociatedPartyComponent element) throws IOException {
57244    composeBackboneElementElements(element);
57245    if (element.hasNameElement()) {
57246      composeString("name", element.getNameElement());
57247    }
57248    if (element.hasRole()) {
57249      composeCodeableConcept("role", element.getRole());
57250    }
57251    if (element.hasPeriod()) { 
57252      for (Period e : element.getPeriod()) 
57253          composePeriod("period", e);
57254    }
57255    if (element.hasClassifier()) { 
57256      for (CodeableConcept e : element.getClassifier()) 
57257          composeCodeableConcept("classifier", e);
57258    }
57259    if (element.hasParty()) {
57260      composeReference("party", element.getParty());
57261    }
57262  }
57263
57264  protected void composeResearchStudyProgressStatusComponent(String name, ResearchStudy.ResearchStudyProgressStatusComponent element) throws IOException {
57265    if (element != null) {
57266    composeElementAttributes(element);
57267      xml.enter(FHIR_NS, name);
57268      composeResearchStudyProgressStatusComponentElements(element);
57269      composeElementClose(element);
57270      xml.exit(FHIR_NS, name);
57271    }
57272  }
57273
57274  protected void composeResearchStudyProgressStatusComponentElements(ResearchStudy.ResearchStudyProgressStatusComponent element) throws IOException {
57275    composeBackboneElementElements(element);
57276    if (element.hasState()) {
57277      composeCodeableConcept("state", element.getState());
57278    }
57279    if (element.hasActualElement()) {
57280      composeBoolean("actual", element.getActualElement());
57281    }
57282    if (element.hasPeriod()) {
57283      composePeriod("period", element.getPeriod());
57284    }
57285  }
57286
57287  protected void composeResearchStudyRecruitmentComponent(String name, ResearchStudy.ResearchStudyRecruitmentComponent element) throws IOException {
57288    if (element != null) {
57289    composeElementAttributes(element);
57290      xml.enter(FHIR_NS, name);
57291      composeResearchStudyRecruitmentComponentElements(element);
57292      composeElementClose(element);
57293      xml.exit(FHIR_NS, name);
57294    }
57295  }
57296
57297  protected void composeResearchStudyRecruitmentComponentElements(ResearchStudy.ResearchStudyRecruitmentComponent element) throws IOException {
57298    composeBackboneElementElements(element);
57299    if (element.hasTargetNumberElement()) {
57300      composeUnsignedInt("targetNumber", element.getTargetNumberElement());
57301    }
57302    if (element.hasActualNumberElement()) {
57303      composeUnsignedInt("actualNumber", element.getActualNumberElement());
57304    }
57305    if (element.hasEligibility()) {
57306      composeReference("eligibility", element.getEligibility());
57307    }
57308    if (element.hasActualGroup()) {
57309      composeReference("actualGroup", element.getActualGroup());
57310    }
57311  }
57312
57313  protected void composeResearchStudyComparisonGroupComponent(String name, ResearchStudy.ResearchStudyComparisonGroupComponent element) throws IOException {
57314    if (element != null) {
57315    composeElementAttributes(element);
57316      xml.enter(FHIR_NS, name);
57317      composeResearchStudyComparisonGroupComponentElements(element);
57318      composeElementClose(element);
57319      xml.exit(FHIR_NS, name);
57320    }
57321  }
57322
57323  protected void composeResearchStudyComparisonGroupComponentElements(ResearchStudy.ResearchStudyComparisonGroupComponent element) throws IOException {
57324    composeBackboneElementElements(element);
57325    if (element.hasLinkIdElement()) {
57326      composeId("linkId", element.getLinkIdElement());
57327    }
57328    if (element.hasNameElement()) {
57329      composeString("name", element.getNameElement());
57330    }
57331    if (element.hasType()) {
57332      composeCodeableConcept("type", element.getType());
57333    }
57334    if (element.hasDescriptionElement()) {
57335      composeMarkdown("description", element.getDescriptionElement());
57336    }
57337    if (element.hasIntendedExposure()) { 
57338      for (Reference e : element.getIntendedExposure()) 
57339          composeReference("intendedExposure", e);
57340    }
57341    if (element.hasObservedGroup()) {
57342      composeReference("observedGroup", element.getObservedGroup());
57343    }
57344  }
57345
57346  protected void composeResearchStudyObjectiveComponent(String name, ResearchStudy.ResearchStudyObjectiveComponent element) throws IOException {
57347    if (element != null) {
57348    composeElementAttributes(element);
57349      xml.enter(FHIR_NS, name);
57350      composeResearchStudyObjectiveComponentElements(element);
57351      composeElementClose(element);
57352      xml.exit(FHIR_NS, name);
57353    }
57354  }
57355
57356  protected void composeResearchStudyObjectiveComponentElements(ResearchStudy.ResearchStudyObjectiveComponent element) throws IOException {
57357    composeBackboneElementElements(element);
57358    if (element.hasNameElement()) {
57359      composeString("name", element.getNameElement());
57360    }
57361    if (element.hasType()) {
57362      composeCodeableConcept("type", element.getType());
57363    }
57364    if (element.hasDescriptionElement()) {
57365      composeMarkdown("description", element.getDescriptionElement());
57366    }
57367  }
57368
57369  protected void composeResearchStudyOutcomeMeasureComponent(String name, ResearchStudy.ResearchStudyOutcomeMeasureComponent element) throws IOException {
57370    if (element != null) {
57371    composeElementAttributes(element);
57372      xml.enter(FHIR_NS, name);
57373      composeResearchStudyOutcomeMeasureComponentElements(element);
57374      composeElementClose(element);
57375      xml.exit(FHIR_NS, name);
57376    }
57377  }
57378
57379  protected void composeResearchStudyOutcomeMeasureComponentElements(ResearchStudy.ResearchStudyOutcomeMeasureComponent element) throws IOException {
57380    composeBackboneElementElements(element);
57381    if (element.hasNameElement()) {
57382      composeString("name", element.getNameElement());
57383    }
57384    if (element.hasType()) { 
57385      for (CodeableConcept e : element.getType()) 
57386          composeCodeableConcept("type", e);
57387    }
57388    if (element.hasDescriptionElement()) {
57389      composeMarkdown("description", element.getDescriptionElement());
57390    }
57391    if (element.hasReference()) {
57392      composeReference("reference", element.getReference());
57393    }
57394  }
57395
57396  protected void composeResearchSubject(String name, ResearchSubject element) throws IOException {
57397    if (element != null) {
57398    composeResourceAttributes(element);
57399      xml.enter(FHIR_NS, name);
57400      composeResearchSubjectElements(element);
57401      composeElementClose(element);
57402      xml.exit(FHIR_NS, name);
57403    }
57404  }
57405
57406  protected void composeResearchSubjectElements(ResearchSubject element) throws IOException {
57407    composeDomainResourceElements(element);
57408    if (element.hasIdentifier()) { 
57409      for (Identifier e : element.getIdentifier()) 
57410          composeIdentifier("identifier", e);
57411    }
57412    if (element.hasStatusElement())
57413      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
57414    if (element.hasProgress()) { 
57415      for (ResearchSubject.ResearchSubjectProgressComponent e : element.getProgress()) 
57416          composeResearchSubjectProgressComponent("progress", e);
57417    }
57418    if (element.hasPeriod()) {
57419      composePeriod("period", element.getPeriod());
57420    }
57421    if (element.hasStudy()) {
57422      composeReference("study", element.getStudy());
57423    }
57424    if (element.hasSubject()) {
57425      composeReference("subject", element.getSubject());
57426    }
57427    if (element.hasAssignedComparisonGroupElement()) {
57428      composeId("assignedComparisonGroup", element.getAssignedComparisonGroupElement());
57429    }
57430    if (element.hasActualComparisonGroupElement()) {
57431      composeId("actualComparisonGroup", element.getActualComparisonGroupElement());
57432    }
57433    if (element.hasConsent()) { 
57434      for (Reference e : element.getConsent()) 
57435          composeReference("consent", e);
57436    }
57437  }
57438
57439  protected void composeResearchSubjectProgressComponent(String name, ResearchSubject.ResearchSubjectProgressComponent element) throws IOException {
57440    if (element != null) {
57441    composeElementAttributes(element);
57442      xml.enter(FHIR_NS, name);
57443      composeResearchSubjectProgressComponentElements(element);
57444      composeElementClose(element);
57445      xml.exit(FHIR_NS, name);
57446    }
57447  }
57448
57449  protected void composeResearchSubjectProgressComponentElements(ResearchSubject.ResearchSubjectProgressComponent element) throws IOException {
57450    composeBackboneElementElements(element);
57451    if (element.hasType()) {
57452      composeCodeableConcept("type", element.getType());
57453    }
57454    if (element.hasSubjectState()) {
57455      composeCodeableConcept("subjectState", element.getSubjectState());
57456    }
57457    if (element.hasMilestone()) {
57458      composeCodeableConcept("milestone", element.getMilestone());
57459    }
57460    if (element.hasReason()) {
57461      composeCodeableConcept("reason", element.getReason());
57462    }
57463    if (element.hasStartDateElement()) {
57464      composeDateTime("startDate", element.getStartDateElement());
57465    }
57466    if (element.hasEndDateElement()) {
57467      composeDateTime("endDate", element.getEndDateElement());
57468    }
57469  }
57470
57471  protected void composeRiskAssessment(String name, RiskAssessment element) throws IOException {
57472    if (element != null) {
57473    composeResourceAttributes(element);
57474      xml.enter(FHIR_NS, name);
57475      composeRiskAssessmentElements(element);
57476      composeElementClose(element);
57477      xml.exit(FHIR_NS, name);
57478    }
57479  }
57480
57481  protected void composeRiskAssessmentElements(RiskAssessment element) throws IOException {
57482    composeDomainResourceElements(element);
57483    if (element.hasIdentifier()) { 
57484      for (Identifier e : element.getIdentifier()) 
57485          composeIdentifier("identifier", e);
57486    }
57487    if (element.hasBasedOn()) {
57488      composeReference("basedOn", element.getBasedOn());
57489    }
57490    if (element.hasParent()) {
57491      composeReference("parent", element.getParent());
57492    }
57493    if (element.hasStatusElement())
57494      composeEnumeration("status", element.getStatusElement(), new Enumerations.ObservationStatusEnumFactory());
57495    if (element.hasMethod()) {
57496      composeCodeableConcept("method", element.getMethod());
57497    }
57498    if (element.hasCode()) {
57499      composeCodeableConcept("code", element.getCode());
57500    }
57501    if (element.hasSubject()) {
57502      composeReference("subject", element.getSubject());
57503    }
57504    if (element.hasEncounter()) {
57505      composeReference("encounter", element.getEncounter());
57506    }
57507    if (element.hasOccurrence()) {
57508      composeType("occurrence", element.getOccurrence());
57509    }    if (element.hasCondition()) {
57510      composeReference("condition", element.getCondition());
57511    }
57512    if (element.hasPerformer()) {
57513      composeReference("performer", element.getPerformer());
57514    }
57515    if (element.hasReason()) { 
57516      for (CodeableReference e : element.getReason()) 
57517          composeCodeableReference("reason", e);
57518    }
57519    if (element.hasBasis()) { 
57520      for (Reference e : element.getBasis()) 
57521          composeReference("basis", e);
57522    }
57523    if (element.hasPrediction()) { 
57524      for (RiskAssessment.RiskAssessmentPredictionComponent e : element.getPrediction()) 
57525          composeRiskAssessmentPredictionComponent("prediction", e);
57526    }
57527    if (element.hasMitigationElement()) {
57528      composeString("mitigation", element.getMitigationElement());
57529    }
57530    if (element.hasNote()) { 
57531      for (Annotation e : element.getNote()) 
57532          composeAnnotation("note", e);
57533    }
57534  }
57535
57536  protected void composeRiskAssessmentPredictionComponent(String name, RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
57537    if (element != null) {
57538    composeElementAttributes(element);
57539      xml.enter(FHIR_NS, name);
57540      composeRiskAssessmentPredictionComponentElements(element);
57541      composeElementClose(element);
57542      xml.exit(FHIR_NS, name);
57543    }
57544  }
57545
57546  protected void composeRiskAssessmentPredictionComponentElements(RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
57547    composeBackboneElementElements(element);
57548    if (element.hasOutcome()) {
57549      composeCodeableConcept("outcome", element.getOutcome());
57550    }
57551    if (element.hasProbability()) {
57552      composeType("probability", element.getProbability());
57553    }    if (element.hasQualitativeRisk()) {
57554      composeCodeableConcept("qualitativeRisk", element.getQualitativeRisk());
57555    }
57556    if (element.hasRelativeRiskElement()) {
57557      composeDecimal("relativeRisk", element.getRelativeRiskElement());
57558    }
57559    if (element.hasWhen()) {
57560      composeType("when", element.getWhen());
57561    }    if (element.hasRationaleElement()) {
57562      composeString("rationale", element.getRationaleElement());
57563    }
57564  }
57565
57566  protected void composeSchedule(String name, Schedule element) throws IOException {
57567    if (element != null) {
57568    composeResourceAttributes(element);
57569      xml.enter(FHIR_NS, name);
57570      composeScheduleElements(element);
57571      composeElementClose(element);
57572      xml.exit(FHIR_NS, name);
57573    }
57574  }
57575
57576  protected void composeScheduleElements(Schedule element) throws IOException {
57577    composeDomainResourceElements(element);
57578    if (element.hasIdentifier()) { 
57579      for (Identifier e : element.getIdentifier()) 
57580          composeIdentifier("identifier", e);
57581    }
57582    if (element.hasActiveElement()) {
57583      composeBoolean("active", element.getActiveElement());
57584    }
57585    if (element.hasServiceCategory()) { 
57586      for (CodeableConcept e : element.getServiceCategory()) 
57587          composeCodeableConcept("serviceCategory", e);
57588    }
57589    if (element.hasServiceType()) { 
57590      for (CodeableReference e : element.getServiceType()) 
57591          composeCodeableReference("serviceType", e);
57592    }
57593    if (element.hasSpecialty()) { 
57594      for (CodeableConcept e : element.getSpecialty()) 
57595          composeCodeableConcept("specialty", e);
57596    }
57597    if (element.hasNameElement()) {
57598      composeString("name", element.getNameElement());
57599    }
57600    if (element.hasActor()) { 
57601      for (Reference e : element.getActor()) 
57602          composeReference("actor", e);
57603    }
57604    if (element.hasPlanningHorizon()) {
57605      composePeriod("planningHorizon", element.getPlanningHorizon());
57606    }
57607    if (element.hasCommentElement()) {
57608      composeMarkdown("comment", element.getCommentElement());
57609    }
57610  }
57611
57612  protected void composeSearchParameter(String name, SearchParameter element) throws IOException {
57613    if (element != null) {
57614    composeResourceAttributes(element);
57615      xml.enter(FHIR_NS, name);
57616      composeSearchParameterElements(element);
57617      composeElementClose(element);
57618      xml.exit(FHIR_NS, name);
57619    }
57620  }
57621
57622  protected void composeSearchParameterElements(SearchParameter element) throws IOException {
57623    composeCanonicalResourceElements(element);
57624    if (element.hasUrlElement()) {
57625      composeUri("url", element.getUrlElement());
57626    }
57627    if (element.hasIdentifier()) { 
57628      for (Identifier e : element.getIdentifier()) 
57629          composeIdentifier("identifier", e);
57630    }
57631    if (element.hasVersionElement()) {
57632      composeString("version", element.getVersionElement());
57633    }
57634    if (element.hasVersionAlgorithm()) {
57635      composeType("versionAlgorithm", element.getVersionAlgorithm());
57636    }    if (element.hasNameElement()) {
57637      composeString("name", element.getNameElement());
57638    }
57639    if (element.hasTitleElement()) {
57640      composeString("title", element.getTitleElement());
57641    }
57642    if (element.hasDerivedFromElement()) {
57643      composeCanonical("derivedFrom", element.getDerivedFromElement());
57644    }
57645    if (element.hasStatusElement())
57646      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
57647    if (element.hasExperimentalElement()) {
57648      composeBoolean("experimental", element.getExperimentalElement());
57649    }
57650    if (element.hasDateElement()) {
57651      composeDateTime("date", element.getDateElement());
57652    }
57653    if (element.hasPublisherElement()) {
57654      composeString("publisher", element.getPublisherElement());
57655    }
57656    if (element.hasContact()) { 
57657      for (ContactDetail e : element.getContact()) 
57658          composeContactDetail("contact", e);
57659    }
57660    if (element.hasDescriptionElement()) {
57661      composeMarkdown("description", element.getDescriptionElement());
57662    }
57663    if (element.hasUseContext()) { 
57664      for (UsageContext e : element.getUseContext()) 
57665          composeUsageContext("useContext", e);
57666    }
57667    if (element.hasJurisdiction()) { 
57668      for (CodeableConcept e : element.getJurisdiction()) 
57669          composeCodeableConcept("jurisdiction", e);
57670    }
57671    if (element.hasPurposeElement()) {
57672      composeMarkdown("purpose", element.getPurposeElement());
57673    }
57674    if (element.hasCopyrightElement()) {
57675      composeMarkdown("copyright", element.getCopyrightElement());
57676    }
57677    if (element.hasCopyrightLabelElement()) {
57678      composeString("copyrightLabel", element.getCopyrightLabelElement());
57679    }
57680    if (element.hasCodeElement()) {
57681      composeCode("code", element.getCodeElement());
57682    }
57683      if (element.hasBase()) 
57684        for (Enumeration<Enumerations.VersionIndependentResourceTypesAll> e : element.getBase()) 
57685          composeEnumeration("base", e, new Enumerations.VersionIndependentResourceTypesAllEnumFactory());
57686    if (element.hasTypeElement())
57687      composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
57688    if (element.hasExpressionElement()) {
57689      composeString("expression", element.getExpressionElement());
57690    }
57691    if (element.hasProcessingModeElement())
57692      composeEnumeration("processingMode", element.getProcessingModeElement(), new SearchParameter.SearchProcessingModeTypeEnumFactory());
57693    if (element.hasConstraintElement()) {
57694      composeString("constraint", element.getConstraintElement());
57695    }
57696      if (element.hasTarget()) 
57697        for (Enumeration<Enumerations.VersionIndependentResourceTypesAll> e : element.getTarget()) 
57698          composeEnumeration("target", e, new Enumerations.VersionIndependentResourceTypesAllEnumFactory());
57699    if (element.hasMultipleOrElement()) {
57700      composeBoolean("multipleOr", element.getMultipleOrElement());
57701    }
57702    if (element.hasMultipleAndElement()) {
57703      composeBoolean("multipleAnd", element.getMultipleAndElement());
57704    }
57705      if (element.hasComparator()) 
57706        for (Enumeration<Enumerations.SearchComparator> e : element.getComparator()) 
57707          composeEnumeration("comparator", e, new Enumerations.SearchComparatorEnumFactory());
57708      if (element.hasModifier()) 
57709        for (Enumeration<Enumerations.SearchModifierCode> e : element.getModifier()) 
57710          composeEnumeration("modifier", e, new Enumerations.SearchModifierCodeEnumFactory());
57711    if (element.hasChain()) { 
57712      for (StringType e : element.getChain()) 
57713          composeString("chain", e);
57714    }
57715    if (element.hasComponent()) { 
57716      for (SearchParameter.SearchParameterComponentComponent e : element.getComponent()) 
57717          composeSearchParameterComponentComponent("component", e);
57718    }
57719  }
57720
57721  protected void composeSearchParameterComponentComponent(String name, SearchParameter.SearchParameterComponentComponent element) throws IOException {
57722    if (element != null) {
57723    composeElementAttributes(element);
57724      xml.enter(FHIR_NS, name);
57725      composeSearchParameterComponentComponentElements(element);
57726      composeElementClose(element);
57727      xml.exit(FHIR_NS, name);
57728    }
57729  }
57730
57731  protected void composeSearchParameterComponentComponentElements(SearchParameter.SearchParameterComponentComponent element) throws IOException {
57732    composeBackboneElementElements(element);
57733    if (element.hasDefinitionElement()) {
57734      composeCanonical("definition", element.getDefinitionElement());
57735    }
57736    if (element.hasExpressionElement()) {
57737      composeString("expression", element.getExpressionElement());
57738    }
57739  }
57740
57741  protected void composeServiceRequest(String name, ServiceRequest element) throws IOException {
57742    if (element != null) {
57743    composeResourceAttributes(element);
57744      xml.enter(FHIR_NS, name);
57745      composeServiceRequestElements(element);
57746      composeElementClose(element);
57747      xml.exit(FHIR_NS, name);
57748    }
57749  }
57750
57751  protected void composeServiceRequestElements(ServiceRequest element) throws IOException {
57752    composeDomainResourceElements(element);
57753    if (element.hasIdentifier()) { 
57754      for (Identifier e : element.getIdentifier()) 
57755          composeIdentifier("identifier", e);
57756    }
57757    if (element.hasInstantiatesCanonical()) { 
57758      for (CanonicalType e : element.getInstantiatesCanonical()) 
57759          composeCanonical("instantiatesCanonical", e);
57760    }
57761    if (element.hasInstantiatesUri()) { 
57762      for (UriType e : element.getInstantiatesUri()) 
57763          composeUri("instantiatesUri", e);
57764    }
57765    if (element.hasBasedOn()) { 
57766      for (Reference e : element.getBasedOn()) 
57767          composeReference("basedOn", e);
57768    }
57769    if (element.hasReplaces()) { 
57770      for (Reference e : element.getReplaces()) 
57771          composeReference("replaces", e);
57772    }
57773    if (element.hasRequisition()) {
57774      composeIdentifier("requisition", element.getRequisition());
57775    }
57776    if (element.hasStatusElement())
57777      composeEnumeration("status", element.getStatusElement(), new Enumerations.RequestStatusEnumFactory());
57778    if (element.hasIntentElement())
57779      composeEnumeration("intent", element.getIntentElement(), new Enumerations.RequestIntentEnumFactory());
57780    if (element.hasCategory()) { 
57781      for (CodeableConcept e : element.getCategory()) 
57782          composeCodeableConcept("category", e);
57783    }
57784    if (element.hasPriorityElement())
57785      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
57786    if (element.hasDoNotPerformElement()) {
57787      composeBoolean("doNotPerform", element.getDoNotPerformElement());
57788    }
57789    if (element.hasCode()) {
57790      composeCodeableReference("code", element.getCode());
57791    }
57792    if (element.hasOrderDetail()) { 
57793      for (ServiceRequest.ServiceRequestOrderDetailComponent e : element.getOrderDetail()) 
57794          composeServiceRequestOrderDetailComponent("orderDetail", e);
57795    }
57796    if (element.hasQuantity()) {
57797      composeType("quantity", element.getQuantity());
57798    }    if (element.hasSubject()) {
57799      composeReference("subject", element.getSubject());
57800    }
57801    if (element.hasFocus()) { 
57802      for (Reference e : element.getFocus()) 
57803          composeReference("focus", e);
57804    }
57805    if (element.hasEncounter()) {
57806      composeReference("encounter", element.getEncounter());
57807    }
57808    if (element.hasOccurrence()) {
57809      composeType("occurrence", element.getOccurrence());
57810    }    if (element.hasAsNeeded()) {
57811      composeType("asNeeded", element.getAsNeeded());
57812    }    if (element.hasAuthoredOnElement()) {
57813      composeDateTime("authoredOn", element.getAuthoredOnElement());
57814    }
57815    if (element.hasRequester()) {
57816      composeReference("requester", element.getRequester());
57817    }
57818    if (element.hasPerformerType()) {
57819      composeCodeableConcept("performerType", element.getPerformerType());
57820    }
57821    if (element.hasPerformer()) { 
57822      for (Reference e : element.getPerformer()) 
57823          composeReference("performer", e);
57824    }
57825    if (element.hasLocation()) { 
57826      for (CodeableReference e : element.getLocation()) 
57827          composeCodeableReference("location", e);
57828    }
57829    if (element.hasReason()) { 
57830      for (CodeableReference e : element.getReason()) 
57831          composeCodeableReference("reason", e);
57832    }
57833    if (element.hasInsurance()) { 
57834      for (Reference e : element.getInsurance()) 
57835          composeReference("insurance", e);
57836    }
57837    if (element.hasSupportingInfo()) { 
57838      for (CodeableReference e : element.getSupportingInfo()) 
57839          composeCodeableReference("supportingInfo", e);
57840    }
57841    if (element.hasSpecimen()) { 
57842      for (Reference e : element.getSpecimen()) 
57843          composeReference("specimen", e);
57844    }
57845    if (element.hasBodySite()) { 
57846      for (CodeableConcept e : element.getBodySite()) 
57847          composeCodeableConcept("bodySite", e);
57848    }
57849    if (element.hasBodyStructure()) {
57850      composeReference("bodyStructure", element.getBodyStructure());
57851    }
57852    if (element.hasNote()) { 
57853      for (Annotation e : element.getNote()) 
57854          composeAnnotation("note", e);
57855    }
57856    if (element.hasPatientInstruction()) { 
57857      for (ServiceRequest.ServiceRequestPatientInstructionComponent e : element.getPatientInstruction()) 
57858          composeServiceRequestPatientInstructionComponent("patientInstruction", e);
57859    }
57860    if (element.hasRelevantHistory()) { 
57861      for (Reference e : element.getRelevantHistory()) 
57862          composeReference("relevantHistory", e);
57863    }
57864  }
57865
57866  protected void composeServiceRequestOrderDetailComponent(String name, ServiceRequest.ServiceRequestOrderDetailComponent element) throws IOException {
57867    if (element != null) {
57868    composeElementAttributes(element);
57869      xml.enter(FHIR_NS, name);
57870      composeServiceRequestOrderDetailComponentElements(element);
57871      composeElementClose(element);
57872      xml.exit(FHIR_NS, name);
57873    }
57874  }
57875
57876  protected void composeServiceRequestOrderDetailComponentElements(ServiceRequest.ServiceRequestOrderDetailComponent element) throws IOException {
57877    composeBackboneElementElements(element);
57878    if (element.hasParameterFocus()) {
57879      composeCodeableReference("parameterFocus", element.getParameterFocus());
57880    }
57881    if (element.hasParameter()) {
57882      for (ServiceRequest.ServiceRequestOrderDetailParameterComponent e : element.getParameter()) 
57883          composeServiceRequestOrderDetailParameterComponent("parameter", e);
57884    }
57885  }
57886
57887  protected void composeServiceRequestOrderDetailParameterComponent(String name, ServiceRequest.ServiceRequestOrderDetailParameterComponent element) throws IOException {
57888    if (element != null) {
57889    composeElementAttributes(element);
57890      xml.enter(FHIR_NS, name);
57891      composeServiceRequestOrderDetailParameterComponentElements(element);
57892      composeElementClose(element);
57893      xml.exit(FHIR_NS, name);
57894    }
57895  }
57896
57897  protected void composeServiceRequestOrderDetailParameterComponentElements(ServiceRequest.ServiceRequestOrderDetailParameterComponent element) throws IOException {
57898    composeBackboneElementElements(element);
57899    if (element.hasCode()) {
57900      composeCodeableConcept("code", element.getCode());
57901    }
57902    if (element.hasValue()) {
57903      composeType("value", element.getValue());
57904    }  }
57905
57906  protected void composeServiceRequestPatientInstructionComponent(String name, ServiceRequest.ServiceRequestPatientInstructionComponent element) throws IOException {
57907    if (element != null) {
57908    composeElementAttributes(element);
57909      xml.enter(FHIR_NS, name);
57910      composeServiceRequestPatientInstructionComponentElements(element);
57911      composeElementClose(element);
57912      xml.exit(FHIR_NS, name);
57913    }
57914  }
57915
57916  protected void composeServiceRequestPatientInstructionComponentElements(ServiceRequest.ServiceRequestPatientInstructionComponent element) throws IOException {
57917    composeBackboneElementElements(element);
57918    if (element.hasInstruction()) {
57919      composeType("instruction", element.getInstruction());
57920    }  }
57921
57922  protected void composeSlot(String name, Slot element) throws IOException {
57923    if (element != null) {
57924    composeResourceAttributes(element);
57925      xml.enter(FHIR_NS, name);
57926      composeSlotElements(element);
57927      composeElementClose(element);
57928      xml.exit(FHIR_NS, name);
57929    }
57930  }
57931
57932  protected void composeSlotElements(Slot element) throws IOException {
57933    composeDomainResourceElements(element);
57934    if (element.hasIdentifier()) { 
57935      for (Identifier e : element.getIdentifier()) 
57936          composeIdentifier("identifier", e);
57937    }
57938    if (element.hasServiceCategory()) { 
57939      for (CodeableConcept e : element.getServiceCategory()) 
57940          composeCodeableConcept("serviceCategory", e);
57941    }
57942    if (element.hasServiceType()) { 
57943      for (CodeableReference e : element.getServiceType()) 
57944          composeCodeableReference("serviceType", e);
57945    }
57946    if (element.hasSpecialty()) { 
57947      for (CodeableConcept e : element.getSpecialty()) 
57948          composeCodeableConcept("specialty", e);
57949    }
57950    if (element.hasAppointmentType()) { 
57951      for (CodeableConcept e : element.getAppointmentType()) 
57952          composeCodeableConcept("appointmentType", e);
57953    }
57954    if (element.hasSchedule()) {
57955      composeReference("schedule", element.getSchedule());
57956    }
57957    if (element.hasStatusElement())
57958      composeEnumeration("status", element.getStatusElement(), new Slot.SlotStatusEnumFactory());
57959    if (element.hasStartElement()) {
57960      composeInstant("start", element.getStartElement());
57961    }
57962    if (element.hasEndElement()) {
57963      composeInstant("end", element.getEndElement());
57964    }
57965    if (element.hasOverbookedElement()) {
57966      composeBoolean("overbooked", element.getOverbookedElement());
57967    }
57968    if (element.hasCommentElement()) {
57969      composeString("comment", element.getCommentElement());
57970    }
57971  }
57972
57973  protected void composeSpecimen(String name, Specimen element) throws IOException {
57974    if (element != null) {
57975    composeResourceAttributes(element);
57976      xml.enter(FHIR_NS, name);
57977      composeSpecimenElements(element);
57978      composeElementClose(element);
57979      xml.exit(FHIR_NS, name);
57980    }
57981  }
57982
57983  protected void composeSpecimenElements(Specimen element) throws IOException {
57984    composeDomainResourceElements(element);
57985    if (element.hasIdentifier()) { 
57986      for (Identifier e : element.getIdentifier()) 
57987          composeIdentifier("identifier", e);
57988    }
57989    if (element.hasAccessionIdentifier()) {
57990      composeIdentifier("accessionIdentifier", element.getAccessionIdentifier());
57991    }
57992    if (element.hasStatusElement())
57993      composeEnumeration("status", element.getStatusElement(), new Specimen.SpecimenStatusEnumFactory());
57994    if (element.hasType()) {
57995      composeCodeableConcept("type", element.getType());
57996    }
57997    if (element.hasSubject()) {
57998      composeReference("subject", element.getSubject());
57999    }
58000    if (element.hasReceivedTimeElement()) {
58001      composeDateTime("receivedTime", element.getReceivedTimeElement());
58002    }
58003    if (element.hasParent()) { 
58004      for (Reference e : element.getParent()) 
58005          composeReference("parent", e);
58006    }
58007    if (element.hasRequest()) { 
58008      for (Reference e : element.getRequest()) 
58009          composeReference("request", e);
58010    }
58011    if (element.hasCombinedElement())
58012      composeEnumeration("combined", element.getCombinedElement(), new Specimen.SpecimenCombinedEnumFactory());
58013    if (element.hasRole()) { 
58014      for (CodeableConcept e : element.getRole()) 
58015          composeCodeableConcept("role", e);
58016    }
58017    if (element.hasFeature()) { 
58018      for (Specimen.SpecimenFeatureComponent e : element.getFeature()) 
58019          composeSpecimenFeatureComponent("feature", e);
58020    }
58021    if (element.hasCollection()) {
58022      composeSpecimenCollectionComponent("collection", element.getCollection());
58023    }
58024    if (element.hasProcessing()) { 
58025      for (Specimen.SpecimenProcessingComponent e : element.getProcessing()) 
58026          composeSpecimenProcessingComponent("processing", e);
58027    }
58028    if (element.hasContainer()) { 
58029      for (Specimen.SpecimenContainerComponent e : element.getContainer()) 
58030          composeSpecimenContainerComponent("container", e);
58031    }
58032    if (element.hasCondition()) { 
58033      for (CodeableConcept e : element.getCondition()) 
58034          composeCodeableConcept("condition", e);
58035    }
58036    if (element.hasNote()) { 
58037      for (Annotation e : element.getNote()) 
58038          composeAnnotation("note", e);
58039    }
58040  }
58041
58042  protected void composeSpecimenFeatureComponent(String name, Specimen.SpecimenFeatureComponent element) throws IOException {
58043    if (element != null) {
58044    composeElementAttributes(element);
58045      xml.enter(FHIR_NS, name);
58046      composeSpecimenFeatureComponentElements(element);
58047      composeElementClose(element);
58048      xml.exit(FHIR_NS, name);
58049    }
58050  }
58051
58052  protected void composeSpecimenFeatureComponentElements(Specimen.SpecimenFeatureComponent element) throws IOException {
58053    composeBackboneElementElements(element);
58054    if (element.hasType()) {
58055      composeCodeableConcept("type", element.getType());
58056    }
58057    if (element.hasDescriptionElement()) {
58058      composeString("description", element.getDescriptionElement());
58059    }
58060  }
58061
58062  protected void composeSpecimenCollectionComponent(String name, Specimen.SpecimenCollectionComponent element) throws IOException {
58063    if (element != null) {
58064    composeElementAttributes(element);
58065      xml.enter(FHIR_NS, name);
58066      composeSpecimenCollectionComponentElements(element);
58067      composeElementClose(element);
58068      xml.exit(FHIR_NS, name);
58069    }
58070  }
58071
58072  protected void composeSpecimenCollectionComponentElements(Specimen.SpecimenCollectionComponent element) throws IOException {
58073    composeBackboneElementElements(element);
58074    if (element.hasCollector()) {
58075      composeReference("collector", element.getCollector());
58076    }
58077    if (element.hasCollected()) {
58078      composeType("collected", element.getCollected());
58079    }    if (element.hasDuration()) {
58080      composeDuration("duration", element.getDuration());
58081    }
58082    if (element.hasQuantity()) {
58083      composeQuantity("quantity", element.getQuantity());
58084    }
58085    if (element.hasMethod()) {
58086      composeCodeableConcept("method", element.getMethod());
58087    }
58088    if (element.hasDevice()) {
58089      composeCodeableReference("device", element.getDevice());
58090    }
58091    if (element.hasProcedure()) {
58092      composeReference("procedure", element.getProcedure());
58093    }
58094    if (element.hasBodySite()) {
58095      composeCodeableReference("bodySite", element.getBodySite());
58096    }
58097    if (element.hasFastingStatus()) {
58098      composeType("fastingStatus", element.getFastingStatus());
58099    }  }
58100
58101  protected void composeSpecimenProcessingComponent(String name, Specimen.SpecimenProcessingComponent element) throws IOException {
58102    if (element != null) {
58103    composeElementAttributes(element);
58104      xml.enter(FHIR_NS, name);
58105      composeSpecimenProcessingComponentElements(element);
58106      composeElementClose(element);
58107      xml.exit(FHIR_NS, name);
58108    }
58109  }
58110
58111  protected void composeSpecimenProcessingComponentElements(Specimen.SpecimenProcessingComponent element) throws IOException {
58112    composeBackboneElementElements(element);
58113    if (element.hasDescriptionElement()) {
58114      composeString("description", element.getDescriptionElement());
58115    }
58116    if (element.hasMethod()) {
58117      composeCodeableConcept("method", element.getMethod());
58118    }
58119    if (element.hasAdditive()) { 
58120      for (Reference e : element.getAdditive()) 
58121          composeReference("additive", e);
58122    }
58123    if (element.hasTime()) {
58124      composeType("time", element.getTime());
58125    }  }
58126
58127  protected void composeSpecimenContainerComponent(String name, Specimen.SpecimenContainerComponent element) throws IOException {
58128    if (element != null) {
58129    composeElementAttributes(element);
58130      xml.enter(FHIR_NS, name);
58131      composeSpecimenContainerComponentElements(element);
58132      composeElementClose(element);
58133      xml.exit(FHIR_NS, name);
58134    }
58135  }
58136
58137  protected void composeSpecimenContainerComponentElements(Specimen.SpecimenContainerComponent element) throws IOException {
58138    composeBackboneElementElements(element);
58139    if (element.hasDevice()) {
58140      composeReference("device", element.getDevice());
58141    }
58142    if (element.hasLocation()) {
58143      composeReference("location", element.getLocation());
58144    }
58145    if (element.hasSpecimenQuantity()) {
58146      composeQuantity("specimenQuantity", element.getSpecimenQuantity());
58147    }
58148  }
58149
58150  protected void composeSpecimenDefinition(String name, SpecimenDefinition element) throws IOException {
58151    if (element != null) {
58152    composeResourceAttributes(element);
58153      xml.enter(FHIR_NS, name);
58154      composeSpecimenDefinitionElements(element);
58155      composeElementClose(element);
58156      xml.exit(FHIR_NS, name);
58157    }
58158  }
58159
58160  protected void composeSpecimenDefinitionElements(SpecimenDefinition element) throws IOException {
58161    composeDomainResourceElements(element);
58162    if (element.hasUrlElement()) {
58163      composeUri("url", element.getUrlElement());
58164    }
58165    if (element.hasIdentifier()) {
58166      composeIdentifier("identifier", element.getIdentifier());
58167    }
58168    if (element.hasVersionElement()) {
58169      composeString("version", element.getVersionElement());
58170    }
58171    if (element.hasVersionAlgorithm()) {
58172      composeType("versionAlgorithm", element.getVersionAlgorithm());
58173    }    if (element.hasNameElement()) {
58174      composeString("name", element.getNameElement());
58175    }
58176    if (element.hasTitleElement()) {
58177      composeString("title", element.getTitleElement());
58178    }
58179    if (element.hasDerivedFromCanonical()) { 
58180      for (CanonicalType e : element.getDerivedFromCanonical()) 
58181          composeCanonical("derivedFromCanonical", e);
58182    }
58183    if (element.hasDerivedFromUri()) { 
58184      for (UriType e : element.getDerivedFromUri()) 
58185          composeUri("derivedFromUri", e);
58186    }
58187    if (element.hasStatusElement())
58188      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
58189    if (element.hasExperimentalElement()) {
58190      composeBoolean("experimental", element.getExperimentalElement());
58191    }
58192    if (element.hasSubject()) {
58193      composeType("subject", element.getSubject());
58194    }    if (element.hasDateElement()) {
58195      composeDateTime("date", element.getDateElement());
58196    }
58197    if (element.hasPublisherElement()) {
58198      composeString("publisher", element.getPublisherElement());
58199    }
58200    if (element.hasContact()) { 
58201      for (ContactDetail e : element.getContact()) 
58202          composeContactDetail("contact", e);
58203    }
58204    if (element.hasDescriptionElement()) {
58205      composeMarkdown("description", element.getDescriptionElement());
58206    }
58207    if (element.hasUseContext()) { 
58208      for (UsageContext e : element.getUseContext()) 
58209          composeUsageContext("useContext", e);
58210    }
58211    if (element.hasJurisdiction()) { 
58212      for (CodeableConcept e : element.getJurisdiction()) 
58213          composeCodeableConcept("jurisdiction", e);
58214    }
58215    if (element.hasPurposeElement()) {
58216      composeMarkdown("purpose", element.getPurposeElement());
58217    }
58218    if (element.hasCopyrightElement()) {
58219      composeMarkdown("copyright", element.getCopyrightElement());
58220    }
58221    if (element.hasCopyrightLabelElement()) {
58222      composeString("copyrightLabel", element.getCopyrightLabelElement());
58223    }
58224    if (element.hasApprovalDateElement()) {
58225      composeDate("approvalDate", element.getApprovalDateElement());
58226    }
58227    if (element.hasLastReviewDateElement()) {
58228      composeDate("lastReviewDate", element.getLastReviewDateElement());
58229    }
58230    if (element.hasEffectivePeriod()) {
58231      composePeriod("effectivePeriod", element.getEffectivePeriod());
58232    }
58233    if (element.hasTypeCollected()) {
58234      composeCodeableConcept("typeCollected", element.getTypeCollected());
58235    }
58236    if (element.hasPatientPreparation()) { 
58237      for (CodeableConcept e : element.getPatientPreparation()) 
58238          composeCodeableConcept("patientPreparation", e);
58239    }
58240    if (element.hasTimeAspectElement()) {
58241      composeString("timeAspect", element.getTimeAspectElement());
58242    }
58243    if (element.hasCollection()) { 
58244      for (CodeableConcept e : element.getCollection()) 
58245          composeCodeableConcept("collection", e);
58246    }
58247    if (element.hasTypeTested()) { 
58248      for (SpecimenDefinition.SpecimenDefinitionTypeTestedComponent e : element.getTypeTested()) 
58249          composeSpecimenDefinitionTypeTestedComponent("typeTested", e);
58250    }
58251  }
58252
58253  protected void composeSpecimenDefinitionTypeTestedComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedComponent element) throws IOException {
58254    if (element != null) {
58255    composeElementAttributes(element);
58256      xml.enter(FHIR_NS, name);
58257      composeSpecimenDefinitionTypeTestedComponentElements(element);
58258      composeElementClose(element);
58259      xml.exit(FHIR_NS, name);
58260    }
58261  }
58262
58263  protected void composeSpecimenDefinitionTypeTestedComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedComponent element) throws IOException {
58264    composeBackboneElementElements(element);
58265    if (element.hasIsDerivedElement()) {
58266      composeBoolean("isDerived", element.getIsDerivedElement());
58267    }
58268    if (element.hasType()) {
58269      composeCodeableConcept("type", element.getType());
58270    }
58271    if (element.hasPreferenceElement())
58272      composeEnumeration("preference", element.getPreferenceElement(), new SpecimenDefinition.SpecimenContainedPreferenceEnumFactory());
58273    if (element.hasContainer()) {
58274      composeSpecimenDefinitionTypeTestedContainerComponent("container", element.getContainer());
58275    }
58276    if (element.hasRequirementElement()) {
58277      composeMarkdown("requirement", element.getRequirementElement());
58278    }
58279    if (element.hasRetentionTime()) {
58280      composeDuration("retentionTime", element.getRetentionTime());
58281    }
58282    if (element.hasSingleUseElement()) {
58283      composeBoolean("singleUse", element.getSingleUseElement());
58284    }
58285    if (element.hasRejectionCriterion()) { 
58286      for (CodeableConcept e : element.getRejectionCriterion()) 
58287          composeCodeableConcept("rejectionCriterion", e);
58288    }
58289    if (element.hasHandling()) { 
58290      for (SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent e : element.getHandling()) 
58291          composeSpecimenDefinitionTypeTestedHandlingComponent("handling", e);
58292    }
58293    if (element.hasTestingDestination()) { 
58294      for (CodeableConcept e : element.getTestingDestination()) 
58295          composeCodeableConcept("testingDestination", e);
58296    }
58297  }
58298
58299  protected void composeSpecimenDefinitionTypeTestedContainerComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent element) throws IOException {
58300    if (element != null) {
58301    composeElementAttributes(element);
58302      xml.enter(FHIR_NS, name);
58303      composeSpecimenDefinitionTypeTestedContainerComponentElements(element);
58304      composeElementClose(element);
58305      xml.exit(FHIR_NS, name);
58306    }
58307  }
58308
58309  protected void composeSpecimenDefinitionTypeTestedContainerComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent element) throws IOException {
58310    composeBackboneElementElements(element);
58311    if (element.hasMaterial()) {
58312      composeCodeableConcept("material", element.getMaterial());
58313    }
58314    if (element.hasType()) {
58315      composeCodeableConcept("type", element.getType());
58316    }
58317    if (element.hasCap()) {
58318      composeCodeableConcept("cap", element.getCap());
58319    }
58320    if (element.hasDescriptionElement()) {
58321      composeMarkdown("description", element.getDescriptionElement());
58322    }
58323    if (element.hasCapacity()) {
58324      composeQuantity("capacity", element.getCapacity());
58325    }
58326    if (element.hasMinimumVolume()) {
58327      composeType("minimumVolume", element.getMinimumVolume());
58328    }    if (element.hasAdditive()) { 
58329      for (SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent e : element.getAdditive()) 
58330          composeSpecimenDefinitionTypeTestedContainerAdditiveComponent("additive", e);
58331    }
58332    if (element.hasPreparationElement()) {
58333      composeMarkdown("preparation", element.getPreparationElement());
58334    }
58335  }
58336
58337  protected void composeSpecimenDefinitionTypeTestedContainerAdditiveComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent element) throws IOException {
58338    if (element != null) {
58339    composeElementAttributes(element);
58340      xml.enter(FHIR_NS, name);
58341      composeSpecimenDefinitionTypeTestedContainerAdditiveComponentElements(element);
58342      composeElementClose(element);
58343      xml.exit(FHIR_NS, name);
58344    }
58345  }
58346
58347  protected void composeSpecimenDefinitionTypeTestedContainerAdditiveComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent element) throws IOException {
58348    composeBackboneElementElements(element);
58349    if (element.hasAdditive()) {
58350      composeType("additive", element.getAdditive());
58351    }  }
58352
58353  protected void composeSpecimenDefinitionTypeTestedHandlingComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent element) throws IOException {
58354    if (element != null) {
58355    composeElementAttributes(element);
58356      xml.enter(FHIR_NS, name);
58357      composeSpecimenDefinitionTypeTestedHandlingComponentElements(element);
58358      composeElementClose(element);
58359      xml.exit(FHIR_NS, name);
58360    }
58361  }
58362
58363  protected void composeSpecimenDefinitionTypeTestedHandlingComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent element) throws IOException {
58364    composeBackboneElementElements(element);
58365    if (element.hasTemperatureQualifier()) {
58366      composeCodeableConcept("temperatureQualifier", element.getTemperatureQualifier());
58367    }
58368    if (element.hasTemperatureRange()) {
58369      composeRange("temperatureRange", element.getTemperatureRange());
58370    }
58371    if (element.hasMaxDuration()) {
58372      composeDuration("maxDuration", element.getMaxDuration());
58373    }
58374    if (element.hasInstructionElement()) {
58375      composeMarkdown("instruction", element.getInstructionElement());
58376    }
58377  }
58378
58379  protected void composeStructureDefinition(String name, StructureDefinition element) throws IOException {
58380    if (element != null) {
58381    composeResourceAttributes(element);
58382      xml.enter(FHIR_NS, name);
58383      composeStructureDefinitionElements(element);
58384      composeElementClose(element);
58385      xml.exit(FHIR_NS, name);
58386    }
58387  }
58388
58389  protected void composeStructureDefinitionElements(StructureDefinition element) throws IOException {
58390    composeCanonicalResourceElements(element);
58391    if (element.hasUrlElement()) {
58392      composeUri("url", element.getUrlElement());
58393    }
58394    if (element.hasIdentifier()) { 
58395      for (Identifier e : element.getIdentifier()) 
58396          composeIdentifier("identifier", e);
58397    }
58398    if (element.hasVersionElement()) {
58399      composeString("version", element.getVersionElement());
58400    }
58401    if (element.hasVersionAlgorithm()) {
58402      composeType("versionAlgorithm", element.getVersionAlgorithm());
58403    }    if (element.hasNameElement()) {
58404      composeString("name", element.getNameElement());
58405    }
58406    if (element.hasTitleElement()) {
58407      composeString("title", element.getTitleElement());
58408    }
58409    if (element.hasStatusElement())
58410      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
58411    if (element.hasExperimentalElement()) {
58412      composeBoolean("experimental", element.getExperimentalElement());
58413    }
58414    if (element.hasDateElement()) {
58415      composeDateTime("date", element.getDateElement());
58416    }
58417    if (element.hasPublisherElement()) {
58418      composeString("publisher", element.getPublisherElement());
58419    }
58420    if (element.hasContact()) { 
58421      for (ContactDetail e : element.getContact()) 
58422          composeContactDetail("contact", e);
58423    }
58424    if (element.hasDescriptionElement()) {
58425      composeMarkdown("description", element.getDescriptionElement());
58426    }
58427    if (element.hasUseContext()) { 
58428      for (UsageContext e : element.getUseContext()) 
58429          composeUsageContext("useContext", e);
58430    }
58431    if (element.hasJurisdiction()) { 
58432      for (CodeableConcept e : element.getJurisdiction()) 
58433          composeCodeableConcept("jurisdiction", e);
58434    }
58435    if (element.hasPurposeElement()) {
58436      composeMarkdown("purpose", element.getPurposeElement());
58437    }
58438    if (element.hasCopyrightElement()) {
58439      composeMarkdown("copyright", element.getCopyrightElement());
58440    }
58441    if (element.hasCopyrightLabelElement()) {
58442      composeString("copyrightLabel", element.getCopyrightLabelElement());
58443    }
58444    if (element.hasKeyword()) { 
58445      for (Coding e : element.getKeyword()) 
58446          composeCoding("keyword", e);
58447    }
58448    if (element.hasFhirVersionElement())
58449      composeEnumeration("fhirVersion", element.getFhirVersionElement(), new Enumerations.FHIRVersionEnumFactory());
58450    if (element.hasMapping()) { 
58451      for (StructureDefinition.StructureDefinitionMappingComponent e : element.getMapping()) 
58452          composeStructureDefinitionMappingComponent("mapping", e);
58453    }
58454    if (element.hasKindElement())
58455      composeEnumeration("kind", element.getKindElement(), new StructureDefinition.StructureDefinitionKindEnumFactory());
58456    if (element.hasAbstractElement()) {
58457      composeBoolean("abstract", element.getAbstractElement());
58458    }
58459    if (element.hasContext()) { 
58460      for (StructureDefinition.StructureDefinitionContextComponent e : element.getContext()) 
58461          composeStructureDefinitionContextComponent("context", e);
58462    }
58463    if (element.hasContextInvariant()) { 
58464      for (StringType e : element.getContextInvariant()) 
58465          composeString("contextInvariant", e);
58466    }
58467    if (element.hasTypeElement()) {
58468      composeUri("type", element.getTypeElement());
58469    }
58470    if (element.hasBaseDefinitionElement()) {
58471      composeCanonical("baseDefinition", element.getBaseDefinitionElement());
58472    }
58473    if (element.hasDerivationElement())
58474      composeEnumeration("derivation", element.getDerivationElement(), new StructureDefinition.TypeDerivationRuleEnumFactory());
58475    if (element.hasSnapshot()) {
58476      composeStructureDefinitionSnapshotComponent("snapshot", element.getSnapshot());
58477    }
58478    if (element.hasDifferential()) {
58479      composeStructureDefinitionDifferentialComponent("differential", element.getDifferential());
58480    }
58481  }
58482
58483  protected void composeStructureDefinitionMappingComponent(String name, StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
58484    if (element != null) {
58485    composeElementAttributes(element);
58486      xml.enter(FHIR_NS, name);
58487      composeStructureDefinitionMappingComponentElements(element);
58488      composeElementClose(element);
58489      xml.exit(FHIR_NS, name);
58490    }
58491  }
58492
58493  protected void composeStructureDefinitionMappingComponentElements(StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
58494    composeBackboneElementElements(element);
58495    if (element.hasIdentityElement()) {
58496      composeId("identity", element.getIdentityElement());
58497    }
58498    if (element.hasUriElement()) {
58499      composeUri("uri", element.getUriElement());
58500    }
58501    if (element.hasNameElement()) {
58502      composeString("name", element.getNameElement());
58503    }
58504    if (element.hasCommentElement()) {
58505      composeString("comment", element.getCommentElement());
58506    }
58507  }
58508
58509  protected void composeStructureDefinitionContextComponent(String name, StructureDefinition.StructureDefinitionContextComponent element) throws IOException {
58510    if (element != null) {
58511    composeElementAttributes(element);
58512      xml.enter(FHIR_NS, name);
58513      composeStructureDefinitionContextComponentElements(element);
58514      composeElementClose(element);
58515      xml.exit(FHIR_NS, name);
58516    }
58517  }
58518
58519  protected void composeStructureDefinitionContextComponentElements(StructureDefinition.StructureDefinitionContextComponent element) throws IOException {
58520    composeBackboneElementElements(element);
58521    if (element.hasTypeElement())
58522      composeEnumeration("type", element.getTypeElement(), new StructureDefinition.ExtensionContextTypeEnumFactory());
58523    if (element.hasExpressionElement()) {
58524      composeString("expression", element.getExpressionElement());
58525    }
58526  }
58527
58528  protected void composeStructureDefinitionSnapshotComponent(String name, StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
58529    if (element != null) {
58530    composeElementAttributes(element);
58531      xml.enter(FHIR_NS, name);
58532      composeStructureDefinitionSnapshotComponentElements(element);
58533      composeElementClose(element);
58534      xml.exit(FHIR_NS, name);
58535    }
58536  }
58537
58538  protected void composeStructureDefinitionSnapshotComponentElements(StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
58539    composeBackboneElementElements(element);
58540    if (element.hasElement()) { 
58541      for (ElementDefinition e : element.getElement()) 
58542          composeElementDefinition("element", e);
58543    }
58544  }
58545
58546  protected void composeStructureDefinitionDifferentialComponent(String name, StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
58547    if (element != null) {
58548    composeElementAttributes(element);
58549      xml.enter(FHIR_NS, name);
58550      composeStructureDefinitionDifferentialComponentElements(element);
58551      composeElementClose(element);
58552      xml.exit(FHIR_NS, name);
58553    }
58554  }
58555
58556  protected void composeStructureDefinitionDifferentialComponentElements(StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
58557    composeBackboneElementElements(element);
58558    if (element.hasElement()) { 
58559      for (ElementDefinition e : element.getElement()) 
58560          composeElementDefinition("element", e);
58561    }
58562  }
58563
58564  protected void composeStructureMap(String name, StructureMap element) throws IOException {
58565    if (element != null) {
58566    composeResourceAttributes(element);
58567      xml.enter(FHIR_NS, name);
58568      composeStructureMapElements(element);
58569      composeElementClose(element);
58570      xml.exit(FHIR_NS, name);
58571    }
58572  }
58573
58574  protected void composeStructureMapElements(StructureMap element) throws IOException {
58575    composeCanonicalResourceElements(element);
58576    if (element.hasUrlElement()) {
58577      composeUri("url", element.getUrlElement());
58578    }
58579    if (element.hasIdentifier()) { 
58580      for (Identifier e : element.getIdentifier()) 
58581          composeIdentifier("identifier", e);
58582    }
58583    if (element.hasVersionElement()) {
58584      composeString("version", element.getVersionElement());
58585    }
58586    if (element.hasVersionAlgorithm()) {
58587      composeType("versionAlgorithm", element.getVersionAlgorithm());
58588    }    if (element.hasNameElement()) {
58589      composeString("name", element.getNameElement());
58590    }
58591    if (element.hasTitleElement()) {
58592      composeString("title", element.getTitleElement());
58593    }
58594    if (element.hasStatusElement())
58595      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
58596    if (element.hasExperimentalElement()) {
58597      composeBoolean("experimental", element.getExperimentalElement());
58598    }
58599    if (element.hasDateElement()) {
58600      composeDateTime("date", element.getDateElement());
58601    }
58602    if (element.hasPublisherElement()) {
58603      composeString("publisher", element.getPublisherElement());
58604    }
58605    if (element.hasContact()) { 
58606      for (ContactDetail e : element.getContact()) 
58607          composeContactDetail("contact", e);
58608    }
58609    if (element.hasDescriptionElement()) {
58610      composeMarkdown("description", element.getDescriptionElement());
58611    }
58612    if (element.hasUseContext()) { 
58613      for (UsageContext e : element.getUseContext()) 
58614          composeUsageContext("useContext", e);
58615    }
58616    if (element.hasJurisdiction()) { 
58617      for (CodeableConcept e : element.getJurisdiction()) 
58618          composeCodeableConcept("jurisdiction", e);
58619    }
58620    if (element.hasPurposeElement()) {
58621      composeMarkdown("purpose", element.getPurposeElement());
58622    }
58623    if (element.hasCopyrightElement()) {
58624      composeMarkdown("copyright", element.getCopyrightElement());
58625    }
58626    if (element.hasCopyrightLabelElement()) {
58627      composeString("copyrightLabel", element.getCopyrightLabelElement());
58628    }
58629    if (element.hasStructure()) { 
58630      for (StructureMap.StructureMapStructureComponent e : element.getStructure()) 
58631          composeStructureMapStructureComponent("structure", e);
58632    }
58633    if (element.hasImport()) { 
58634      for (CanonicalType e : element.getImport()) 
58635          composeCanonical("import", e);
58636    }
58637    if (element.hasConst()) { 
58638      for (StructureMap.StructureMapConstComponent e : element.getConst()) 
58639          composeStructureMapConstComponent("const", e);
58640    }
58641    if (element.hasGroup()) { 
58642      for (StructureMap.StructureMapGroupComponent e : element.getGroup()) 
58643          composeStructureMapGroupComponent("group", e);
58644    }
58645  }
58646
58647  protected void composeStructureMapStructureComponent(String name, StructureMap.StructureMapStructureComponent element) throws IOException {
58648    if (element != null) {
58649    composeElementAttributes(element);
58650      xml.enter(FHIR_NS, name);
58651      composeStructureMapStructureComponentElements(element);
58652      composeElementClose(element);
58653      xml.exit(FHIR_NS, name);
58654    }
58655  }
58656
58657  protected void composeStructureMapStructureComponentElements(StructureMap.StructureMapStructureComponent element) throws IOException {
58658    composeBackboneElementElements(element);
58659    if (element.hasUrlElement()) {
58660      composeCanonical("url", element.getUrlElement());
58661    }
58662    if (element.hasModeElement())
58663      composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapModelModeEnumFactory());
58664    if (element.hasAliasElement()) {
58665      composeString("alias", element.getAliasElement());
58666    }
58667    if (element.hasDocumentationElement()) {
58668      composeString("documentation", element.getDocumentationElement());
58669    }
58670  }
58671
58672  protected void composeStructureMapConstComponent(String name, StructureMap.StructureMapConstComponent element) throws IOException {
58673    if (element != null) {
58674    composeElementAttributes(element);
58675      xml.enter(FHIR_NS, name);
58676      composeStructureMapConstComponentElements(element);
58677      composeElementClose(element);
58678      xml.exit(FHIR_NS, name);
58679    }
58680  }
58681
58682  protected void composeStructureMapConstComponentElements(StructureMap.StructureMapConstComponent element) throws IOException {
58683    composeBackboneElementElements(element);
58684    if (element.hasNameElement()) {
58685      composeId("name", element.getNameElement());
58686    }
58687    if (element.hasValueElement()) {
58688      composeString("value", element.getValueElement());
58689    }
58690  }
58691
58692  protected void composeStructureMapGroupComponent(String name, StructureMap.StructureMapGroupComponent element) throws IOException {
58693    if (element != null) {
58694    composeElementAttributes(element);
58695      xml.enter(FHIR_NS, name);
58696      composeStructureMapGroupComponentElements(element);
58697      composeElementClose(element);
58698      xml.exit(FHIR_NS, name);
58699    }
58700  }
58701
58702  protected void composeStructureMapGroupComponentElements(StructureMap.StructureMapGroupComponent element) throws IOException {
58703    composeBackboneElementElements(element);
58704    if (element.hasNameElement()) {
58705      composeId("name", element.getNameElement());
58706    }
58707    if (element.hasExtendsElement()) {
58708      composeId("extends", element.getExtendsElement());
58709    }
58710    if (element.hasTypeModeElement())
58711      composeEnumeration("typeMode", element.getTypeModeElement(), new StructureMap.StructureMapGroupTypeModeEnumFactory());
58712    if (element.hasDocumentationElement()) {
58713      composeString("documentation", element.getDocumentationElement());
58714    }
58715    if (element.hasInput()) { 
58716      for (StructureMap.StructureMapGroupInputComponent e : element.getInput()) 
58717          composeStructureMapGroupInputComponent("input", e);
58718    }
58719    if (element.hasRule()) { 
58720      for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
58721          composeStructureMapGroupRuleComponent("rule", e);
58722    }
58723  }
58724
58725  protected void composeStructureMapGroupInputComponent(String name, StructureMap.StructureMapGroupInputComponent element) throws IOException {
58726    if (element != null) {
58727    composeElementAttributes(element);
58728      xml.enter(FHIR_NS, name);
58729      composeStructureMapGroupInputComponentElements(element);
58730      composeElementClose(element);
58731      xml.exit(FHIR_NS, name);
58732    }
58733  }
58734
58735  protected void composeStructureMapGroupInputComponentElements(StructureMap.StructureMapGroupInputComponent element) throws IOException {
58736    composeBackboneElementElements(element);
58737    if (element.hasNameElement()) {
58738      composeId("name", element.getNameElement());
58739    }
58740    if (element.hasTypeElement()) {
58741      composeString("type", element.getTypeElement());
58742    }
58743    if (element.hasModeElement())
58744      composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapInputModeEnumFactory());
58745    if (element.hasDocumentationElement()) {
58746      composeString("documentation", element.getDocumentationElement());
58747    }
58748  }
58749
58750  protected void composeStructureMapGroupRuleComponent(String name, StructureMap.StructureMapGroupRuleComponent element) throws IOException {
58751    if (element != null) {
58752    composeElementAttributes(element);
58753      xml.enter(FHIR_NS, name);
58754      composeStructureMapGroupRuleComponentElements(element);
58755      composeElementClose(element);
58756      xml.exit(FHIR_NS, name);
58757    }
58758  }
58759
58760  protected void composeStructureMapGroupRuleComponentElements(StructureMap.StructureMapGroupRuleComponent element) throws IOException {
58761    composeBackboneElementElements(element);
58762    if (element.hasNameElement()) {
58763      composeId("name", element.getNameElement());
58764    }
58765    if (element.hasSource()) { 
58766      for (StructureMap.StructureMapGroupRuleSourceComponent e : element.getSource()) 
58767          composeStructureMapGroupRuleSourceComponent("source", e);
58768    }
58769    if (element.hasTarget()) { 
58770      for (StructureMap.StructureMapGroupRuleTargetComponent e : element.getTarget()) 
58771          composeStructureMapGroupRuleTargetComponent("target", e);
58772    }
58773    if (element.hasRule()) { 
58774      for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
58775          composeStructureMapGroupRuleComponent("rule", e);
58776    }
58777    if (element.hasDependent()) { 
58778      for (StructureMap.StructureMapGroupRuleDependentComponent e : element.getDependent()) 
58779          composeStructureMapGroupRuleDependentComponent("dependent", e);
58780    }
58781    if (element.hasDocumentationElement()) {
58782      composeString("documentation", element.getDocumentationElement());
58783    }
58784  }
58785
58786  protected void composeStructureMapGroupRuleSourceComponent(String name, StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
58787    if (element != null) {
58788    composeElementAttributes(element);
58789      xml.enter(FHIR_NS, name);
58790      composeStructureMapGroupRuleSourceComponentElements(element);
58791      composeElementClose(element);
58792      xml.exit(FHIR_NS, name);
58793    }
58794  }
58795
58796  protected void composeStructureMapGroupRuleSourceComponentElements(StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
58797    composeBackboneElementElements(element);
58798    if (element.hasContextElement()) {
58799      composeId("context", element.getContextElement());
58800    }
58801    if (element.hasMinElement()) {
58802      composeInteger("min", element.getMinElement());
58803    }
58804    if (element.hasMaxElement()) {
58805      composeString("max", element.getMaxElement());
58806    }
58807    if (element.hasTypeElement()) {
58808      composeString("type", element.getTypeElement());
58809    }
58810    if (element.hasDefaultValueElement()) {
58811      composeString("defaultValue", element.getDefaultValueElement());
58812    }
58813    if (element.hasElementElement()) {
58814      composeString("element", element.getElementElement());
58815    }
58816    if (element.hasListModeElement())
58817      composeEnumeration("listMode", element.getListModeElement(), new StructureMap.StructureMapSourceListModeEnumFactory());
58818    if (element.hasVariableElement()) {
58819      composeId("variable", element.getVariableElement());
58820    }
58821    if (element.hasConditionElement()) {
58822      composeString("condition", element.getConditionElement());
58823    }
58824    if (element.hasCheckElement()) {
58825      composeString("check", element.getCheckElement());
58826    }
58827    if (element.hasLogMessageElement()) {
58828      composeString("logMessage", element.getLogMessageElement());
58829    }
58830  }
58831
58832  protected void composeStructureMapGroupRuleTargetComponent(String name, StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
58833    if (element != null) {
58834    composeElementAttributes(element);
58835      xml.enter(FHIR_NS, name);
58836      composeStructureMapGroupRuleTargetComponentElements(element);
58837      composeElementClose(element);
58838      xml.exit(FHIR_NS, name);
58839    }
58840  }
58841
58842  protected void composeStructureMapGroupRuleTargetComponentElements(StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
58843    composeBackboneElementElements(element);
58844    if (element.hasContextElement()) {
58845      composeString("context", element.getContextElement());
58846    }
58847    if (element.hasElementElement()) {
58848      composeString("element", element.getElementElement());
58849    }
58850    if (element.hasVariableElement()) {
58851      composeId("variable", element.getVariableElement());
58852    }
58853      if (element.hasListMode()) 
58854        for (Enumeration<StructureMap.StructureMapTargetListMode> e : element.getListMode()) 
58855          composeEnumeration("listMode", e, new StructureMap.StructureMapTargetListModeEnumFactory());
58856    if (element.hasListRuleIdElement()) {
58857      composeId("listRuleId", element.getListRuleIdElement());
58858    }
58859    if (element.hasTransformElement())
58860      composeEnumeration("transform", element.getTransformElement(), new StructureMap.StructureMapTransformEnumFactory());
58861    if (element.hasParameter()) { 
58862      for (StructureMap.StructureMapGroupRuleTargetParameterComponent e : element.getParameter()) 
58863          composeStructureMapGroupRuleTargetParameterComponent("parameter", e);
58864    }
58865  }
58866
58867  protected void composeStructureMapGroupRuleTargetParameterComponent(String name, StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
58868    if (element != null) {
58869    composeElementAttributes(element);
58870      xml.enter(FHIR_NS, name);
58871      composeStructureMapGroupRuleTargetParameterComponentElements(element);
58872      composeElementClose(element);
58873      xml.exit(FHIR_NS, name);
58874    }
58875  }
58876
58877  protected void composeStructureMapGroupRuleTargetParameterComponentElements(StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
58878    composeBackboneElementElements(element);
58879    if (element.hasValue()) {
58880      composeType("value", element.getValue());
58881    }  }
58882
58883  protected void composeStructureMapGroupRuleDependentComponent(String name, StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
58884    if (element != null) {
58885    composeElementAttributes(element);
58886      xml.enter(FHIR_NS, name);
58887      composeStructureMapGroupRuleDependentComponentElements(element);
58888      composeElementClose(element);
58889      xml.exit(FHIR_NS, name);
58890    }
58891  }
58892
58893  protected void composeStructureMapGroupRuleDependentComponentElements(StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
58894    composeBackboneElementElements(element);
58895    if (element.hasNameElement()) {
58896      composeId("name", element.getNameElement());
58897    }
58898    if (element.hasParameter()) { 
58899      for (StructureMap.StructureMapGroupRuleTargetParameterComponent e : element.getParameter()) 
58900          composeStructureMapGroupRuleTargetParameterComponent("parameter", e);
58901    }
58902  }
58903
58904  protected void composeSubscription(String name, Subscription element) throws IOException {
58905    if (element != null) {
58906    composeResourceAttributes(element);
58907      xml.enter(FHIR_NS, name);
58908      composeSubscriptionElements(element);
58909      composeElementClose(element);
58910      xml.exit(FHIR_NS, name);
58911    }
58912  }
58913
58914  protected void composeSubscriptionElements(Subscription element) throws IOException {
58915    composeDomainResourceElements(element);
58916    if (element.hasIdentifier()) { 
58917      for (Identifier e : element.getIdentifier()) 
58918          composeIdentifier("identifier", e);
58919    }
58920    if (element.hasNameElement()) {
58921      composeString("name", element.getNameElement());
58922    }
58923    if (element.hasStatusElement())
58924      composeEnumeration("status", element.getStatusElement(), new Enumerations.SubscriptionStatusCodesEnumFactory());
58925    if (element.hasTopicElement()) {
58926      composeCanonical("topic", element.getTopicElement());
58927    }
58928    if (element.hasContact()) { 
58929      for (ContactPoint e : element.getContact()) 
58930          composeContactPoint("contact", e);
58931    }
58932    if (element.hasEndElement()) {
58933      composeInstant("end", element.getEndElement());
58934    }
58935    if (element.hasManagingEntity()) {
58936      composeReference("managingEntity", element.getManagingEntity());
58937    }
58938    if (element.hasReasonElement()) {
58939      composeString("reason", element.getReasonElement());
58940    }
58941    if (element.hasFilterBy()) { 
58942      for (Subscription.SubscriptionFilterByComponent e : element.getFilterBy()) 
58943          composeSubscriptionFilterByComponent("filterBy", e);
58944    }
58945    if (element.hasChannelType()) {
58946      composeCoding("channelType", element.getChannelType());
58947    }
58948    if (element.hasEndpointElement()) {
58949      composeUrl("endpoint", element.getEndpointElement());
58950    }
58951    if (element.hasParameter()) { 
58952      for (Subscription.SubscriptionParameterComponent e : element.getParameter()) 
58953          composeSubscriptionParameterComponent("parameter", e);
58954    }
58955    if (element.hasHeartbeatPeriodElement()) {
58956      composeUnsignedInt("heartbeatPeriod", element.getHeartbeatPeriodElement());
58957    }
58958    if (element.hasTimeoutElement()) {
58959      composeUnsignedInt("timeout", element.getTimeoutElement());
58960    }
58961    if (element.hasContentTypeElement()) {
58962      composeCode("contentType", element.getContentTypeElement());
58963    }
58964    if (element.hasContentElement())
58965      composeEnumeration("content", element.getContentElement(), new Subscription.SubscriptionPayloadContentEnumFactory());
58966    if (element.hasMaxCountElement()) {
58967      composePositiveInt("maxCount", element.getMaxCountElement());
58968    }
58969  }
58970
58971  protected void composeSubscriptionFilterByComponent(String name, Subscription.SubscriptionFilterByComponent element) throws IOException {
58972    if (element != null) {
58973    composeElementAttributes(element);
58974      xml.enter(FHIR_NS, name);
58975      composeSubscriptionFilterByComponentElements(element);
58976      composeElementClose(element);
58977      xml.exit(FHIR_NS, name);
58978    }
58979  }
58980
58981  protected void composeSubscriptionFilterByComponentElements(Subscription.SubscriptionFilterByComponent element) throws IOException {
58982    composeBackboneElementElements(element);
58983    if (element.hasResourceTypeElement()) {
58984      composeUri("resourceType", element.getResourceTypeElement());
58985    }
58986    if (element.hasFilterParameterElement()) {
58987      composeString("filterParameter", element.getFilterParameterElement());
58988    }
58989    if (element.hasComparatorElement())
58990      composeEnumeration("comparator", element.getComparatorElement(), new Enumerations.SearchComparatorEnumFactory());
58991    if (element.hasModifierElement())
58992      composeEnumeration("modifier", element.getModifierElement(), new Enumerations.SearchModifierCodeEnumFactory());
58993    if (element.hasValueElement()) {
58994      composeString("value", element.getValueElement());
58995    }
58996  }
58997
58998  protected void composeSubscriptionParameterComponent(String name, Subscription.SubscriptionParameterComponent element) throws IOException {
58999    if (element != null) {
59000    composeElementAttributes(element);
59001      xml.enter(FHIR_NS, name);
59002      composeSubscriptionParameterComponentElements(element);
59003      composeElementClose(element);
59004      xml.exit(FHIR_NS, name);
59005    }
59006  }
59007
59008  protected void composeSubscriptionParameterComponentElements(Subscription.SubscriptionParameterComponent element) throws IOException {
59009    composeBackboneElementElements(element);
59010    if (element.hasNameElement()) {
59011      composeString("name", element.getNameElement());
59012    }
59013    if (element.hasValueElement()) {
59014      composeString("value", element.getValueElement());
59015    }
59016  }
59017
59018  protected void composeSubscriptionStatus(String name, SubscriptionStatus element) throws IOException {
59019    if (element != null) {
59020    composeResourceAttributes(element);
59021      xml.enter(FHIR_NS, name);
59022      composeSubscriptionStatusElements(element);
59023      composeElementClose(element);
59024      xml.exit(FHIR_NS, name);
59025    }
59026  }
59027
59028  protected void composeSubscriptionStatusElements(SubscriptionStatus element) throws IOException {
59029    composeDomainResourceElements(element);
59030    if (element.hasStatusElement())
59031      composeEnumeration("status", element.getStatusElement(), new Enumerations.SubscriptionStatusCodesEnumFactory());
59032    if (element.hasTypeElement())
59033      composeEnumeration("type", element.getTypeElement(), new SubscriptionStatus.SubscriptionNotificationTypeEnumFactory());
59034    if (element.hasEventsSinceSubscriptionStartElement()) {
59035      composeInteger64("eventsSinceSubscriptionStart", element.getEventsSinceSubscriptionStartElement());
59036    }
59037    if (element.hasNotificationEvent()) { 
59038      for (SubscriptionStatus.SubscriptionStatusNotificationEventComponent e : element.getNotificationEvent()) 
59039          composeSubscriptionStatusNotificationEventComponent("notificationEvent", e);
59040    }
59041    if (element.hasSubscription()) {
59042      composeReference("subscription", element.getSubscription());
59043    }
59044    if (element.hasTopicElement()) {
59045      composeCanonical("topic", element.getTopicElement());
59046    }
59047    if (element.hasError()) { 
59048      for (CodeableConcept e : element.getError()) 
59049          composeCodeableConcept("error", e);
59050    }
59051  }
59052
59053  protected void composeSubscriptionStatusNotificationEventComponent(String name, SubscriptionStatus.SubscriptionStatusNotificationEventComponent element) throws IOException {
59054    if (element != null) {
59055    composeElementAttributes(element);
59056      xml.enter(FHIR_NS, name);
59057      composeSubscriptionStatusNotificationEventComponentElements(element);
59058      composeElementClose(element);
59059      xml.exit(FHIR_NS, name);
59060    }
59061  }
59062
59063  protected void composeSubscriptionStatusNotificationEventComponentElements(SubscriptionStatus.SubscriptionStatusNotificationEventComponent element) throws IOException {
59064    composeBackboneElementElements(element);
59065    if (element.hasEventNumberElement()) {
59066      composeInteger64("eventNumber", element.getEventNumberElement());
59067    }
59068    if (element.hasTimestampElement()) {
59069      composeInstant("timestamp", element.getTimestampElement());
59070    }
59071    if (element.hasFocus()) {
59072      composeReference("focus", element.getFocus());
59073    }
59074    if (element.hasAdditionalContext()) { 
59075      for (Reference e : element.getAdditionalContext()) 
59076          composeReference("additionalContext", e);
59077    }
59078  }
59079
59080  protected void composeSubscriptionTopic(String name, SubscriptionTopic element) throws IOException {
59081    if (element != null) {
59082    composeResourceAttributes(element);
59083      xml.enter(FHIR_NS, name);
59084      composeSubscriptionTopicElements(element);
59085      composeElementClose(element);
59086      xml.exit(FHIR_NS, name);
59087    }
59088  }
59089
59090  protected void composeSubscriptionTopicElements(SubscriptionTopic element) throws IOException {
59091    composeCanonicalResourceElements(element);
59092    if (element.hasUrlElement()) {
59093      composeUri("url", element.getUrlElement());
59094    }
59095    if (element.hasIdentifier()) { 
59096      for (Identifier e : element.getIdentifier()) 
59097          composeIdentifier("identifier", e);
59098    }
59099    if (element.hasVersionElement()) {
59100      composeString("version", element.getVersionElement());
59101    }
59102    if (element.hasVersionAlgorithm()) {
59103      composeType("versionAlgorithm", element.getVersionAlgorithm());
59104    }    if (element.hasNameElement()) {
59105      composeString("name", element.getNameElement());
59106    }
59107    if (element.hasTitleElement()) {
59108      composeString("title", element.getTitleElement());
59109    }
59110    if (element.hasDerivedFrom()) { 
59111      for (CanonicalType e : element.getDerivedFrom()) 
59112          composeCanonical("derivedFrom", e);
59113    }
59114    if (element.hasStatusElement())
59115      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
59116    if (element.hasExperimentalElement()) {
59117      composeBoolean("experimental", element.getExperimentalElement());
59118    }
59119    if (element.hasDateElement()) {
59120      composeDateTime("date", element.getDateElement());
59121    }
59122    if (element.hasPublisherElement()) {
59123      composeString("publisher", element.getPublisherElement());
59124    }
59125    if (element.hasContact()) { 
59126      for (ContactDetail e : element.getContact()) 
59127          composeContactDetail("contact", e);
59128    }
59129    if (element.hasDescriptionElement()) {
59130      composeMarkdown("description", element.getDescriptionElement());
59131    }
59132    if (element.hasUseContext()) { 
59133      for (UsageContext e : element.getUseContext()) 
59134          composeUsageContext("useContext", e);
59135    }
59136    if (element.hasJurisdiction()) { 
59137      for (CodeableConcept e : element.getJurisdiction()) 
59138          composeCodeableConcept("jurisdiction", e);
59139    }
59140    if (element.hasPurposeElement()) {
59141      composeMarkdown("purpose", element.getPurposeElement());
59142    }
59143    if (element.hasCopyrightElement()) {
59144      composeMarkdown("copyright", element.getCopyrightElement());
59145    }
59146    if (element.hasCopyrightLabelElement()) {
59147      composeString("copyrightLabel", element.getCopyrightLabelElement());
59148    }
59149    if (element.hasApprovalDateElement()) {
59150      composeDate("approvalDate", element.getApprovalDateElement());
59151    }
59152    if (element.hasLastReviewDateElement()) {
59153      composeDate("lastReviewDate", element.getLastReviewDateElement());
59154    }
59155    if (element.hasEffectivePeriod()) {
59156      composePeriod("effectivePeriod", element.getEffectivePeriod());
59157    }
59158    if (element.hasResourceTrigger()) { 
59159      for (SubscriptionTopic.SubscriptionTopicResourceTriggerComponent e : element.getResourceTrigger()) 
59160          composeSubscriptionTopicResourceTriggerComponent("resourceTrigger", e);
59161    }
59162    if (element.hasEventTrigger()) { 
59163      for (SubscriptionTopic.SubscriptionTopicEventTriggerComponent e : element.getEventTrigger()) 
59164          composeSubscriptionTopicEventTriggerComponent("eventTrigger", e);
59165    }
59166    if (element.hasCanFilterBy()) { 
59167      for (SubscriptionTopic.SubscriptionTopicCanFilterByComponent e : element.getCanFilterBy()) 
59168          composeSubscriptionTopicCanFilterByComponent("canFilterBy", e);
59169    }
59170    if (element.hasNotificationShape()) { 
59171      for (SubscriptionTopic.SubscriptionTopicNotificationShapeComponent e : element.getNotificationShape()) 
59172          composeSubscriptionTopicNotificationShapeComponent("notificationShape", e);
59173    }
59174  }
59175
59176  protected void composeSubscriptionTopicResourceTriggerComponent(String name, SubscriptionTopic.SubscriptionTopicResourceTriggerComponent element) throws IOException {
59177    if (element != null) {
59178    composeElementAttributes(element);
59179      xml.enter(FHIR_NS, name);
59180      composeSubscriptionTopicResourceTriggerComponentElements(element);
59181      composeElementClose(element);
59182      xml.exit(FHIR_NS, name);
59183    }
59184  }
59185
59186  protected void composeSubscriptionTopicResourceTriggerComponentElements(SubscriptionTopic.SubscriptionTopicResourceTriggerComponent element) throws IOException {
59187    composeBackboneElementElements(element);
59188    if (element.hasDescriptionElement()) {
59189      composeMarkdown("description", element.getDescriptionElement());
59190    }
59191    if (element.hasResourceElement()) {
59192      composeUri("resource", element.getResourceElement());
59193    }
59194      if (element.hasSupportedInteraction()) 
59195        for (Enumeration<SubscriptionTopic.InteractionTrigger> e : element.getSupportedInteraction()) 
59196          composeEnumeration("supportedInteraction", e, new SubscriptionTopic.InteractionTriggerEnumFactory());
59197    if (element.hasQueryCriteria()) {
59198      composeSubscriptionTopicResourceTriggerQueryCriteriaComponent("queryCriteria", element.getQueryCriteria());
59199    }
59200    if (element.hasFhirPathCriteriaElement()) {
59201      composeString("fhirPathCriteria", element.getFhirPathCriteriaElement());
59202    }
59203  }
59204
59205  protected void composeSubscriptionTopicResourceTriggerQueryCriteriaComponent(String name, SubscriptionTopic.SubscriptionTopicResourceTriggerQueryCriteriaComponent element) throws IOException {
59206    if (element != null) {
59207    composeElementAttributes(element);
59208      xml.enter(FHIR_NS, name);
59209      composeSubscriptionTopicResourceTriggerQueryCriteriaComponentElements(element);
59210      composeElementClose(element);
59211      xml.exit(FHIR_NS, name);
59212    }
59213  }
59214
59215  protected void composeSubscriptionTopicResourceTriggerQueryCriteriaComponentElements(SubscriptionTopic.SubscriptionTopicResourceTriggerQueryCriteriaComponent element) throws IOException {
59216    composeBackboneElementElements(element);
59217    if (element.hasPreviousElement()) {
59218      composeString("previous", element.getPreviousElement());
59219    }
59220    if (element.hasResultForCreateElement())
59221      composeEnumeration("resultForCreate", element.getResultForCreateElement(), new SubscriptionTopic.CriteriaNotExistsBehaviorEnumFactory());
59222    if (element.hasCurrentElement()) {
59223      composeString("current", element.getCurrentElement());
59224    }
59225    if (element.hasResultForDeleteElement())
59226      composeEnumeration("resultForDelete", element.getResultForDeleteElement(), new SubscriptionTopic.CriteriaNotExistsBehaviorEnumFactory());
59227    if (element.hasRequireBothElement()) {
59228      composeBoolean("requireBoth", element.getRequireBothElement());
59229    }
59230  }
59231
59232  protected void composeSubscriptionTopicEventTriggerComponent(String name, SubscriptionTopic.SubscriptionTopicEventTriggerComponent element) throws IOException {
59233    if (element != null) {
59234    composeElementAttributes(element);
59235      xml.enter(FHIR_NS, name);
59236      composeSubscriptionTopicEventTriggerComponentElements(element);
59237      composeElementClose(element);
59238      xml.exit(FHIR_NS, name);
59239    }
59240  }
59241
59242  protected void composeSubscriptionTopicEventTriggerComponentElements(SubscriptionTopic.SubscriptionTopicEventTriggerComponent element) throws IOException {
59243    composeBackboneElementElements(element);
59244    if (element.hasDescriptionElement()) {
59245      composeMarkdown("description", element.getDescriptionElement());
59246    }
59247    if (element.hasEvent()) {
59248      composeCodeableConcept("event", element.getEvent());
59249    }
59250    if (element.hasResourceElement()) {
59251      composeUri("resource", element.getResourceElement());
59252    }
59253  }
59254
59255  protected void composeSubscriptionTopicCanFilterByComponent(String name, SubscriptionTopic.SubscriptionTopicCanFilterByComponent element) throws IOException {
59256    if (element != null) {
59257    composeElementAttributes(element);
59258      xml.enter(FHIR_NS, name);
59259      composeSubscriptionTopicCanFilterByComponentElements(element);
59260      composeElementClose(element);
59261      xml.exit(FHIR_NS, name);
59262    }
59263  }
59264
59265  protected void composeSubscriptionTopicCanFilterByComponentElements(SubscriptionTopic.SubscriptionTopicCanFilterByComponent element) throws IOException {
59266    composeBackboneElementElements(element);
59267    if (element.hasDescriptionElement()) {
59268      composeMarkdown("description", element.getDescriptionElement());
59269    }
59270    if (element.hasResourceElement()) {
59271      composeUri("resource", element.getResourceElement());
59272    }
59273    if (element.hasFilterParameterElement()) {
59274      composeString("filterParameter", element.getFilterParameterElement());
59275    }
59276    if (element.hasFilterDefinitionElement()) {
59277      composeUri("filterDefinition", element.getFilterDefinitionElement());
59278    }
59279      if (element.hasComparator()) 
59280        for (Enumeration<Enumerations.SearchComparator> e : element.getComparator()) 
59281          composeEnumeration("comparator", e, new Enumerations.SearchComparatorEnumFactory());
59282      if (element.hasModifier()) 
59283        for (Enumeration<Enumerations.SearchModifierCode> e : element.getModifier()) 
59284          composeEnumeration("modifier", e, new Enumerations.SearchModifierCodeEnumFactory());
59285  }
59286
59287  protected void composeSubscriptionTopicNotificationShapeComponent(String name, SubscriptionTopic.SubscriptionTopicNotificationShapeComponent element) throws IOException {
59288    if (element != null) {
59289    composeElementAttributes(element);
59290      xml.enter(FHIR_NS, name);
59291      composeSubscriptionTopicNotificationShapeComponentElements(element);
59292      composeElementClose(element);
59293      xml.exit(FHIR_NS, name);
59294    }
59295  }
59296
59297  protected void composeSubscriptionTopicNotificationShapeComponentElements(SubscriptionTopic.SubscriptionTopicNotificationShapeComponent element) throws IOException {
59298    composeBackboneElementElements(element);
59299    if (element.hasResourceElement()) {
59300      composeUri("resource", element.getResourceElement());
59301    }
59302    if (element.hasInclude()) { 
59303      for (StringType e : element.getInclude()) 
59304          composeString("include", e);
59305    }
59306    if (element.hasRevInclude()) { 
59307      for (StringType e : element.getRevInclude()) 
59308          composeString("revInclude", e);
59309    }
59310  }
59311
59312  protected void composeSubstance(String name, Substance element) throws IOException {
59313    if (element != null) {
59314    composeResourceAttributes(element);
59315      xml.enter(FHIR_NS, name);
59316      composeSubstanceElements(element);
59317      composeElementClose(element);
59318      xml.exit(FHIR_NS, name);
59319    }
59320  }
59321
59322  protected void composeSubstanceElements(Substance element) throws IOException {
59323    composeDomainResourceElements(element);
59324    if (element.hasIdentifier()) { 
59325      for (Identifier e : element.getIdentifier()) 
59326          composeIdentifier("identifier", e);
59327    }
59328    if (element.hasInstanceElement()) {
59329      composeBoolean("instance", element.getInstanceElement());
59330    }
59331    if (element.hasStatusElement())
59332      composeEnumeration("status", element.getStatusElement(), new Substance.FHIRSubstanceStatusEnumFactory());
59333    if (element.hasCategory()) { 
59334      for (CodeableConcept e : element.getCategory()) 
59335          composeCodeableConcept("category", e);
59336    }
59337    if (element.hasCode()) {
59338      composeCodeableReference("code", element.getCode());
59339    }
59340    if (element.hasDescriptionElement()) {
59341      composeMarkdown("description", element.getDescriptionElement());
59342    }
59343    if (element.hasExpiryElement()) {
59344      composeDateTime("expiry", element.getExpiryElement());
59345    }
59346    if (element.hasQuantity()) {
59347      composeQuantity("quantity", element.getQuantity());
59348    }
59349    if (element.hasIngredient()) { 
59350      for (Substance.SubstanceIngredientComponent e : element.getIngredient()) 
59351          composeSubstanceIngredientComponent("ingredient", e);
59352    }
59353  }
59354
59355  protected void composeSubstanceIngredientComponent(String name, Substance.SubstanceIngredientComponent element) throws IOException {
59356    if (element != null) {
59357    composeElementAttributes(element);
59358      xml.enter(FHIR_NS, name);
59359      composeSubstanceIngredientComponentElements(element);
59360      composeElementClose(element);
59361      xml.exit(FHIR_NS, name);
59362    }
59363  }
59364
59365  protected void composeSubstanceIngredientComponentElements(Substance.SubstanceIngredientComponent element) throws IOException {
59366    composeBackboneElementElements(element);
59367    if (element.hasQuantity()) {
59368      composeRatio("quantity", element.getQuantity());
59369    }
59370    if (element.hasSubstance()) {
59371      composeType("substance", element.getSubstance());
59372    }  }
59373
59374  protected void composeSubstanceDefinition(String name, SubstanceDefinition element) throws IOException {
59375    if (element != null) {
59376    composeResourceAttributes(element);
59377      xml.enter(FHIR_NS, name);
59378      composeSubstanceDefinitionElements(element);
59379      composeElementClose(element);
59380      xml.exit(FHIR_NS, name);
59381    }
59382  }
59383
59384  protected void composeSubstanceDefinitionElements(SubstanceDefinition element) throws IOException {
59385    composeDomainResourceElements(element);
59386    if (element.hasIdentifier()) { 
59387      for (Identifier e : element.getIdentifier()) 
59388          composeIdentifier("identifier", e);
59389    }
59390    if (element.hasVersionElement()) {
59391      composeString("version", element.getVersionElement());
59392    }
59393    if (element.hasStatus()) {
59394      composeCodeableConcept("status", element.getStatus());
59395    }
59396    if (element.hasClassification()) { 
59397      for (CodeableConcept e : element.getClassification()) 
59398          composeCodeableConcept("classification", e);
59399    }
59400    if (element.hasDomain()) {
59401      composeCodeableConcept("domain", element.getDomain());
59402    }
59403    if (element.hasGrade()) { 
59404      for (CodeableConcept e : element.getGrade()) 
59405          composeCodeableConcept("grade", e);
59406    }
59407    if (element.hasDescriptionElement()) {
59408      composeMarkdown("description", element.getDescriptionElement());
59409    }
59410    if (element.hasInformationSource()) { 
59411      for (Reference e : element.getInformationSource()) 
59412          composeReference("informationSource", e);
59413    }
59414    if (element.hasNote()) { 
59415      for (Annotation e : element.getNote()) 
59416          composeAnnotation("note", e);
59417    }
59418    if (element.hasManufacturer()) { 
59419      for (Reference e : element.getManufacturer()) 
59420          composeReference("manufacturer", e);
59421    }
59422    if (element.hasSupplier()) { 
59423      for (Reference e : element.getSupplier()) 
59424          composeReference("supplier", e);
59425    }
59426    if (element.hasMoiety()) { 
59427      for (SubstanceDefinition.SubstanceDefinitionMoietyComponent e : element.getMoiety()) 
59428          composeSubstanceDefinitionMoietyComponent("moiety", e);
59429    }
59430    if (element.hasCharacterization()) { 
59431      for (SubstanceDefinition.SubstanceDefinitionCharacterizationComponent e : element.getCharacterization()) 
59432          composeSubstanceDefinitionCharacterizationComponent("characterization", e);
59433    }
59434    if (element.hasProperty()) { 
59435      for (SubstanceDefinition.SubstanceDefinitionPropertyComponent e : element.getProperty()) 
59436          composeSubstanceDefinitionPropertyComponent("property", e);
59437    }
59438    if (element.hasReferenceInformation()) {
59439      composeReference("referenceInformation", element.getReferenceInformation());
59440    }
59441    if (element.hasMolecularWeight()) { 
59442      for (SubstanceDefinition.SubstanceDefinitionMolecularWeightComponent e : element.getMolecularWeight()) 
59443          composeSubstanceDefinitionMolecularWeightComponent("molecularWeight", e);
59444    }
59445    if (element.hasStructure()) {
59446      composeSubstanceDefinitionStructureComponent("structure", element.getStructure());
59447    }
59448    if (element.hasCode()) { 
59449      for (SubstanceDefinition.SubstanceDefinitionCodeComponent e : element.getCode()) 
59450          composeSubstanceDefinitionCodeComponent("code", e);
59451    }
59452    if (element.hasName()) { 
59453      for (SubstanceDefinition.SubstanceDefinitionNameComponent e : element.getName()) 
59454          composeSubstanceDefinitionNameComponent("name", e);
59455    }
59456    if (element.hasRelationship()) { 
59457      for (SubstanceDefinition.SubstanceDefinitionRelationshipComponent e : element.getRelationship()) 
59458          composeSubstanceDefinitionRelationshipComponent("relationship", e);
59459    }
59460    if (element.hasNucleicAcid()) {
59461      composeReference("nucleicAcid", element.getNucleicAcid());
59462    }
59463    if (element.hasPolymer()) {
59464      composeReference("polymer", element.getPolymer());
59465    }
59466    if (element.hasProtein()) {
59467      composeReference("protein", element.getProtein());
59468    }
59469    if (element.hasSourceMaterial()) {
59470      composeSubstanceDefinitionSourceMaterialComponent("sourceMaterial", element.getSourceMaterial());
59471    }
59472  }
59473
59474  protected void composeSubstanceDefinitionMoietyComponent(String name, SubstanceDefinition.SubstanceDefinitionMoietyComponent element) throws IOException {
59475    if (element != null) {
59476    composeElementAttributes(element);
59477      xml.enter(FHIR_NS, name);
59478      composeSubstanceDefinitionMoietyComponentElements(element);
59479      composeElementClose(element);
59480      xml.exit(FHIR_NS, name);
59481    }
59482  }
59483
59484  protected void composeSubstanceDefinitionMoietyComponentElements(SubstanceDefinition.SubstanceDefinitionMoietyComponent element) throws IOException {
59485    composeBackboneElementElements(element);
59486    if (element.hasRole()) {
59487      composeCodeableConcept("role", element.getRole());
59488    }
59489    if (element.hasIdentifier()) {
59490      composeIdentifier("identifier", element.getIdentifier());
59491    }
59492    if (element.hasNameElement()) {
59493      composeString("name", element.getNameElement());
59494    }
59495    if (element.hasStereochemistry()) {
59496      composeCodeableConcept("stereochemistry", element.getStereochemistry());
59497    }
59498    if (element.hasOpticalActivity()) {
59499      composeCodeableConcept("opticalActivity", element.getOpticalActivity());
59500    }
59501    if (element.hasMolecularFormulaElement()) {
59502      composeString("molecularFormula", element.getMolecularFormulaElement());
59503    }
59504    if (element.hasAmount()) {
59505      composeType("amount", element.getAmount());
59506    }    if (element.hasMeasurementType()) {
59507      composeCodeableConcept("measurementType", element.getMeasurementType());
59508    }
59509  }
59510
59511  protected void composeSubstanceDefinitionCharacterizationComponent(String name, SubstanceDefinition.SubstanceDefinitionCharacterizationComponent element) throws IOException {
59512    if (element != null) {
59513    composeElementAttributes(element);
59514      xml.enter(FHIR_NS, name);
59515      composeSubstanceDefinitionCharacterizationComponentElements(element);
59516      composeElementClose(element);
59517      xml.exit(FHIR_NS, name);
59518    }
59519  }
59520
59521  protected void composeSubstanceDefinitionCharacterizationComponentElements(SubstanceDefinition.SubstanceDefinitionCharacterizationComponent element) throws IOException {
59522    composeBackboneElementElements(element);
59523    if (element.hasTechnique()) {
59524      composeCodeableConcept("technique", element.getTechnique());
59525    }
59526    if (element.hasForm()) {
59527      composeCodeableConcept("form", element.getForm());
59528    }
59529    if (element.hasDescriptionElement()) {
59530      composeMarkdown("description", element.getDescriptionElement());
59531    }
59532    if (element.hasFile()) { 
59533      for (Attachment e : element.getFile()) 
59534          composeAttachment("file", e);
59535    }
59536  }
59537
59538  protected void composeSubstanceDefinitionPropertyComponent(String name, SubstanceDefinition.SubstanceDefinitionPropertyComponent element) throws IOException {
59539    if (element != null) {
59540    composeElementAttributes(element);
59541      xml.enter(FHIR_NS, name);
59542      composeSubstanceDefinitionPropertyComponentElements(element);
59543      composeElementClose(element);
59544      xml.exit(FHIR_NS, name);
59545    }
59546  }
59547
59548  protected void composeSubstanceDefinitionPropertyComponentElements(SubstanceDefinition.SubstanceDefinitionPropertyComponent element) throws IOException {
59549    composeBackboneElementElements(element);
59550    if (element.hasType()) {
59551      composeCodeableConcept("type", element.getType());
59552    }
59553    if (element.hasValue()) {
59554      composeType("value", element.getValue());
59555    }  }
59556
59557  protected void composeSubstanceDefinitionMolecularWeightComponent(String name, SubstanceDefinition.SubstanceDefinitionMolecularWeightComponent element) throws IOException {
59558    if (element != null) {
59559    composeElementAttributes(element);
59560      xml.enter(FHIR_NS, name);
59561      composeSubstanceDefinitionMolecularWeightComponentElements(element);
59562      composeElementClose(element);
59563      xml.exit(FHIR_NS, name);
59564    }
59565  }
59566
59567  protected void composeSubstanceDefinitionMolecularWeightComponentElements(SubstanceDefinition.SubstanceDefinitionMolecularWeightComponent element) throws IOException {
59568    composeBackboneElementElements(element);
59569    if (element.hasMethod()) {
59570      composeCodeableConcept("method", element.getMethod());
59571    }
59572    if (element.hasType()) {
59573      composeCodeableConcept("type", element.getType());
59574    }
59575    if (element.hasAmount()) {
59576      composeQuantity("amount", element.getAmount());
59577    }
59578  }
59579
59580  protected void composeSubstanceDefinitionStructureComponent(String name, SubstanceDefinition.SubstanceDefinitionStructureComponent element) throws IOException {
59581    if (element != null) {
59582    composeElementAttributes(element);
59583      xml.enter(FHIR_NS, name);
59584      composeSubstanceDefinitionStructureComponentElements(element);
59585      composeElementClose(element);
59586      xml.exit(FHIR_NS, name);
59587    }
59588  }
59589
59590  protected void composeSubstanceDefinitionStructureComponentElements(SubstanceDefinition.SubstanceDefinitionStructureComponent element) throws IOException {
59591    composeBackboneElementElements(element);
59592    if (element.hasStereochemistry()) {
59593      composeCodeableConcept("stereochemistry", element.getStereochemistry());
59594    }
59595    if (element.hasOpticalActivity()) {
59596      composeCodeableConcept("opticalActivity", element.getOpticalActivity());
59597    }
59598    if (element.hasMolecularFormulaElement()) {
59599      composeString("molecularFormula", element.getMolecularFormulaElement());
59600    }
59601    if (element.hasMolecularFormulaByMoietyElement()) {
59602      composeString("molecularFormulaByMoiety", element.getMolecularFormulaByMoietyElement());
59603    }
59604    if (element.hasMolecularWeight()) {
59605      composeSubstanceDefinitionMolecularWeightComponent("molecularWeight", element.getMolecularWeight());
59606    }
59607    if (element.hasTechnique()) { 
59608      for (CodeableConcept e : element.getTechnique()) 
59609          composeCodeableConcept("technique", e);
59610    }
59611    if (element.hasSourceDocument()) { 
59612      for (Reference e : element.getSourceDocument()) 
59613          composeReference("sourceDocument", e);
59614    }
59615    if (element.hasRepresentation()) { 
59616      for (SubstanceDefinition.SubstanceDefinitionStructureRepresentationComponent e : element.getRepresentation()) 
59617          composeSubstanceDefinitionStructureRepresentationComponent("representation", e);
59618    }
59619  }
59620
59621  protected void composeSubstanceDefinitionStructureRepresentationComponent(String name, SubstanceDefinition.SubstanceDefinitionStructureRepresentationComponent element) throws IOException {
59622    if (element != null) {
59623    composeElementAttributes(element);
59624      xml.enter(FHIR_NS, name);
59625      composeSubstanceDefinitionStructureRepresentationComponentElements(element);
59626      composeElementClose(element);
59627      xml.exit(FHIR_NS, name);
59628    }
59629  }
59630
59631  protected void composeSubstanceDefinitionStructureRepresentationComponentElements(SubstanceDefinition.SubstanceDefinitionStructureRepresentationComponent element) throws IOException {
59632    composeBackboneElementElements(element);
59633    if (element.hasType()) {
59634      composeCodeableConcept("type", element.getType());
59635    }
59636    if (element.hasRepresentationElement()) {
59637      composeString("representation", element.getRepresentationElement());
59638    }
59639    if (element.hasFormat()) {
59640      composeCodeableConcept("format", element.getFormat());
59641    }
59642    if (element.hasDocument()) {
59643      composeReference("document", element.getDocument());
59644    }
59645  }
59646
59647  protected void composeSubstanceDefinitionCodeComponent(String name, SubstanceDefinition.SubstanceDefinitionCodeComponent element) throws IOException {
59648    if (element != null) {
59649    composeElementAttributes(element);
59650      xml.enter(FHIR_NS, name);
59651      composeSubstanceDefinitionCodeComponentElements(element);
59652      composeElementClose(element);
59653      xml.exit(FHIR_NS, name);
59654    }
59655  }
59656
59657  protected void composeSubstanceDefinitionCodeComponentElements(SubstanceDefinition.SubstanceDefinitionCodeComponent element) throws IOException {
59658    composeBackboneElementElements(element);
59659    if (element.hasCode()) {
59660      composeCodeableConcept("code", element.getCode());
59661    }
59662    if (element.hasStatus()) {
59663      composeCodeableConcept("status", element.getStatus());
59664    }
59665    if (element.hasStatusDateElement()) {
59666      composeDateTime("statusDate", element.getStatusDateElement());
59667    }
59668    if (element.hasNote()) { 
59669      for (Annotation e : element.getNote()) 
59670          composeAnnotation("note", e);
59671    }
59672    if (element.hasSource()) { 
59673      for (Reference e : element.getSource()) 
59674          composeReference("source", e);
59675    }
59676  }
59677
59678  protected void composeSubstanceDefinitionNameComponent(String name, SubstanceDefinition.SubstanceDefinitionNameComponent element) throws IOException {
59679    if (element != null) {
59680    composeElementAttributes(element);
59681      xml.enter(FHIR_NS, name);
59682      composeSubstanceDefinitionNameComponentElements(element);
59683      composeElementClose(element);
59684      xml.exit(FHIR_NS, name);
59685    }
59686  }
59687
59688  protected void composeSubstanceDefinitionNameComponentElements(SubstanceDefinition.SubstanceDefinitionNameComponent element) throws IOException {
59689    composeBackboneElementElements(element);
59690    if (element.hasNameElement()) {
59691      composeString("name", element.getNameElement());
59692    }
59693    if (element.hasType()) {
59694      composeCodeableConcept("type", element.getType());
59695    }
59696    if (element.hasStatus()) {
59697      composeCodeableConcept("status", element.getStatus());
59698    }
59699    if (element.hasPreferredElement()) {
59700      composeBoolean("preferred", element.getPreferredElement());
59701    }
59702    if (element.hasLanguage()) { 
59703      for (CodeableConcept e : element.getLanguage()) 
59704          composeCodeableConcept("language", e);
59705    }
59706    if (element.hasDomain()) { 
59707      for (CodeableConcept e : element.getDomain()) 
59708          composeCodeableConcept("domain", e);
59709    }
59710    if (element.hasJurisdiction()) { 
59711      for (CodeableConcept e : element.getJurisdiction()) 
59712          composeCodeableConcept("jurisdiction", e);
59713    }
59714    if (element.hasSynonym()) { 
59715      for (SubstanceDefinition.SubstanceDefinitionNameComponent e : element.getSynonym()) 
59716          composeSubstanceDefinitionNameComponent("synonym", e);
59717    }
59718    if (element.hasTranslation()) { 
59719      for (SubstanceDefinition.SubstanceDefinitionNameComponent e : element.getTranslation()) 
59720          composeSubstanceDefinitionNameComponent("translation", e);
59721    }
59722    if (element.hasOfficial()) { 
59723      for (SubstanceDefinition.SubstanceDefinitionNameOfficialComponent e : element.getOfficial()) 
59724          composeSubstanceDefinitionNameOfficialComponent("official", e);
59725    }
59726    if (element.hasSource()) { 
59727      for (Reference e : element.getSource()) 
59728          composeReference("source", e);
59729    }
59730  }
59731
59732  protected void composeSubstanceDefinitionNameOfficialComponent(String name, SubstanceDefinition.SubstanceDefinitionNameOfficialComponent element) throws IOException {
59733    if (element != null) {
59734    composeElementAttributes(element);
59735      xml.enter(FHIR_NS, name);
59736      composeSubstanceDefinitionNameOfficialComponentElements(element);
59737      composeElementClose(element);
59738      xml.exit(FHIR_NS, name);
59739    }
59740  }
59741
59742  protected void composeSubstanceDefinitionNameOfficialComponentElements(SubstanceDefinition.SubstanceDefinitionNameOfficialComponent element) throws IOException {
59743    composeBackboneElementElements(element);
59744    if (element.hasAuthority()) {
59745      composeCodeableConcept("authority", element.getAuthority());
59746    }
59747    if (element.hasStatus()) {
59748      composeCodeableConcept("status", element.getStatus());
59749    }
59750    if (element.hasDateElement()) {
59751      composeDateTime("date", element.getDateElement());
59752    }
59753  }
59754
59755  protected void composeSubstanceDefinitionRelationshipComponent(String name, SubstanceDefinition.SubstanceDefinitionRelationshipComponent element) throws IOException {
59756    if (element != null) {
59757    composeElementAttributes(element);
59758      xml.enter(FHIR_NS, name);
59759      composeSubstanceDefinitionRelationshipComponentElements(element);
59760      composeElementClose(element);
59761      xml.exit(FHIR_NS, name);
59762    }
59763  }
59764
59765  protected void composeSubstanceDefinitionRelationshipComponentElements(SubstanceDefinition.SubstanceDefinitionRelationshipComponent element) throws IOException {
59766    composeBackboneElementElements(element);
59767    if (element.hasSubstanceDefinition()) {
59768      composeType("substanceDefinition", element.getSubstanceDefinition());
59769    }    if (element.hasType()) {
59770      composeCodeableConcept("type", element.getType());
59771    }
59772    if (element.hasIsDefiningElement()) {
59773      composeBoolean("isDefining", element.getIsDefiningElement());
59774    }
59775    if (element.hasAmount()) {
59776      composeType("amount", element.getAmount());
59777    }    if (element.hasRatioHighLimitAmount()) {
59778      composeRatio("ratioHighLimitAmount", element.getRatioHighLimitAmount());
59779    }
59780    if (element.hasComparator()) {
59781      composeCodeableConcept("comparator", element.getComparator());
59782    }
59783    if (element.hasSource()) { 
59784      for (Reference e : element.getSource()) 
59785          composeReference("source", e);
59786    }
59787  }
59788
59789  protected void composeSubstanceDefinitionSourceMaterialComponent(String name, SubstanceDefinition.SubstanceDefinitionSourceMaterialComponent element) throws IOException {
59790    if (element != null) {
59791    composeElementAttributes(element);
59792      xml.enter(FHIR_NS, name);
59793      composeSubstanceDefinitionSourceMaterialComponentElements(element);
59794      composeElementClose(element);
59795      xml.exit(FHIR_NS, name);
59796    }
59797  }
59798
59799  protected void composeSubstanceDefinitionSourceMaterialComponentElements(SubstanceDefinition.SubstanceDefinitionSourceMaterialComponent element) throws IOException {
59800    composeBackboneElementElements(element);
59801    if (element.hasType()) {
59802      composeCodeableConcept("type", element.getType());
59803    }
59804    if (element.hasGenus()) {
59805      composeCodeableConcept("genus", element.getGenus());
59806    }
59807    if (element.hasSpecies()) {
59808      composeCodeableConcept("species", element.getSpecies());
59809    }
59810    if (element.hasPart()) {
59811      composeCodeableConcept("part", element.getPart());
59812    }
59813    if (element.hasCountryOfOrigin()) { 
59814      for (CodeableConcept e : element.getCountryOfOrigin()) 
59815          composeCodeableConcept("countryOfOrigin", e);
59816    }
59817  }
59818
59819  protected void composeSubstanceNucleicAcid(String name, SubstanceNucleicAcid element) throws IOException {
59820    if (element != null) {
59821    composeResourceAttributes(element);
59822      xml.enter(FHIR_NS, name);
59823      composeSubstanceNucleicAcidElements(element);
59824      composeElementClose(element);
59825      xml.exit(FHIR_NS, name);
59826    }
59827  }
59828
59829  protected void composeSubstanceNucleicAcidElements(SubstanceNucleicAcid element) throws IOException {
59830    composeDomainResourceElements(element);
59831    if (element.hasSequenceType()) {
59832      composeCodeableConcept("sequenceType", element.getSequenceType());
59833    }
59834    if (element.hasNumberOfSubunitsElement()) {
59835      composeInteger("numberOfSubunits", element.getNumberOfSubunitsElement());
59836    }
59837    if (element.hasAreaOfHybridisationElement()) {
59838      composeString("areaOfHybridisation", element.getAreaOfHybridisationElement());
59839    }
59840    if (element.hasOligoNucleotideType()) {
59841      composeCodeableConcept("oligoNucleotideType", element.getOligoNucleotideType());
59842    }
59843    if (element.hasSubunit()) { 
59844      for (SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent e : element.getSubunit()) 
59845          composeSubstanceNucleicAcidSubunitComponent("subunit", e);
59846    }
59847  }
59848
59849  protected void composeSubstanceNucleicAcidSubunitComponent(String name, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent element) throws IOException {
59850    if (element != null) {
59851    composeElementAttributes(element);
59852      xml.enter(FHIR_NS, name);
59853      composeSubstanceNucleicAcidSubunitComponentElements(element);
59854      composeElementClose(element);
59855      xml.exit(FHIR_NS, name);
59856    }
59857  }
59858
59859  protected void composeSubstanceNucleicAcidSubunitComponentElements(SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent element) throws IOException {
59860    composeBackboneElementElements(element);
59861    if (element.hasSubunitElement()) {
59862      composeInteger("subunit", element.getSubunitElement());
59863    }
59864    if (element.hasSequenceElement()) {
59865      composeString("sequence", element.getSequenceElement());
59866    }
59867    if (element.hasLengthElement()) {
59868      composeInteger("length", element.getLengthElement());
59869    }
59870    if (element.hasSequenceAttachment()) {
59871      composeAttachment("sequenceAttachment", element.getSequenceAttachment());
59872    }
59873    if (element.hasFivePrime()) {
59874      composeCodeableConcept("fivePrime", element.getFivePrime());
59875    }
59876    if (element.hasThreePrime()) {
59877      composeCodeableConcept("threePrime", element.getThreePrime());
59878    }
59879    if (element.hasLinkage()) { 
59880      for (SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent e : element.getLinkage()) 
59881          composeSubstanceNucleicAcidSubunitLinkageComponent("linkage", e);
59882    }
59883    if (element.hasSugar()) { 
59884      for (SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent e : element.getSugar()) 
59885          composeSubstanceNucleicAcidSubunitSugarComponent("sugar", e);
59886    }
59887  }
59888
59889  protected void composeSubstanceNucleicAcidSubunitLinkageComponent(String name, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent element) throws IOException {
59890    if (element != null) {
59891    composeElementAttributes(element);
59892      xml.enter(FHIR_NS, name);
59893      composeSubstanceNucleicAcidSubunitLinkageComponentElements(element);
59894      composeElementClose(element);
59895      xml.exit(FHIR_NS, name);
59896    }
59897  }
59898
59899  protected void composeSubstanceNucleicAcidSubunitLinkageComponentElements(SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent element) throws IOException {
59900    composeBackboneElementElements(element);
59901    if (element.hasConnectivityElement()) {
59902      composeString("connectivity", element.getConnectivityElement());
59903    }
59904    if (element.hasIdentifier()) {
59905      composeIdentifier("identifier", element.getIdentifier());
59906    }
59907    if (element.hasNameElement()) {
59908      composeString("name", element.getNameElement());
59909    }
59910    if (element.hasResidueSiteElement()) {
59911      composeString("residueSite", element.getResidueSiteElement());
59912    }
59913  }
59914
59915  protected void composeSubstanceNucleicAcidSubunitSugarComponent(String name, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent element) throws IOException {
59916    if (element != null) {
59917    composeElementAttributes(element);
59918      xml.enter(FHIR_NS, name);
59919      composeSubstanceNucleicAcidSubunitSugarComponentElements(element);
59920      composeElementClose(element);
59921      xml.exit(FHIR_NS, name);
59922    }
59923  }
59924
59925  protected void composeSubstanceNucleicAcidSubunitSugarComponentElements(SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent element) throws IOException {
59926    composeBackboneElementElements(element);
59927    if (element.hasIdentifier()) {
59928      composeIdentifier("identifier", element.getIdentifier());
59929    }
59930    if (element.hasNameElement()) {
59931      composeString("name", element.getNameElement());
59932    }
59933    if (element.hasResidueSiteElement()) {
59934      composeString("residueSite", element.getResidueSiteElement());
59935    }
59936  }
59937
59938  protected void composeSubstancePolymer(String name, SubstancePolymer element) throws IOException {
59939    if (element != null) {
59940    composeResourceAttributes(element);
59941      xml.enter(FHIR_NS, name);
59942      composeSubstancePolymerElements(element);
59943      composeElementClose(element);
59944      xml.exit(FHIR_NS, name);
59945    }
59946  }
59947
59948  protected void composeSubstancePolymerElements(SubstancePolymer element) throws IOException {
59949    composeDomainResourceElements(element);
59950    if (element.hasIdentifier()) {
59951      composeIdentifier("identifier", element.getIdentifier());
59952    }
59953    if (element.hasClass_()) {
59954      composeCodeableConcept("class", element.getClass_());
59955    }
59956    if (element.hasGeometry()) {
59957      composeCodeableConcept("geometry", element.getGeometry());
59958    }
59959    if (element.hasCopolymerConnectivity()) { 
59960      for (CodeableConcept e : element.getCopolymerConnectivity()) 
59961          composeCodeableConcept("copolymerConnectivity", e);
59962    }
59963    if (element.hasModificationElement()) {
59964      composeString("modification", element.getModificationElement());
59965    }
59966    if (element.hasMonomerSet()) { 
59967      for (SubstancePolymer.SubstancePolymerMonomerSetComponent e : element.getMonomerSet()) 
59968          composeSubstancePolymerMonomerSetComponent("monomerSet", e);
59969    }
59970    if (element.hasRepeat()) { 
59971      for (SubstancePolymer.SubstancePolymerRepeatComponent e : element.getRepeat()) 
59972          composeSubstancePolymerRepeatComponent("repeat", e);
59973    }
59974  }
59975
59976  protected void composeSubstancePolymerMonomerSetComponent(String name, SubstancePolymer.SubstancePolymerMonomerSetComponent element) throws IOException {
59977    if (element != null) {
59978    composeElementAttributes(element);
59979      xml.enter(FHIR_NS, name);
59980      composeSubstancePolymerMonomerSetComponentElements(element);
59981      composeElementClose(element);
59982      xml.exit(FHIR_NS, name);
59983    }
59984  }
59985
59986  protected void composeSubstancePolymerMonomerSetComponentElements(SubstancePolymer.SubstancePolymerMonomerSetComponent element) throws IOException {
59987    composeBackboneElementElements(element);
59988    if (element.hasRatioType()) {
59989      composeCodeableConcept("ratioType", element.getRatioType());
59990    }
59991    if (element.hasStartingMaterial()) { 
59992      for (SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent e : element.getStartingMaterial()) 
59993          composeSubstancePolymerMonomerSetStartingMaterialComponent("startingMaterial", e);
59994    }
59995  }
59996
59997  protected void composeSubstancePolymerMonomerSetStartingMaterialComponent(String name, SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent element) throws IOException {
59998    if (element != null) {
59999    composeElementAttributes(element);
60000      xml.enter(FHIR_NS, name);
60001      composeSubstancePolymerMonomerSetStartingMaterialComponentElements(element);
60002      composeElementClose(element);
60003      xml.exit(FHIR_NS, name);
60004    }
60005  }
60006
60007  protected void composeSubstancePolymerMonomerSetStartingMaterialComponentElements(SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent element) throws IOException {
60008    composeBackboneElementElements(element);
60009    if (element.hasCode()) {
60010      composeCodeableConcept("code", element.getCode());
60011    }
60012    if (element.hasCategory()) {
60013      composeCodeableConcept("category", element.getCategory());
60014    }
60015    if (element.hasIsDefiningElement()) {
60016      composeBoolean("isDefining", element.getIsDefiningElement());
60017    }
60018    if (element.hasAmount()) {
60019      composeQuantity("amount", element.getAmount());
60020    }
60021  }
60022
60023  protected void composeSubstancePolymerRepeatComponent(String name, SubstancePolymer.SubstancePolymerRepeatComponent element) throws IOException {
60024    if (element != null) {
60025    composeElementAttributes(element);
60026      xml.enter(FHIR_NS, name);
60027      composeSubstancePolymerRepeatComponentElements(element);
60028      composeElementClose(element);
60029      xml.exit(FHIR_NS, name);
60030    }
60031  }
60032
60033  protected void composeSubstancePolymerRepeatComponentElements(SubstancePolymer.SubstancePolymerRepeatComponent element) throws IOException {
60034    composeBackboneElementElements(element);
60035    if (element.hasAverageMolecularFormulaElement()) {
60036      composeString("averageMolecularFormula", element.getAverageMolecularFormulaElement());
60037    }
60038    if (element.hasRepeatUnitAmountType()) {
60039      composeCodeableConcept("repeatUnitAmountType", element.getRepeatUnitAmountType());
60040    }
60041    if (element.hasRepeatUnit()) { 
60042      for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent e : element.getRepeatUnit()) 
60043          composeSubstancePolymerRepeatRepeatUnitComponent("repeatUnit", e);
60044    }
60045  }
60046
60047  protected void composeSubstancePolymerRepeatRepeatUnitComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent element) throws IOException {
60048    if (element != null) {
60049    composeElementAttributes(element);
60050      xml.enter(FHIR_NS, name);
60051      composeSubstancePolymerRepeatRepeatUnitComponentElements(element);
60052      composeElementClose(element);
60053      xml.exit(FHIR_NS, name);
60054    }
60055  }
60056
60057  protected void composeSubstancePolymerRepeatRepeatUnitComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent element) throws IOException {
60058    composeBackboneElementElements(element);
60059    if (element.hasUnitElement()) {
60060      composeString("unit", element.getUnitElement());
60061    }
60062    if (element.hasOrientation()) {
60063      composeCodeableConcept("orientation", element.getOrientation());
60064    }
60065    if (element.hasAmountElement()) {
60066      composeInteger("amount", element.getAmountElement());
60067    }
60068    if (element.hasDegreeOfPolymerisation()) { 
60069      for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent e : element.getDegreeOfPolymerisation()) 
60070          composeSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent("degreeOfPolymerisation", e);
60071    }
60072    if (element.hasStructuralRepresentation()) { 
60073      for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent e : element.getStructuralRepresentation()) 
60074          composeSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent("structuralRepresentation", e);
60075    }
60076  }
60077
60078  protected void composeSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent element) throws IOException {
60079    if (element != null) {
60080    composeElementAttributes(element);
60081      xml.enter(FHIR_NS, name);
60082      composeSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentElements(element);
60083      composeElementClose(element);
60084      xml.exit(FHIR_NS, name);
60085    }
60086  }
60087
60088  protected void composeSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent element) throws IOException {
60089    composeBackboneElementElements(element);
60090    if (element.hasType()) {
60091      composeCodeableConcept("type", element.getType());
60092    }
60093    if (element.hasAverageElement()) {
60094      composeInteger("average", element.getAverageElement());
60095    }
60096    if (element.hasLowElement()) {
60097      composeInteger("low", element.getLowElement());
60098    }
60099    if (element.hasHighElement()) {
60100      composeInteger("high", element.getHighElement());
60101    }
60102  }
60103
60104  protected void composeSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent element) throws IOException {
60105    if (element != null) {
60106    composeElementAttributes(element);
60107      xml.enter(FHIR_NS, name);
60108      composeSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentElements(element);
60109      composeElementClose(element);
60110      xml.exit(FHIR_NS, name);
60111    }
60112  }
60113
60114  protected void composeSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent element) throws IOException {
60115    composeBackboneElementElements(element);
60116    if (element.hasType()) {
60117      composeCodeableConcept("type", element.getType());
60118    }
60119    if (element.hasRepresentationElement()) {
60120      composeString("representation", element.getRepresentationElement());
60121    }
60122    if (element.hasFormat()) {
60123      composeCodeableConcept("format", element.getFormat());
60124    }
60125    if (element.hasAttachment()) {
60126      composeAttachment("attachment", element.getAttachment());
60127    }
60128  }
60129
60130  protected void composeSubstanceProtein(String name, SubstanceProtein element) throws IOException {
60131    if (element != null) {
60132    composeResourceAttributes(element);
60133      xml.enter(FHIR_NS, name);
60134      composeSubstanceProteinElements(element);
60135      composeElementClose(element);
60136      xml.exit(FHIR_NS, name);
60137    }
60138  }
60139
60140  protected void composeSubstanceProteinElements(SubstanceProtein element) throws IOException {
60141    composeDomainResourceElements(element);
60142    if (element.hasSequenceType()) {
60143      composeCodeableConcept("sequenceType", element.getSequenceType());
60144    }
60145    if (element.hasNumberOfSubunitsElement()) {
60146      composeInteger("numberOfSubunits", element.getNumberOfSubunitsElement());
60147    }
60148    if (element.hasDisulfideLinkage()) { 
60149      for (StringType e : element.getDisulfideLinkage()) 
60150          composeString("disulfideLinkage", e);
60151    }
60152    if (element.hasSubunit()) { 
60153      for (SubstanceProtein.SubstanceProteinSubunitComponent e : element.getSubunit()) 
60154          composeSubstanceProteinSubunitComponent("subunit", e);
60155    }
60156  }
60157
60158  protected void composeSubstanceProteinSubunitComponent(String name, SubstanceProtein.SubstanceProteinSubunitComponent element) throws IOException {
60159    if (element != null) {
60160    composeElementAttributes(element);
60161      xml.enter(FHIR_NS, name);
60162      composeSubstanceProteinSubunitComponentElements(element);
60163      composeElementClose(element);
60164      xml.exit(FHIR_NS, name);
60165    }
60166  }
60167
60168  protected void composeSubstanceProteinSubunitComponentElements(SubstanceProtein.SubstanceProteinSubunitComponent element) throws IOException {
60169    composeBackboneElementElements(element);
60170    if (element.hasSubunitElement()) {
60171      composeInteger("subunit", element.getSubunitElement());
60172    }
60173    if (element.hasSequenceElement()) {
60174      composeString("sequence", element.getSequenceElement());
60175    }
60176    if (element.hasLengthElement()) {
60177      composeInteger("length", element.getLengthElement());
60178    }
60179    if (element.hasSequenceAttachment()) {
60180      composeAttachment("sequenceAttachment", element.getSequenceAttachment());
60181    }
60182    if (element.hasNTerminalModificationId()) {
60183      composeIdentifier("nTerminalModificationId", element.getNTerminalModificationId());
60184    }
60185    if (element.hasNTerminalModificationElement()) {
60186      composeString("nTerminalModification", element.getNTerminalModificationElement());
60187    }
60188    if (element.hasCTerminalModificationId()) {
60189      composeIdentifier("cTerminalModificationId", element.getCTerminalModificationId());
60190    }
60191    if (element.hasCTerminalModificationElement()) {
60192      composeString("cTerminalModification", element.getCTerminalModificationElement());
60193    }
60194  }
60195
60196  protected void composeSubstanceReferenceInformation(String name, SubstanceReferenceInformation element) throws IOException {
60197    if (element != null) {
60198    composeResourceAttributes(element);
60199      xml.enter(FHIR_NS, name);
60200      composeSubstanceReferenceInformationElements(element);
60201      composeElementClose(element);
60202      xml.exit(FHIR_NS, name);
60203    }
60204  }
60205
60206  protected void composeSubstanceReferenceInformationElements(SubstanceReferenceInformation element) throws IOException {
60207    composeDomainResourceElements(element);
60208    if (element.hasCommentElement()) {
60209      composeString("comment", element.getCommentElement());
60210    }
60211    if (element.hasGene()) { 
60212      for (SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent e : element.getGene()) 
60213          composeSubstanceReferenceInformationGeneComponent("gene", e);
60214    }
60215    if (element.hasGeneElement()) { 
60216      for (SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent e : element.getGeneElement()) 
60217          composeSubstanceReferenceInformationGeneElementComponent("geneElement", e);
60218    }
60219    if (element.hasTarget()) { 
60220      for (SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent e : element.getTarget()) 
60221          composeSubstanceReferenceInformationTargetComponent("target", e);
60222    }
60223  }
60224
60225  protected void composeSubstanceReferenceInformationGeneComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent element) throws IOException {
60226    if (element != null) {
60227    composeElementAttributes(element);
60228      xml.enter(FHIR_NS, name);
60229      composeSubstanceReferenceInformationGeneComponentElements(element);
60230      composeElementClose(element);
60231      xml.exit(FHIR_NS, name);
60232    }
60233  }
60234
60235  protected void composeSubstanceReferenceInformationGeneComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent element) throws IOException {
60236    composeBackboneElementElements(element);
60237    if (element.hasGeneSequenceOrigin()) {
60238      composeCodeableConcept("geneSequenceOrigin", element.getGeneSequenceOrigin());
60239    }
60240    if (element.hasGene()) {
60241      composeCodeableConcept("gene", element.getGene());
60242    }
60243    if (element.hasSource()) { 
60244      for (Reference e : element.getSource()) 
60245          composeReference("source", e);
60246    }
60247  }
60248
60249  protected void composeSubstanceReferenceInformationGeneElementComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent element) throws IOException {
60250    if (element != null) {
60251    composeElementAttributes(element);
60252      xml.enter(FHIR_NS, name);
60253      composeSubstanceReferenceInformationGeneElementComponentElements(element);
60254      composeElementClose(element);
60255      xml.exit(FHIR_NS, name);
60256    }
60257  }
60258
60259  protected void composeSubstanceReferenceInformationGeneElementComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent element) throws IOException {
60260    composeBackboneElementElements(element);
60261    if (element.hasType()) {
60262      composeCodeableConcept("type", element.getType());
60263    }
60264    if (element.hasElement()) {
60265      composeIdentifier("element", element.getElement());
60266    }
60267    if (element.hasSource()) { 
60268      for (Reference e : element.getSource()) 
60269          composeReference("source", e);
60270    }
60271  }
60272
60273  protected void composeSubstanceReferenceInformationTargetComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent element) throws IOException {
60274    if (element != null) {
60275    composeElementAttributes(element);
60276      xml.enter(FHIR_NS, name);
60277      composeSubstanceReferenceInformationTargetComponentElements(element);
60278      composeElementClose(element);
60279      xml.exit(FHIR_NS, name);
60280    }
60281  }
60282
60283  protected void composeSubstanceReferenceInformationTargetComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent element) throws IOException {
60284    composeBackboneElementElements(element);
60285    if (element.hasTarget()) {
60286      composeIdentifier("target", element.getTarget());
60287    }
60288    if (element.hasType()) {
60289      composeCodeableConcept("type", element.getType());
60290    }
60291    if (element.hasInteraction()) {
60292      composeCodeableConcept("interaction", element.getInteraction());
60293    }
60294    if (element.hasOrganism()) {
60295      composeCodeableConcept("organism", element.getOrganism());
60296    }
60297    if (element.hasOrganismType()) {
60298      composeCodeableConcept("organismType", element.getOrganismType());
60299    }
60300    if (element.hasAmount()) {
60301      composeType("amount", element.getAmount());
60302    }    if (element.hasAmountType()) {
60303      composeCodeableConcept("amountType", element.getAmountType());
60304    }
60305    if (element.hasSource()) { 
60306      for (Reference e : element.getSource()) 
60307          composeReference("source", e);
60308    }
60309  }
60310
60311  protected void composeSubstanceSourceMaterial(String name, SubstanceSourceMaterial element) throws IOException {
60312    if (element != null) {
60313    composeResourceAttributes(element);
60314      xml.enter(FHIR_NS, name);
60315      composeSubstanceSourceMaterialElements(element);
60316      composeElementClose(element);
60317      xml.exit(FHIR_NS, name);
60318    }
60319  }
60320
60321  protected void composeSubstanceSourceMaterialElements(SubstanceSourceMaterial element) throws IOException {
60322    composeDomainResourceElements(element);
60323    if (element.hasSourceMaterialClass()) {
60324      composeCodeableConcept("sourceMaterialClass", element.getSourceMaterialClass());
60325    }
60326    if (element.hasSourceMaterialType()) {
60327      composeCodeableConcept("sourceMaterialType", element.getSourceMaterialType());
60328    }
60329    if (element.hasSourceMaterialState()) {
60330      composeCodeableConcept("sourceMaterialState", element.getSourceMaterialState());
60331    }
60332    if (element.hasOrganismId()) {
60333      composeIdentifier("organismId", element.getOrganismId());
60334    }
60335    if (element.hasOrganismNameElement()) {
60336      composeString("organismName", element.getOrganismNameElement());
60337    }
60338    if (element.hasParentSubstanceId()) { 
60339      for (Identifier e : element.getParentSubstanceId()) 
60340          composeIdentifier("parentSubstanceId", e);
60341    }
60342    if (element.hasParentSubstanceName()) { 
60343      for (StringType e : element.getParentSubstanceName()) 
60344          composeString("parentSubstanceName", e);
60345    }
60346    if (element.hasCountryOfOrigin()) { 
60347      for (CodeableConcept e : element.getCountryOfOrigin()) 
60348          composeCodeableConcept("countryOfOrigin", e);
60349    }
60350    if (element.hasGeographicalLocation()) { 
60351      for (StringType e : element.getGeographicalLocation()) 
60352          composeString("geographicalLocation", e);
60353    }
60354    if (element.hasDevelopmentStage()) {
60355      composeCodeableConcept("developmentStage", element.getDevelopmentStage());
60356    }
60357    if (element.hasFractionDescription()) { 
60358      for (SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent e : element.getFractionDescription()) 
60359          composeSubstanceSourceMaterialFractionDescriptionComponent("fractionDescription", e);
60360    }
60361    if (element.hasOrganism()) {
60362      composeSubstanceSourceMaterialOrganismComponent("organism", element.getOrganism());
60363    }
60364    if (element.hasPartDescription()) { 
60365      for (SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent e : element.getPartDescription()) 
60366          composeSubstanceSourceMaterialPartDescriptionComponent("partDescription", e);
60367    }
60368  }
60369
60370  protected void composeSubstanceSourceMaterialFractionDescriptionComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent element) throws IOException {
60371    if (element != null) {
60372    composeElementAttributes(element);
60373      xml.enter(FHIR_NS, name);
60374      composeSubstanceSourceMaterialFractionDescriptionComponentElements(element);
60375      composeElementClose(element);
60376      xml.exit(FHIR_NS, name);
60377    }
60378  }
60379
60380  protected void composeSubstanceSourceMaterialFractionDescriptionComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent element) throws IOException {
60381    composeBackboneElementElements(element);
60382    if (element.hasFractionElement()) {
60383      composeString("fraction", element.getFractionElement());
60384    }
60385    if (element.hasMaterialType()) {
60386      composeCodeableConcept("materialType", element.getMaterialType());
60387    }
60388  }
60389
60390  protected void composeSubstanceSourceMaterialOrganismComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent element) throws IOException {
60391    if (element != null) {
60392    composeElementAttributes(element);
60393      xml.enter(FHIR_NS, name);
60394      composeSubstanceSourceMaterialOrganismComponentElements(element);
60395      composeElementClose(element);
60396      xml.exit(FHIR_NS, name);
60397    }
60398  }
60399
60400  protected void composeSubstanceSourceMaterialOrganismComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent element) throws IOException {
60401    composeBackboneElementElements(element);
60402    if (element.hasFamily()) {
60403      composeCodeableConcept("family", element.getFamily());
60404    }
60405    if (element.hasGenus()) {
60406      composeCodeableConcept("genus", element.getGenus());
60407    }
60408    if (element.hasSpecies()) {
60409      composeCodeableConcept("species", element.getSpecies());
60410    }
60411    if (element.hasIntraspecificType()) {
60412      composeCodeableConcept("intraspecificType", element.getIntraspecificType());
60413    }
60414    if (element.hasIntraspecificDescriptionElement()) {
60415      composeString("intraspecificDescription", element.getIntraspecificDescriptionElement());
60416    }
60417    if (element.hasAuthor()) { 
60418      for (SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent e : element.getAuthor()) 
60419          composeSubstanceSourceMaterialOrganismAuthorComponent("author", e);
60420    }
60421    if (element.hasHybrid()) {
60422      composeSubstanceSourceMaterialOrganismHybridComponent("hybrid", element.getHybrid());
60423    }
60424    if (element.hasOrganismGeneral()) {
60425      composeSubstanceSourceMaterialOrganismOrganismGeneralComponent("organismGeneral", element.getOrganismGeneral());
60426    }
60427  }
60428
60429  protected void composeSubstanceSourceMaterialOrganismAuthorComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent element) throws IOException {
60430    if (element != null) {
60431    composeElementAttributes(element);
60432      xml.enter(FHIR_NS, name);
60433      composeSubstanceSourceMaterialOrganismAuthorComponentElements(element);
60434      composeElementClose(element);
60435      xml.exit(FHIR_NS, name);
60436    }
60437  }
60438
60439  protected void composeSubstanceSourceMaterialOrganismAuthorComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent element) throws IOException {
60440    composeBackboneElementElements(element);
60441    if (element.hasAuthorType()) {
60442      composeCodeableConcept("authorType", element.getAuthorType());
60443    }
60444    if (element.hasAuthorDescriptionElement()) {
60445      composeString("authorDescription", element.getAuthorDescriptionElement());
60446    }
60447  }
60448
60449  protected void composeSubstanceSourceMaterialOrganismHybridComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent element) throws IOException {
60450    if (element != null) {
60451    composeElementAttributes(element);
60452      xml.enter(FHIR_NS, name);
60453      composeSubstanceSourceMaterialOrganismHybridComponentElements(element);
60454      composeElementClose(element);
60455      xml.exit(FHIR_NS, name);
60456    }
60457  }
60458
60459  protected void composeSubstanceSourceMaterialOrganismHybridComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent element) throws IOException {
60460    composeBackboneElementElements(element);
60461    if (element.hasMaternalOrganismIdElement()) {
60462      composeString("maternalOrganismId", element.getMaternalOrganismIdElement());
60463    }
60464    if (element.hasMaternalOrganismNameElement()) {
60465      composeString("maternalOrganismName", element.getMaternalOrganismNameElement());
60466    }
60467    if (element.hasPaternalOrganismIdElement()) {
60468      composeString("paternalOrganismId", element.getPaternalOrganismIdElement());
60469    }
60470    if (element.hasPaternalOrganismNameElement()) {
60471      composeString("paternalOrganismName", element.getPaternalOrganismNameElement());
60472    }
60473    if (element.hasHybridType()) {
60474      composeCodeableConcept("hybridType", element.getHybridType());
60475    }
60476  }
60477
60478  protected void composeSubstanceSourceMaterialOrganismOrganismGeneralComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent element) throws IOException {
60479    if (element != null) {
60480    composeElementAttributes(element);
60481      xml.enter(FHIR_NS, name);
60482      composeSubstanceSourceMaterialOrganismOrganismGeneralComponentElements(element);
60483      composeElementClose(element);
60484      xml.exit(FHIR_NS, name);
60485    }
60486  }
60487
60488  protected void composeSubstanceSourceMaterialOrganismOrganismGeneralComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent element) throws IOException {
60489    composeBackboneElementElements(element);
60490    if (element.hasKingdom()) {
60491      composeCodeableConcept("kingdom", element.getKingdom());
60492    }
60493    if (element.hasPhylum()) {
60494      composeCodeableConcept("phylum", element.getPhylum());
60495    }
60496    if (element.hasClass_()) {
60497      composeCodeableConcept("class", element.getClass_());
60498    }
60499    if (element.hasOrder()) {
60500      composeCodeableConcept("order", element.getOrder());
60501    }
60502  }
60503
60504  protected void composeSubstanceSourceMaterialPartDescriptionComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent element) throws IOException {
60505    if (element != null) {
60506    composeElementAttributes(element);
60507      xml.enter(FHIR_NS, name);
60508      composeSubstanceSourceMaterialPartDescriptionComponentElements(element);
60509      composeElementClose(element);
60510      xml.exit(FHIR_NS, name);
60511    }
60512  }
60513
60514  protected void composeSubstanceSourceMaterialPartDescriptionComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent element) throws IOException {
60515    composeBackboneElementElements(element);
60516    if (element.hasPart()) {
60517      composeCodeableConcept("part", element.getPart());
60518    }
60519    if (element.hasPartLocation()) {
60520      composeCodeableConcept("partLocation", element.getPartLocation());
60521    }
60522  }
60523
60524  protected void composeSupplyDelivery(String name, SupplyDelivery element) throws IOException {
60525    if (element != null) {
60526    composeResourceAttributes(element);
60527      xml.enter(FHIR_NS, name);
60528      composeSupplyDeliveryElements(element);
60529      composeElementClose(element);
60530      xml.exit(FHIR_NS, name);
60531    }
60532  }
60533
60534  protected void composeSupplyDeliveryElements(SupplyDelivery element) throws IOException {
60535    composeDomainResourceElements(element);
60536    if (element.hasIdentifier()) { 
60537      for (Identifier e : element.getIdentifier()) 
60538          composeIdentifier("identifier", e);
60539    }
60540    if (element.hasBasedOn()) { 
60541      for (Reference e : element.getBasedOn()) 
60542          composeReference("basedOn", e);
60543    }
60544    if (element.hasPartOf()) { 
60545      for (Reference e : element.getPartOf()) 
60546          composeReference("partOf", e);
60547    }
60548    if (element.hasStatusElement())
60549      composeEnumeration("status", element.getStatusElement(), new SupplyDelivery.SupplyDeliveryStatusEnumFactory());
60550    if (element.hasPatient()) {
60551      composeReference("patient", element.getPatient());
60552    }
60553    if (element.hasType()) {
60554      composeCodeableConcept("type", element.getType());
60555    }
60556    if (element.hasSuppliedItem()) { 
60557      for (SupplyDelivery.SupplyDeliverySuppliedItemComponent e : element.getSuppliedItem()) 
60558          composeSupplyDeliverySuppliedItemComponent("suppliedItem", e);
60559    }
60560    if (element.hasOccurrence()) {
60561      composeType("occurrence", element.getOccurrence());
60562    }    if (element.hasSupplier()) {
60563      composeReference("supplier", element.getSupplier());
60564    }
60565    if (element.hasDestination()) {
60566      composeReference("destination", element.getDestination());
60567    }
60568    if (element.hasReceiver()) { 
60569      for (Reference e : element.getReceiver()) 
60570          composeReference("receiver", e);
60571    }
60572  }
60573
60574  protected void composeSupplyDeliverySuppliedItemComponent(String name, SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
60575    if (element != null) {
60576    composeElementAttributes(element);
60577      xml.enter(FHIR_NS, name);
60578      composeSupplyDeliverySuppliedItemComponentElements(element);
60579      composeElementClose(element);
60580      xml.exit(FHIR_NS, name);
60581    }
60582  }
60583
60584  protected void composeSupplyDeliverySuppliedItemComponentElements(SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
60585    composeBackboneElementElements(element);
60586    if (element.hasQuantity()) {
60587      composeQuantity("quantity", element.getQuantity());
60588    }
60589    if (element.hasItem()) {
60590      composeType("item", element.getItem());
60591    }  }
60592
60593  protected void composeSupplyRequest(String name, SupplyRequest element) throws IOException {
60594    if (element != null) {
60595    composeResourceAttributes(element);
60596      xml.enter(FHIR_NS, name);
60597      composeSupplyRequestElements(element);
60598      composeElementClose(element);
60599      xml.exit(FHIR_NS, name);
60600    }
60601  }
60602
60603  protected void composeSupplyRequestElements(SupplyRequest element) throws IOException {
60604    composeDomainResourceElements(element);
60605    if (element.hasIdentifier()) { 
60606      for (Identifier e : element.getIdentifier()) 
60607          composeIdentifier("identifier", e);
60608    }
60609    if (element.hasStatusElement())
60610      composeEnumeration("status", element.getStatusElement(), new SupplyRequest.SupplyRequestStatusEnumFactory());
60611    if (element.hasBasedOn()) { 
60612      for (Reference e : element.getBasedOn()) 
60613          composeReference("basedOn", e);
60614    }
60615    if (element.hasCategory()) {
60616      composeCodeableConcept("category", element.getCategory());
60617    }
60618    if (element.hasPriorityElement())
60619      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
60620    if (element.hasDeliverFor()) {
60621      composeReference("deliverFor", element.getDeliverFor());
60622    }
60623    if (element.hasItem()) {
60624      composeCodeableReference("item", element.getItem());
60625    }
60626    if (element.hasQuantity()) {
60627      composeQuantity("quantity", element.getQuantity());
60628    }
60629    if (element.hasParameter()) { 
60630      for (SupplyRequest.SupplyRequestParameterComponent e : element.getParameter()) 
60631          composeSupplyRequestParameterComponent("parameter", e);
60632    }
60633    if (element.hasOccurrence()) {
60634      composeType("occurrence", element.getOccurrence());
60635    }    if (element.hasAuthoredOnElement()) {
60636      composeDateTime("authoredOn", element.getAuthoredOnElement());
60637    }
60638    if (element.hasRequester()) {
60639      composeReference("requester", element.getRequester());
60640    }
60641    if (element.hasSupplier()) { 
60642      for (Reference e : element.getSupplier()) 
60643          composeReference("supplier", e);
60644    }
60645    if (element.hasReason()) { 
60646      for (CodeableReference e : element.getReason()) 
60647          composeCodeableReference("reason", e);
60648    }
60649    if (element.hasDeliverFrom()) {
60650      composeReference("deliverFrom", element.getDeliverFrom());
60651    }
60652    if (element.hasDeliverTo()) {
60653      composeReference("deliverTo", element.getDeliverTo());
60654    }
60655  }
60656
60657  protected void composeSupplyRequestParameterComponent(String name, SupplyRequest.SupplyRequestParameterComponent element) throws IOException {
60658    if (element != null) {
60659    composeElementAttributes(element);
60660      xml.enter(FHIR_NS, name);
60661      composeSupplyRequestParameterComponentElements(element);
60662      composeElementClose(element);
60663      xml.exit(FHIR_NS, name);
60664    }
60665  }
60666
60667  protected void composeSupplyRequestParameterComponentElements(SupplyRequest.SupplyRequestParameterComponent element) throws IOException {
60668    composeBackboneElementElements(element);
60669    if (element.hasCode()) {
60670      composeCodeableConcept("code", element.getCode());
60671    }
60672    if (element.hasValue()) {
60673      composeType("value", element.getValue());
60674    }  }
60675
60676  protected void composeTask(String name, Task element) throws IOException {
60677    if (element != null) {
60678    composeResourceAttributes(element);
60679      xml.enter(FHIR_NS, name);
60680      composeTaskElements(element);
60681      composeElementClose(element);
60682      xml.exit(FHIR_NS, name);
60683    }
60684  }
60685
60686  protected void composeTaskElements(Task element) throws IOException {
60687    composeDomainResourceElements(element);
60688    if (element.hasIdentifier()) { 
60689      for (Identifier e : element.getIdentifier()) 
60690          composeIdentifier("identifier", e);
60691    }
60692    if (element.hasInstantiatesCanonicalElement()) {
60693      composeCanonical("instantiatesCanonical", element.getInstantiatesCanonicalElement());
60694    }
60695    if (element.hasInstantiatesUriElement()) {
60696      composeUri("instantiatesUri", element.getInstantiatesUriElement());
60697    }
60698    if (element.hasBasedOn()) { 
60699      for (Reference e : element.getBasedOn()) 
60700          composeReference("basedOn", e);
60701    }
60702    if (element.hasGroupIdentifier()) {
60703      composeIdentifier("groupIdentifier", element.getGroupIdentifier());
60704    }
60705    if (element.hasPartOf()) { 
60706      for (Reference e : element.getPartOf()) 
60707          composeReference("partOf", e);
60708    }
60709    if (element.hasStatusElement())
60710      composeEnumeration("status", element.getStatusElement(), new Task.TaskStatusEnumFactory());
60711    if (element.hasStatusReason()) {
60712      composeCodeableReference("statusReason", element.getStatusReason());
60713    }
60714    if (element.hasBusinessStatus()) {
60715      composeCodeableConcept("businessStatus", element.getBusinessStatus());
60716    }
60717    if (element.hasIntentElement())
60718      composeEnumeration("intent", element.getIntentElement(), new Task.TaskIntentEnumFactory());
60719    if (element.hasPriorityElement())
60720      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
60721    if (element.hasDoNotPerformElement()) {
60722      composeBoolean("doNotPerform", element.getDoNotPerformElement());
60723    }
60724    if (element.hasCode()) {
60725      composeCodeableConcept("code", element.getCode());
60726    }
60727    if (element.hasDescriptionElement()) {
60728      composeString("description", element.getDescriptionElement());
60729    }
60730    if (element.hasFocus()) {
60731      composeReference("focus", element.getFocus());
60732    }
60733    if (element.hasFor()) {
60734      composeReference("for", element.getFor());
60735    }
60736    if (element.hasEncounter()) {
60737      composeReference("encounter", element.getEncounter());
60738    }
60739    if (element.hasRequestedPeriod()) {
60740      composePeriod("requestedPeriod", element.getRequestedPeriod());
60741    }
60742    if (element.hasExecutionPeriod()) {
60743      composePeriod("executionPeriod", element.getExecutionPeriod());
60744    }
60745    if (element.hasAuthoredOnElement()) {
60746      composeDateTime("authoredOn", element.getAuthoredOnElement());
60747    }
60748    if (element.hasLastModifiedElement()) {
60749      composeDateTime("lastModified", element.getLastModifiedElement());
60750    }
60751    if (element.hasRequester()) {
60752      composeReference("requester", element.getRequester());
60753    }
60754    if (element.hasRequestedPerformer()) { 
60755      for (CodeableReference e : element.getRequestedPerformer()) 
60756          composeCodeableReference("requestedPerformer", e);
60757    }
60758    if (element.hasOwner()) {
60759      composeReference("owner", element.getOwner());
60760    }
60761    if (element.hasPerformer()) { 
60762      for (Task.TaskPerformerComponent e : element.getPerformer()) 
60763          composeTaskPerformerComponent("performer", e);
60764    }
60765    if (element.hasLocation()) {
60766      composeReference("location", element.getLocation());
60767    }
60768    if (element.hasReason()) { 
60769      for (CodeableReference e : element.getReason()) 
60770          composeCodeableReference("reason", e);
60771    }
60772    if (element.hasInsurance()) { 
60773      for (Reference e : element.getInsurance()) 
60774          composeReference("insurance", e);
60775    }
60776    if (element.hasNote()) { 
60777      for (Annotation e : element.getNote()) 
60778          composeAnnotation("note", e);
60779    }
60780    if (element.hasRelevantHistory()) { 
60781      for (Reference e : element.getRelevantHistory()) 
60782          composeReference("relevantHistory", e);
60783    }
60784    if (element.hasRestriction()) {
60785      composeTaskRestrictionComponent("restriction", element.getRestriction());
60786    }
60787    if (element.hasInput()) { 
60788      for (Task.TaskInputComponent e : element.getInput()) 
60789          composeTaskInputComponent("input", e);
60790    }
60791    if (element.hasOutput()) { 
60792      for (Task.TaskOutputComponent e : element.getOutput()) 
60793          composeTaskOutputComponent("output", e);
60794    }
60795  }
60796
60797  protected void composeTaskPerformerComponent(String name, Task.TaskPerformerComponent element) throws IOException {
60798    if (element != null) {
60799    composeElementAttributes(element);
60800      xml.enter(FHIR_NS, name);
60801      composeTaskPerformerComponentElements(element);
60802      composeElementClose(element);
60803      xml.exit(FHIR_NS, name);
60804    }
60805  }
60806
60807  protected void composeTaskPerformerComponentElements(Task.TaskPerformerComponent element) throws IOException {
60808    composeBackboneElementElements(element);
60809    if (element.hasFunction()) {
60810      composeCodeableConcept("function", element.getFunction());
60811    }
60812    if (element.hasActor()) {
60813      composeReference("actor", element.getActor());
60814    }
60815  }
60816
60817  protected void composeTaskRestrictionComponent(String name, Task.TaskRestrictionComponent element) throws IOException {
60818    if (element != null) {
60819    composeElementAttributes(element);
60820      xml.enter(FHIR_NS, name);
60821      composeTaskRestrictionComponentElements(element);
60822      composeElementClose(element);
60823      xml.exit(FHIR_NS, name);
60824    }
60825  }
60826
60827  protected void composeTaskRestrictionComponentElements(Task.TaskRestrictionComponent element) throws IOException {
60828    composeBackboneElementElements(element);
60829    if (element.hasRepetitionsElement()) {
60830      composePositiveInt("repetitions", element.getRepetitionsElement());
60831    }
60832    if (element.hasPeriod()) {
60833      composePeriod("period", element.getPeriod());
60834    }
60835    if (element.hasRecipient()) { 
60836      for (Reference e : element.getRecipient()) 
60837          composeReference("recipient", e);
60838    }
60839  }
60840
60841  protected void composeTaskInputComponent(String name, Task.TaskInputComponent element) throws IOException {
60842    if (element != null) {
60843    composeElementAttributes(element);
60844      xml.enter(FHIR_NS, name);
60845      composeTaskInputComponentElements(element);
60846      composeElementClose(element);
60847      xml.exit(FHIR_NS, name);
60848    }
60849  }
60850
60851  protected void composeTaskInputComponentElements(Task.TaskInputComponent element) throws IOException {
60852    composeBackboneElementElements(element);
60853    if (element.hasType()) {
60854      composeCodeableConcept("type", element.getType());
60855    }
60856    if (element.hasValue()) {
60857      composeType("value", element.getValue());
60858    }  }
60859
60860  protected void composeTaskOutputComponent(String name, Task.TaskOutputComponent element) throws IOException {
60861    if (element != null) {
60862    composeElementAttributes(element);
60863      xml.enter(FHIR_NS, name);
60864      composeTaskOutputComponentElements(element);
60865      composeElementClose(element);
60866      xml.exit(FHIR_NS, name);
60867    }
60868  }
60869
60870  protected void composeTaskOutputComponentElements(Task.TaskOutputComponent element) throws IOException {
60871    composeBackboneElementElements(element);
60872    if (element.hasType()) {
60873      composeCodeableConcept("type", element.getType());
60874    }
60875    if (element.hasValue()) {
60876      composeType("value", element.getValue());
60877    }  }
60878
60879  protected void composeTerminologyCapabilities(String name, TerminologyCapabilities element) throws IOException {
60880    if (element != null) {
60881    composeResourceAttributes(element);
60882      xml.enter(FHIR_NS, name);
60883      composeTerminologyCapabilitiesElements(element);
60884      composeElementClose(element);
60885      xml.exit(FHIR_NS, name);
60886    }
60887  }
60888
60889  protected void composeTerminologyCapabilitiesElements(TerminologyCapabilities element) throws IOException {
60890    composeCanonicalResourceElements(element);
60891    if (element.hasUrlElement()) {
60892      composeUri("url", element.getUrlElement());
60893    }
60894    if (element.hasIdentifier()) { 
60895      for (Identifier e : element.getIdentifier()) 
60896          composeIdentifier("identifier", e);
60897    }
60898    if (element.hasVersionElement()) {
60899      composeString("version", element.getVersionElement());
60900    }
60901    if (element.hasVersionAlgorithm()) {
60902      composeType("versionAlgorithm", element.getVersionAlgorithm());
60903    }    if (element.hasNameElement()) {
60904      composeString("name", element.getNameElement());
60905    }
60906    if (element.hasTitleElement()) {
60907      composeString("title", element.getTitleElement());
60908    }
60909    if (element.hasStatusElement())
60910      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
60911    if (element.hasExperimentalElement()) {
60912      composeBoolean("experimental", element.getExperimentalElement());
60913    }
60914    if (element.hasDateElement()) {
60915      composeDateTime("date", element.getDateElement());
60916    }
60917    if (element.hasPublisherElement()) {
60918      composeString("publisher", element.getPublisherElement());
60919    }
60920    if (element.hasContact()) { 
60921      for (ContactDetail e : element.getContact()) 
60922          composeContactDetail("contact", e);
60923    }
60924    if (element.hasDescriptionElement()) {
60925      composeMarkdown("description", element.getDescriptionElement());
60926    }
60927    if (element.hasUseContext()) { 
60928      for (UsageContext e : element.getUseContext()) 
60929          composeUsageContext("useContext", e);
60930    }
60931    if (element.hasJurisdiction()) { 
60932      for (CodeableConcept e : element.getJurisdiction()) 
60933          composeCodeableConcept("jurisdiction", e);
60934    }
60935    if (element.hasPurposeElement()) {
60936      composeMarkdown("purpose", element.getPurposeElement());
60937    }
60938    if (element.hasCopyrightElement()) {
60939      composeMarkdown("copyright", element.getCopyrightElement());
60940    }
60941    if (element.hasCopyrightLabelElement()) {
60942      composeString("copyrightLabel", element.getCopyrightLabelElement());
60943    }
60944    if (element.hasKindElement())
60945      composeEnumeration("kind", element.getKindElement(), new Enumerations.CapabilityStatementKindEnumFactory());
60946    if (element.hasSoftware()) {
60947      composeTerminologyCapabilitiesSoftwareComponent("software", element.getSoftware());
60948    }
60949    if (element.hasImplementation()) {
60950      composeTerminologyCapabilitiesImplementationComponent("implementation", element.getImplementation());
60951    }
60952    if (element.hasLockedDateElement()) {
60953      composeBoolean("lockedDate", element.getLockedDateElement());
60954    }
60955    if (element.hasCodeSystem()) { 
60956      for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent e : element.getCodeSystem()) 
60957          composeTerminologyCapabilitiesCodeSystemComponent("codeSystem", e);
60958    }
60959    if (element.hasExpansion()) {
60960      composeTerminologyCapabilitiesExpansionComponent("expansion", element.getExpansion());
60961    }
60962    if (element.hasCodeSearchElement())
60963      composeEnumeration("codeSearch", element.getCodeSearchElement(), new TerminologyCapabilities.CodeSearchSupportEnumFactory());
60964    if (element.hasValidateCode()) {
60965      composeTerminologyCapabilitiesValidateCodeComponent("validateCode", element.getValidateCode());
60966    }
60967    if (element.hasTranslation()) {
60968      composeTerminologyCapabilitiesTranslationComponent("translation", element.getTranslation());
60969    }
60970    if (element.hasClosure()) {
60971      composeTerminologyCapabilitiesClosureComponent("closure", element.getClosure());
60972    }
60973  }
60974
60975  protected void composeTerminologyCapabilitiesSoftwareComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent element) throws IOException {
60976    if (element != null) {
60977    composeElementAttributes(element);
60978      xml.enter(FHIR_NS, name);
60979      composeTerminologyCapabilitiesSoftwareComponentElements(element);
60980      composeElementClose(element);
60981      xml.exit(FHIR_NS, name);
60982    }
60983  }
60984
60985  protected void composeTerminologyCapabilitiesSoftwareComponentElements(TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent element) throws IOException {
60986    composeBackboneElementElements(element);
60987    if (element.hasNameElement()) {
60988      composeString("name", element.getNameElement());
60989    }
60990    if (element.hasVersionElement()) {
60991      composeString("version", element.getVersionElement());
60992    }
60993  }
60994
60995  protected void composeTerminologyCapabilitiesImplementationComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent element) throws IOException {
60996    if (element != null) {
60997    composeElementAttributes(element);
60998      xml.enter(FHIR_NS, name);
60999      composeTerminologyCapabilitiesImplementationComponentElements(element);
61000      composeElementClose(element);
61001      xml.exit(FHIR_NS, name);
61002    }
61003  }
61004
61005  protected void composeTerminologyCapabilitiesImplementationComponentElements(TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent element) throws IOException {
61006    composeBackboneElementElements(element);
61007    if (element.hasDescriptionElement()) {
61008      composeString("description", element.getDescriptionElement());
61009    }
61010    if (element.hasUrlElement()) {
61011      composeUrl("url", element.getUrlElement());
61012    }
61013  }
61014
61015  protected void composeTerminologyCapabilitiesCodeSystemComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent element) throws IOException {
61016    if (element != null) {
61017    composeElementAttributes(element);
61018      xml.enter(FHIR_NS, name);
61019      composeTerminologyCapabilitiesCodeSystemComponentElements(element);
61020      composeElementClose(element);
61021      xml.exit(FHIR_NS, name);
61022    }
61023  }
61024
61025  protected void composeTerminologyCapabilitiesCodeSystemComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent element) throws IOException {
61026    composeBackboneElementElements(element);
61027    if (element.hasUriElement()) {
61028      composeCanonical("uri", element.getUriElement());
61029    }
61030    if (element.hasVersion()) { 
61031      for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent e : element.getVersion()) 
61032          composeTerminologyCapabilitiesCodeSystemVersionComponent("version", e);
61033    }
61034    if (element.hasContentElement())
61035      composeEnumeration("content", element.getContentElement(), new Enumerations.CodeSystemContentModeEnumFactory());
61036    if (element.hasSubsumptionElement()) {
61037      composeBoolean("subsumption", element.getSubsumptionElement());
61038    }
61039  }
61040
61041  protected void composeTerminologyCapabilitiesCodeSystemVersionComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent element) throws IOException {
61042    if (element != null) {
61043    composeElementAttributes(element);
61044      xml.enter(FHIR_NS, name);
61045      composeTerminologyCapabilitiesCodeSystemVersionComponentElements(element);
61046      composeElementClose(element);
61047      xml.exit(FHIR_NS, name);
61048    }
61049  }
61050
61051  protected void composeTerminologyCapabilitiesCodeSystemVersionComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent element) throws IOException {
61052    composeBackboneElementElements(element);
61053    if (element.hasCodeElement()) {
61054      composeString("code", element.getCodeElement());
61055    }
61056    if (element.hasIsDefaultElement()) {
61057      composeBoolean("isDefault", element.getIsDefaultElement());
61058    }
61059    if (element.hasCompositionalElement()) {
61060      composeBoolean("compositional", element.getCompositionalElement());
61061    }
61062      if (element.hasLanguage()) 
61063        for (Enumeration<Enumerations.CommonLanguages> e : element.getLanguage()) 
61064          composeEnumeration("language", e, new Enumerations.CommonLanguagesEnumFactory());
61065    if (element.hasFilter()) { 
61066      for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent e : element.getFilter()) 
61067          composeTerminologyCapabilitiesCodeSystemVersionFilterComponent("filter", e);
61068    }
61069    if (element.hasProperty()) { 
61070      for (CodeType e : element.getProperty()) 
61071          composeCode("property", e);
61072    }
61073  }
61074
61075  protected void composeTerminologyCapabilitiesCodeSystemVersionFilterComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent element) throws IOException {
61076    if (element != null) {
61077    composeElementAttributes(element);
61078      xml.enter(FHIR_NS, name);
61079      composeTerminologyCapabilitiesCodeSystemVersionFilterComponentElements(element);
61080      composeElementClose(element);
61081      xml.exit(FHIR_NS, name);
61082    }
61083  }
61084
61085  protected void composeTerminologyCapabilitiesCodeSystemVersionFilterComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent element) throws IOException {
61086    composeBackboneElementElements(element);
61087    if (element.hasCodeElement()) {
61088      composeCode("code", element.getCodeElement());
61089    }
61090    if (element.hasOp()) { 
61091      for (CodeType e : element.getOp()) 
61092          composeCode("op", e);
61093    }
61094  }
61095
61096  protected void composeTerminologyCapabilitiesExpansionComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent element) throws IOException {
61097    if (element != null) {
61098    composeElementAttributes(element);
61099      xml.enter(FHIR_NS, name);
61100      composeTerminologyCapabilitiesExpansionComponentElements(element);
61101      composeElementClose(element);
61102      xml.exit(FHIR_NS, name);
61103    }
61104  }
61105
61106  protected void composeTerminologyCapabilitiesExpansionComponentElements(TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent element) throws IOException {
61107    composeBackboneElementElements(element);
61108    if (element.hasHierarchicalElement()) {
61109      composeBoolean("hierarchical", element.getHierarchicalElement());
61110    }
61111    if (element.hasPagingElement()) {
61112      composeBoolean("paging", element.getPagingElement());
61113    }
61114    if (element.hasIncompleteElement()) {
61115      composeBoolean("incomplete", element.getIncompleteElement());
61116    }
61117    if (element.hasParameter()) { 
61118      for (TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent e : element.getParameter()) 
61119          composeTerminologyCapabilitiesExpansionParameterComponent("parameter", e);
61120    }
61121    if (element.hasTextFilterElement()) {
61122      composeMarkdown("textFilter", element.getTextFilterElement());
61123    }
61124  }
61125
61126  protected void composeTerminologyCapabilitiesExpansionParameterComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent element) throws IOException {
61127    if (element != null) {
61128    composeElementAttributes(element);
61129      xml.enter(FHIR_NS, name);
61130      composeTerminologyCapabilitiesExpansionParameterComponentElements(element);
61131      composeElementClose(element);
61132      xml.exit(FHIR_NS, name);
61133    }
61134  }
61135
61136  protected void composeTerminologyCapabilitiesExpansionParameterComponentElements(TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent element) throws IOException {
61137    composeBackboneElementElements(element);
61138    if (element.hasNameElement()) {
61139      composeCode("name", element.getNameElement());
61140    }
61141    if (element.hasDocumentationElement()) {
61142      composeString("documentation", element.getDocumentationElement());
61143    }
61144  }
61145
61146  protected void composeTerminologyCapabilitiesValidateCodeComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent element) throws IOException {
61147    if (element != null) {
61148    composeElementAttributes(element);
61149      xml.enter(FHIR_NS, name);
61150      composeTerminologyCapabilitiesValidateCodeComponentElements(element);
61151      composeElementClose(element);
61152      xml.exit(FHIR_NS, name);
61153    }
61154  }
61155
61156  protected void composeTerminologyCapabilitiesValidateCodeComponentElements(TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent element) throws IOException {
61157    composeBackboneElementElements(element);
61158    if (element.hasTranslationsElement()) {
61159      composeBoolean("translations", element.getTranslationsElement());
61160    }
61161  }
61162
61163  protected void composeTerminologyCapabilitiesTranslationComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent element) throws IOException {
61164    if (element != null) {
61165    composeElementAttributes(element);
61166      xml.enter(FHIR_NS, name);
61167      composeTerminologyCapabilitiesTranslationComponentElements(element);
61168      composeElementClose(element);
61169      xml.exit(FHIR_NS, name);
61170    }
61171  }
61172
61173  protected void composeTerminologyCapabilitiesTranslationComponentElements(TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent element) throws IOException {
61174    composeBackboneElementElements(element);
61175    if (element.hasNeedsMapElement()) {
61176      composeBoolean("needsMap", element.getNeedsMapElement());
61177    }
61178  }
61179
61180  protected void composeTerminologyCapabilitiesClosureComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesClosureComponent element) throws IOException {
61181    if (element != null) {
61182    composeElementAttributes(element);
61183      xml.enter(FHIR_NS, name);
61184      composeTerminologyCapabilitiesClosureComponentElements(element);
61185      composeElementClose(element);
61186      xml.exit(FHIR_NS, name);
61187    }
61188  }
61189
61190  protected void composeTerminologyCapabilitiesClosureComponentElements(TerminologyCapabilities.TerminologyCapabilitiesClosureComponent element) throws IOException {
61191    composeBackboneElementElements(element);
61192    if (element.hasTranslationElement()) {
61193      composeBoolean("translation", element.getTranslationElement());
61194    }
61195  }
61196
61197  protected void composeTestPlan(String name, TestPlan element) throws IOException {
61198    if (element != null) {
61199    composeResourceAttributes(element);
61200      xml.enter(FHIR_NS, name);
61201      composeTestPlanElements(element);
61202      composeElementClose(element);
61203      xml.exit(FHIR_NS, name);
61204    }
61205  }
61206
61207  protected void composeTestPlanElements(TestPlan element) throws IOException {
61208    composeCanonicalResourceElements(element);
61209    if (element.hasUrlElement()) {
61210      composeUri("url", element.getUrlElement());
61211    }
61212    if (element.hasIdentifier()) { 
61213      for (Identifier e : element.getIdentifier()) 
61214          composeIdentifier("identifier", e);
61215    }
61216    if (element.hasVersionElement()) {
61217      composeString("version", element.getVersionElement());
61218    }
61219    if (element.hasVersionAlgorithm()) {
61220      composeType("versionAlgorithm", element.getVersionAlgorithm());
61221    }    if (element.hasNameElement()) {
61222      composeString("name", element.getNameElement());
61223    }
61224    if (element.hasTitleElement()) {
61225      composeString("title", element.getTitleElement());
61226    }
61227    if (element.hasStatusElement())
61228      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
61229    if (element.hasExperimentalElement()) {
61230      composeBoolean("experimental", element.getExperimentalElement());
61231    }
61232    if (element.hasDateElement()) {
61233      composeDateTime("date", element.getDateElement());
61234    }
61235    if (element.hasPublisherElement()) {
61236      composeString("publisher", element.getPublisherElement());
61237    }
61238    if (element.hasContact()) { 
61239      for (ContactDetail e : element.getContact()) 
61240          composeContactDetail("contact", e);
61241    }
61242    if (element.hasDescriptionElement()) {
61243      composeMarkdown("description", element.getDescriptionElement());
61244    }
61245    if (element.hasUseContext()) { 
61246      for (UsageContext e : element.getUseContext()) 
61247          composeUsageContext("useContext", e);
61248    }
61249    if (element.hasJurisdiction()) { 
61250      for (CodeableConcept e : element.getJurisdiction()) 
61251          composeCodeableConcept("jurisdiction", e);
61252    }
61253    if (element.hasPurposeElement()) {
61254      composeMarkdown("purpose", element.getPurposeElement());
61255    }
61256    if (element.hasCopyrightElement()) {
61257      composeMarkdown("copyright", element.getCopyrightElement());
61258    }
61259    if (element.hasCopyrightLabelElement()) {
61260      composeString("copyrightLabel", element.getCopyrightLabelElement());
61261    }
61262    if (element.hasCategory()) { 
61263      for (CodeableConcept e : element.getCategory()) 
61264          composeCodeableConcept("category", e);
61265    }
61266    if (element.hasScope()) { 
61267      for (Reference e : element.getScope()) 
61268          composeReference("scope", e);
61269    }
61270    if (element.hasTestToolsElement()) {
61271      composeMarkdown("testTools", element.getTestToolsElement());
61272    }
61273    if (element.hasDependency()) { 
61274      for (TestPlan.TestPlanDependencyComponent e : element.getDependency()) 
61275          composeTestPlanDependencyComponent("dependency", e);
61276    }
61277    if (element.hasExitCriteriaElement()) {
61278      composeMarkdown("exitCriteria", element.getExitCriteriaElement());
61279    }
61280    if (element.hasTestCase()) { 
61281      for (TestPlan.TestPlanTestCaseComponent e : element.getTestCase()) 
61282          composeTestPlanTestCaseComponent("testCase", e);
61283    }
61284  }
61285
61286  protected void composeTestPlanDependencyComponent(String name, TestPlan.TestPlanDependencyComponent element) throws IOException {
61287    if (element != null) {
61288    composeElementAttributes(element);
61289      xml.enter(FHIR_NS, name);
61290      composeTestPlanDependencyComponentElements(element);
61291      composeElementClose(element);
61292      xml.exit(FHIR_NS, name);
61293    }
61294  }
61295
61296  protected void composeTestPlanDependencyComponentElements(TestPlan.TestPlanDependencyComponent element) throws IOException {
61297    composeBackboneElementElements(element);
61298    if (element.hasDescriptionElement()) {
61299      composeMarkdown("description", element.getDescriptionElement());
61300    }
61301    if (element.hasPredecessor()) {
61302      composeReference("predecessor", element.getPredecessor());
61303    }
61304  }
61305
61306  protected void composeTestPlanTestCaseComponent(String name, TestPlan.TestPlanTestCaseComponent element) throws IOException {
61307    if (element != null) {
61308    composeElementAttributes(element);
61309      xml.enter(FHIR_NS, name);
61310      composeTestPlanTestCaseComponentElements(element);
61311      composeElementClose(element);
61312      xml.exit(FHIR_NS, name);
61313    }
61314  }
61315
61316  protected void composeTestPlanTestCaseComponentElements(TestPlan.TestPlanTestCaseComponent element) throws IOException {
61317    composeBackboneElementElements(element);
61318    if (element.hasSequenceElement()) {
61319      composeInteger("sequence", element.getSequenceElement());
61320    }
61321    if (element.hasScope()) { 
61322      for (Reference e : element.getScope()) 
61323          composeReference("scope", e);
61324    }
61325    if (element.hasDependency()) { 
61326      for (TestPlan.TestCaseDependencyComponent e : element.getDependency()) 
61327          composeTestPlanTestCaseDependencyComponent("dependency", e);
61328    }
61329    if (element.hasTestRun()) { 
61330      for (TestPlan.TestPlanTestCaseTestRunComponent e : element.getTestRun()) 
61331          composeTestPlanTestCaseTestRunComponent("testRun", e);
61332    }
61333    if (element.hasTestData()) { 
61334      for (TestPlan.TestPlanTestCaseTestDataComponent e : element.getTestData()) 
61335          composeTestPlanTestCaseTestDataComponent("testData", e);
61336    }
61337    if (element.hasAssertion()) { 
61338      for (TestPlan.TestPlanTestCaseAssertionComponent e : element.getAssertion()) 
61339          composeTestPlanTestCaseAssertionComponent("assertion", e);
61340    }
61341  }
61342
61343  protected void composeTestPlanTestCaseDependencyComponent(String name, TestPlan.TestCaseDependencyComponent element) throws IOException {
61344    if (element != null) {
61345    composeElementAttributes(element);
61346      xml.enter(FHIR_NS, name);
61347      composeTestPlanTestCaseDependencyComponentElements(element);
61348      composeElementClose(element);
61349      xml.exit(FHIR_NS, name);
61350    }
61351  }
61352
61353  protected void composeTestPlanTestCaseDependencyComponentElements(TestPlan.TestCaseDependencyComponent element) throws IOException {
61354    composeBackboneElementElements(element);
61355    if (element.hasDescriptionElement()) {
61356      composeMarkdown("description", element.getDescriptionElement());
61357    }
61358    if (element.hasPredecessor()) {
61359      composeReference("predecessor", element.getPredecessor());
61360    }
61361  }
61362
61363  protected void composeTestPlanTestCaseTestRunComponent(String name, TestPlan.TestPlanTestCaseTestRunComponent element) throws IOException {
61364    if (element != null) {
61365    composeElementAttributes(element);
61366      xml.enter(FHIR_NS, name);
61367      composeTestPlanTestCaseTestRunComponentElements(element);
61368      composeElementClose(element);
61369      xml.exit(FHIR_NS, name);
61370    }
61371  }
61372
61373  protected void composeTestPlanTestCaseTestRunComponentElements(TestPlan.TestPlanTestCaseTestRunComponent element) throws IOException {
61374    composeBackboneElementElements(element);
61375    if (element.hasNarrativeElement()) {
61376      composeMarkdown("narrative", element.getNarrativeElement());
61377    }
61378    if (element.hasScript()) {
61379      composeTestPlanTestCaseTestRunScriptComponent("script", element.getScript());
61380    }
61381  }
61382
61383  protected void composeTestPlanTestCaseTestRunScriptComponent(String name, TestPlan.TestPlanTestCaseTestRunScriptComponent element) throws IOException {
61384    if (element != null) {
61385    composeElementAttributes(element);
61386      xml.enter(FHIR_NS, name);
61387      composeTestPlanTestCaseTestRunScriptComponentElements(element);
61388      composeElementClose(element);
61389      xml.exit(FHIR_NS, name);
61390    }
61391  }
61392
61393  protected void composeTestPlanTestCaseTestRunScriptComponentElements(TestPlan.TestPlanTestCaseTestRunScriptComponent element) throws IOException {
61394    composeBackboneElementElements(element);
61395    if (element.hasLanguage()) {
61396      composeCodeableConcept("language", element.getLanguage());
61397    }
61398    if (element.hasSource()) {
61399      composeType("source", element.getSource());
61400    }  }
61401
61402  protected void composeTestPlanTestCaseTestDataComponent(String name, TestPlan.TestPlanTestCaseTestDataComponent element) throws IOException {
61403    if (element != null) {
61404    composeElementAttributes(element);
61405      xml.enter(FHIR_NS, name);
61406      composeTestPlanTestCaseTestDataComponentElements(element);
61407      composeElementClose(element);
61408      xml.exit(FHIR_NS, name);
61409    }
61410  }
61411
61412  protected void composeTestPlanTestCaseTestDataComponentElements(TestPlan.TestPlanTestCaseTestDataComponent element) throws IOException {
61413    composeBackboneElementElements(element);
61414    if (element.hasType()) {
61415      composeCoding("type", element.getType());
61416    }
61417    if (element.hasContent()) {
61418      composeReference("content", element.getContent());
61419    }
61420    if (element.hasSource()) {
61421      composeType("source", element.getSource());
61422    }  }
61423
61424  protected void composeTestPlanTestCaseAssertionComponent(String name, TestPlan.TestPlanTestCaseAssertionComponent element) throws IOException {
61425    if (element != null) {
61426    composeElementAttributes(element);
61427      xml.enter(FHIR_NS, name);
61428      composeTestPlanTestCaseAssertionComponentElements(element);
61429      composeElementClose(element);
61430      xml.exit(FHIR_NS, name);
61431    }
61432  }
61433
61434  protected void composeTestPlanTestCaseAssertionComponentElements(TestPlan.TestPlanTestCaseAssertionComponent element) throws IOException {
61435    composeBackboneElementElements(element);
61436    if (element.hasType()) { 
61437      for (CodeableConcept e : element.getType()) 
61438          composeCodeableConcept("type", e);
61439    }
61440    if (element.hasObject()) { 
61441      for (CodeableReference e : element.getObject()) 
61442          composeCodeableReference("object", e);
61443    }
61444    if (element.hasResult()) { 
61445      for (CodeableReference e : element.getResult()) 
61446          composeCodeableReference("result", e);
61447    }
61448  }
61449
61450  protected void composeTestReport(String name, TestReport element) throws IOException {
61451    if (element != null) {
61452    composeResourceAttributes(element);
61453      xml.enter(FHIR_NS, name);
61454      composeTestReportElements(element);
61455      composeElementClose(element);
61456      xml.exit(FHIR_NS, name);
61457    }
61458  }
61459
61460  protected void composeTestReportElements(TestReport element) throws IOException {
61461    composeDomainResourceElements(element);
61462    if (element.hasIdentifier()) {
61463      composeIdentifier("identifier", element.getIdentifier());
61464    }
61465    if (element.hasNameElement()) {
61466      composeString("name", element.getNameElement());
61467    }
61468    if (element.hasStatusElement())
61469      composeEnumeration("status", element.getStatusElement(), new TestReport.TestReportStatusEnumFactory());
61470    if (element.hasTestScriptElement()) {
61471      composeCanonical("testScript", element.getTestScriptElement());
61472    }
61473    if (element.hasResultElement())
61474      composeEnumeration("result", element.getResultElement(), new TestReport.TestReportResultEnumFactory());
61475    if (element.hasScoreElement()) {
61476      composeDecimal("score", element.getScoreElement());
61477    }
61478    if (element.hasTesterElement()) {
61479      composeString("tester", element.getTesterElement());
61480    }
61481    if (element.hasIssuedElement()) {
61482      composeDateTime("issued", element.getIssuedElement());
61483    }
61484    if (element.hasParticipant()) { 
61485      for (TestReport.TestReportParticipantComponent e : element.getParticipant()) 
61486          composeTestReportParticipantComponent("participant", e);
61487    }
61488    if (element.hasSetup()) {
61489      composeTestReportSetupComponent("setup", element.getSetup());
61490    }
61491    if (element.hasTest()) { 
61492      for (TestReport.TestReportTestComponent e : element.getTest()) 
61493          composeTestReportTestComponent("test", e);
61494    }
61495    if (element.hasTeardown()) {
61496      composeTestReportTeardownComponent("teardown", element.getTeardown());
61497    }
61498  }
61499
61500  protected void composeTestReportParticipantComponent(String name, TestReport.TestReportParticipantComponent element) throws IOException {
61501    if (element != null) {
61502    composeElementAttributes(element);
61503      xml.enter(FHIR_NS, name);
61504      composeTestReportParticipantComponentElements(element);
61505      composeElementClose(element);
61506      xml.exit(FHIR_NS, name);
61507    }
61508  }
61509
61510  protected void composeTestReportParticipantComponentElements(TestReport.TestReportParticipantComponent element) throws IOException {
61511    composeBackboneElementElements(element);
61512    if (element.hasTypeElement())
61513      composeEnumeration("type", element.getTypeElement(), new TestReport.TestReportParticipantTypeEnumFactory());
61514    if (element.hasUriElement()) {
61515      composeUri("uri", element.getUriElement());
61516    }
61517    if (element.hasDisplayElement()) {
61518      composeString("display", element.getDisplayElement());
61519    }
61520  }
61521
61522  protected void composeTestReportSetupComponent(String name, TestReport.TestReportSetupComponent element) throws IOException {
61523    if (element != null) {
61524    composeElementAttributes(element);
61525      xml.enter(FHIR_NS, name);
61526      composeTestReportSetupComponentElements(element);
61527      composeElementClose(element);
61528      xml.exit(FHIR_NS, name);
61529    }
61530  }
61531
61532  protected void composeTestReportSetupComponentElements(TestReport.TestReportSetupComponent element) throws IOException {
61533    composeBackboneElementElements(element);
61534    if (element.hasAction()) { 
61535      for (TestReport.SetupActionComponent e : element.getAction()) 
61536          composeTestReportSetupActionComponent("action", e);
61537    }
61538  }
61539
61540  protected void composeTestReportSetupActionComponent(String name, TestReport.SetupActionComponent element) throws IOException {
61541    if (element != null) {
61542    composeElementAttributes(element);
61543      xml.enter(FHIR_NS, name);
61544      composeTestReportSetupActionComponentElements(element);
61545      composeElementClose(element);
61546      xml.exit(FHIR_NS, name);
61547    }
61548  }
61549
61550  protected void composeTestReportSetupActionComponentElements(TestReport.SetupActionComponent element) throws IOException {
61551    composeBackboneElementElements(element);
61552    if (element.hasOperation()) {
61553      composeTestReportSetupActionOperationComponent("operation", element.getOperation());
61554    }
61555    if (element.hasAssert()) {
61556      composeTestReportSetupActionAssertComponent("assert", element.getAssert());
61557    }
61558  }
61559
61560  protected void composeTestReportSetupActionOperationComponent(String name, TestReport.SetupActionOperationComponent element) throws IOException {
61561    if (element != null) {
61562    composeElementAttributes(element);
61563      xml.enter(FHIR_NS, name);
61564      composeTestReportSetupActionOperationComponentElements(element);
61565      composeElementClose(element);
61566      xml.exit(FHIR_NS, name);
61567    }
61568  }
61569
61570  protected void composeTestReportSetupActionOperationComponentElements(TestReport.SetupActionOperationComponent element) throws IOException {
61571    composeBackboneElementElements(element);
61572    if (element.hasResultElement())
61573      composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
61574    if (element.hasMessageElement()) {
61575      composeMarkdown("message", element.getMessageElement());
61576    }
61577    if (element.hasDetailElement()) {
61578      composeUri("detail", element.getDetailElement());
61579    }
61580  }
61581
61582  protected void composeTestReportSetupActionAssertComponent(String name, TestReport.SetupActionAssertComponent element) throws IOException {
61583    if (element != null) {
61584    composeElementAttributes(element);
61585      xml.enter(FHIR_NS, name);
61586      composeTestReportSetupActionAssertComponentElements(element);
61587      composeElementClose(element);
61588      xml.exit(FHIR_NS, name);
61589    }
61590  }
61591
61592  protected void composeTestReportSetupActionAssertComponentElements(TestReport.SetupActionAssertComponent element) throws IOException {
61593    composeBackboneElementElements(element);
61594    if (element.hasResultElement())
61595      composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
61596    if (element.hasMessageElement()) {
61597      composeMarkdown("message", element.getMessageElement());
61598    }
61599    if (element.hasDetailElement()) {
61600      composeString("detail", element.getDetailElement());
61601    }
61602    if (element.hasRequirement()) { 
61603      for (TestReport.SetupActionAssertRequirementComponent e : element.getRequirement()) 
61604          composeTestReportSetupActionAssertRequirementComponent("requirement", e);
61605    }
61606  }
61607
61608  protected void composeTestReportSetupActionAssertRequirementComponent(String name, TestReport.SetupActionAssertRequirementComponent element) throws IOException {
61609    if (element != null) {
61610    composeElementAttributes(element);
61611      xml.enter(FHIR_NS, name);
61612      composeTestReportSetupActionAssertRequirementComponentElements(element);
61613      composeElementClose(element);
61614      xml.exit(FHIR_NS, name);
61615    }
61616  }
61617
61618  protected void composeTestReportSetupActionAssertRequirementComponentElements(TestReport.SetupActionAssertRequirementComponent element) throws IOException {
61619    composeBackboneElementElements(element);
61620    if (element.hasLink()) {
61621      composeType("link", element.getLink());
61622    }  }
61623
61624  protected void composeTestReportTestComponent(String name, TestReport.TestReportTestComponent element) throws IOException {
61625    if (element != null) {
61626    composeElementAttributes(element);
61627      xml.enter(FHIR_NS, name);
61628      composeTestReportTestComponentElements(element);
61629      composeElementClose(element);
61630      xml.exit(FHIR_NS, name);
61631    }
61632  }
61633
61634  protected void composeTestReportTestComponentElements(TestReport.TestReportTestComponent element) throws IOException {
61635    composeBackboneElementElements(element);
61636    if (element.hasNameElement()) {
61637      composeString("name", element.getNameElement());
61638    }
61639    if (element.hasDescriptionElement()) {
61640      composeString("description", element.getDescriptionElement());
61641    }
61642    if (element.hasAction()) { 
61643      for (TestReport.TestActionComponent e : element.getAction()) 
61644          composeTestReportTestActionComponent("action", e);
61645    }
61646  }
61647
61648  protected void composeTestReportTestActionComponent(String name, TestReport.TestActionComponent element) throws IOException {
61649    if (element != null) {
61650    composeElementAttributes(element);
61651      xml.enter(FHIR_NS, name);
61652      composeTestReportTestActionComponentElements(element);
61653      composeElementClose(element);
61654      xml.exit(FHIR_NS, name);
61655    }
61656  }
61657
61658  protected void composeTestReportTestActionComponentElements(TestReport.TestActionComponent element) throws IOException {
61659    composeBackboneElementElements(element);
61660    if (element.hasOperation()) {
61661      composeTestReportSetupActionOperationComponent("operation", element.getOperation());
61662    }
61663    if (element.hasAssert()) {
61664      composeTestReportSetupActionAssertComponent("assert", element.getAssert());
61665    }
61666  }
61667
61668  protected void composeTestReportTeardownComponent(String name, TestReport.TestReportTeardownComponent element) throws IOException {
61669    if (element != null) {
61670    composeElementAttributes(element);
61671      xml.enter(FHIR_NS, name);
61672      composeTestReportTeardownComponentElements(element);
61673      composeElementClose(element);
61674      xml.exit(FHIR_NS, name);
61675    }
61676  }
61677
61678  protected void composeTestReportTeardownComponentElements(TestReport.TestReportTeardownComponent element) throws IOException {
61679    composeBackboneElementElements(element);
61680    if (element.hasAction()) { 
61681      for (TestReport.TeardownActionComponent e : element.getAction()) 
61682          composeTestReportTeardownActionComponent("action", e);
61683    }
61684  }
61685
61686  protected void composeTestReportTeardownActionComponent(String name, TestReport.TeardownActionComponent element) throws IOException {
61687    if (element != null) {
61688    composeElementAttributes(element);
61689      xml.enter(FHIR_NS, name);
61690      composeTestReportTeardownActionComponentElements(element);
61691      composeElementClose(element);
61692      xml.exit(FHIR_NS, name);
61693    }
61694  }
61695
61696  protected void composeTestReportTeardownActionComponentElements(TestReport.TeardownActionComponent element) throws IOException {
61697    composeBackboneElementElements(element);
61698    if (element.hasOperation()) {
61699      composeTestReportSetupActionOperationComponent("operation", element.getOperation());
61700    }
61701  }
61702
61703  protected void composeTestScript(String name, TestScript element) throws IOException {
61704    if (element != null) {
61705    composeResourceAttributes(element);
61706      xml.enter(FHIR_NS, name);
61707      composeTestScriptElements(element);
61708      composeElementClose(element);
61709      xml.exit(FHIR_NS, name);
61710    }
61711  }
61712
61713  protected void composeTestScriptElements(TestScript element) throws IOException {
61714    composeCanonicalResourceElements(element);
61715    if (element.hasUrlElement()) {
61716      composeUri("url", element.getUrlElement());
61717    }
61718    if (element.hasIdentifier()) { 
61719      for (Identifier e : element.getIdentifier()) 
61720          composeIdentifier("identifier", e);
61721    }
61722    if (element.hasVersionElement()) {
61723      composeString("version", element.getVersionElement());
61724    }
61725    if (element.hasVersionAlgorithm()) {
61726      composeType("versionAlgorithm", element.getVersionAlgorithm());
61727    }    if (element.hasNameElement()) {
61728      composeString("name", element.getNameElement());
61729    }
61730    if (element.hasTitleElement()) {
61731      composeString("title", element.getTitleElement());
61732    }
61733    if (element.hasStatusElement())
61734      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
61735    if (element.hasExperimentalElement()) {
61736      composeBoolean("experimental", element.getExperimentalElement());
61737    }
61738    if (element.hasDateElement()) {
61739      composeDateTime("date", element.getDateElement());
61740    }
61741    if (element.hasPublisherElement()) {
61742      composeString("publisher", element.getPublisherElement());
61743    }
61744    if (element.hasContact()) { 
61745      for (ContactDetail e : element.getContact()) 
61746          composeContactDetail("contact", e);
61747    }
61748    if (element.hasDescriptionElement()) {
61749      composeMarkdown("description", element.getDescriptionElement());
61750    }
61751    if (element.hasUseContext()) { 
61752      for (UsageContext e : element.getUseContext()) 
61753          composeUsageContext("useContext", e);
61754    }
61755    if (element.hasJurisdiction()) { 
61756      for (CodeableConcept e : element.getJurisdiction()) 
61757          composeCodeableConcept("jurisdiction", e);
61758    }
61759    if (element.hasPurposeElement()) {
61760      composeMarkdown("purpose", element.getPurposeElement());
61761    }
61762    if (element.hasCopyrightElement()) {
61763      composeMarkdown("copyright", element.getCopyrightElement());
61764    }
61765    if (element.hasCopyrightLabelElement()) {
61766      composeString("copyrightLabel", element.getCopyrightLabelElement());
61767    }
61768    if (element.hasOrigin()) { 
61769      for (TestScript.TestScriptOriginComponent e : element.getOrigin()) 
61770          composeTestScriptOriginComponent("origin", e);
61771    }
61772    if (element.hasDestination()) { 
61773      for (TestScript.TestScriptDestinationComponent e : element.getDestination()) 
61774          composeTestScriptDestinationComponent("destination", e);
61775    }
61776    if (element.hasMetadata()) {
61777      composeTestScriptMetadataComponent("metadata", element.getMetadata());
61778    }
61779    if (element.hasScope()) { 
61780      for (TestScript.TestScriptScopeComponent e : element.getScope()) 
61781          composeTestScriptScopeComponent("scope", e);
61782    }
61783    if (element.hasFixture()) { 
61784      for (TestScript.TestScriptFixtureComponent e : element.getFixture()) 
61785          composeTestScriptFixtureComponent("fixture", e);
61786    }
61787    if (element.hasProfile()) { 
61788      for (CanonicalType e : element.getProfile()) 
61789          composeCanonical("profile", e);
61790    }
61791    if (element.hasVariable()) { 
61792      for (TestScript.TestScriptVariableComponent e : element.getVariable()) 
61793          composeTestScriptVariableComponent("variable", e);
61794    }
61795    if (element.hasSetup()) {
61796      composeTestScriptSetupComponent("setup", element.getSetup());
61797    }
61798    if (element.hasTest()) { 
61799      for (TestScript.TestScriptTestComponent e : element.getTest()) 
61800          composeTestScriptTestComponent("test", e);
61801    }
61802    if (element.hasTeardown()) {
61803      composeTestScriptTeardownComponent("teardown", element.getTeardown());
61804    }
61805  }
61806
61807  protected void composeTestScriptOriginComponent(String name, TestScript.TestScriptOriginComponent element) throws IOException {
61808    if (element != null) {
61809    composeElementAttributes(element);
61810      xml.enter(FHIR_NS, name);
61811      composeTestScriptOriginComponentElements(element);
61812      composeElementClose(element);
61813      xml.exit(FHIR_NS, name);
61814    }
61815  }
61816
61817  protected void composeTestScriptOriginComponentElements(TestScript.TestScriptOriginComponent element) throws IOException {
61818    composeBackboneElementElements(element);
61819    if (element.hasIndexElement()) {
61820      composeInteger("index", element.getIndexElement());
61821    }
61822    if (element.hasProfile()) {
61823      composeCoding("profile", element.getProfile());
61824    }
61825    if (element.hasUrlElement()) {
61826      composeUrl("url", element.getUrlElement());
61827    }
61828  }
61829
61830  protected void composeTestScriptDestinationComponent(String name, TestScript.TestScriptDestinationComponent element) throws IOException {
61831    if (element != null) {
61832    composeElementAttributes(element);
61833      xml.enter(FHIR_NS, name);
61834      composeTestScriptDestinationComponentElements(element);
61835      composeElementClose(element);
61836      xml.exit(FHIR_NS, name);
61837    }
61838  }
61839
61840  protected void composeTestScriptDestinationComponentElements(TestScript.TestScriptDestinationComponent element) throws IOException {
61841    composeBackboneElementElements(element);
61842    if (element.hasIndexElement()) {
61843      composeInteger("index", element.getIndexElement());
61844    }
61845    if (element.hasProfile()) {
61846      composeCoding("profile", element.getProfile());
61847    }
61848    if (element.hasUrlElement()) {
61849      composeUrl("url", element.getUrlElement());
61850    }
61851  }
61852
61853  protected void composeTestScriptMetadataComponent(String name, TestScript.TestScriptMetadataComponent element) throws IOException {
61854    if (element != null) {
61855    composeElementAttributes(element);
61856      xml.enter(FHIR_NS, name);
61857      composeTestScriptMetadataComponentElements(element);
61858      composeElementClose(element);
61859      xml.exit(FHIR_NS, name);
61860    }
61861  }
61862
61863  protected void composeTestScriptMetadataComponentElements(TestScript.TestScriptMetadataComponent element) throws IOException {
61864    composeBackboneElementElements(element);
61865    if (element.hasLink()) { 
61866      for (TestScript.TestScriptMetadataLinkComponent e : element.getLink()) 
61867          composeTestScriptMetadataLinkComponent("link", e);
61868    }
61869    if (element.hasCapability()) { 
61870      for (TestScript.TestScriptMetadataCapabilityComponent e : element.getCapability()) 
61871          composeTestScriptMetadataCapabilityComponent("capability", e);
61872    }
61873  }
61874
61875  protected void composeTestScriptMetadataLinkComponent(String name, TestScript.TestScriptMetadataLinkComponent element) throws IOException {
61876    if (element != null) {
61877    composeElementAttributes(element);
61878      xml.enter(FHIR_NS, name);
61879      composeTestScriptMetadataLinkComponentElements(element);
61880      composeElementClose(element);
61881      xml.exit(FHIR_NS, name);
61882    }
61883  }
61884
61885  protected void composeTestScriptMetadataLinkComponentElements(TestScript.TestScriptMetadataLinkComponent element) throws IOException {
61886    composeBackboneElementElements(element);
61887    if (element.hasUrlElement()) {
61888      composeUri("url", element.getUrlElement());
61889    }
61890    if (element.hasDescriptionElement()) {
61891      composeString("description", element.getDescriptionElement());
61892    }
61893  }
61894
61895  protected void composeTestScriptMetadataCapabilityComponent(String name, TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
61896    if (element != null) {
61897    composeElementAttributes(element);
61898      xml.enter(FHIR_NS, name);
61899      composeTestScriptMetadataCapabilityComponentElements(element);
61900      composeElementClose(element);
61901      xml.exit(FHIR_NS, name);
61902    }
61903  }
61904
61905  protected void composeTestScriptMetadataCapabilityComponentElements(TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
61906    composeBackboneElementElements(element);
61907    if (element.hasRequiredElement()) {
61908      composeBoolean("required", element.getRequiredElement());
61909    }
61910    if (element.hasValidatedElement()) {
61911      composeBoolean("validated", element.getValidatedElement());
61912    }
61913    if (element.hasDescriptionElement()) {
61914      composeString("description", element.getDescriptionElement());
61915    }
61916    if (element.hasOrigin()) { 
61917      for (IntegerType e : element.getOrigin()) 
61918          composeInteger("origin", e);
61919    }
61920    if (element.hasDestinationElement()) {
61921      composeInteger("destination", element.getDestinationElement());
61922    }
61923    if (element.hasLink()) { 
61924      for (UriType e : element.getLink()) 
61925          composeUri("link", e);
61926    }
61927    if (element.hasCapabilitiesElement()) {
61928      composeCanonical("capabilities", element.getCapabilitiesElement());
61929    }
61930  }
61931
61932  protected void composeTestScriptScopeComponent(String name, TestScript.TestScriptScopeComponent element) throws IOException {
61933    if (element != null) {
61934    composeElementAttributes(element);
61935      xml.enter(FHIR_NS, name);
61936      composeTestScriptScopeComponentElements(element);
61937      composeElementClose(element);
61938      xml.exit(FHIR_NS, name);
61939    }
61940  }
61941
61942  protected void composeTestScriptScopeComponentElements(TestScript.TestScriptScopeComponent element) throws IOException {
61943    composeBackboneElementElements(element);
61944    if (element.hasArtifactElement()) {
61945      composeCanonical("artifact", element.getArtifactElement());
61946    }
61947    if (element.hasConformance()) {
61948      composeCodeableConcept("conformance", element.getConformance());
61949    }
61950    if (element.hasPhase()) {
61951      composeCodeableConcept("phase", element.getPhase());
61952    }
61953  }
61954
61955  protected void composeTestScriptFixtureComponent(String name, TestScript.TestScriptFixtureComponent element) throws IOException {
61956    if (element != null) {
61957    composeElementAttributes(element);
61958      xml.enter(FHIR_NS, name);
61959      composeTestScriptFixtureComponentElements(element);
61960      composeElementClose(element);
61961      xml.exit(FHIR_NS, name);
61962    }
61963  }
61964
61965  protected void composeTestScriptFixtureComponentElements(TestScript.TestScriptFixtureComponent element) throws IOException {
61966    composeBackboneElementElements(element);
61967    if (element.hasAutocreateElement()) {
61968      composeBoolean("autocreate", element.getAutocreateElement());
61969    }
61970    if (element.hasAutodeleteElement()) {
61971      composeBoolean("autodelete", element.getAutodeleteElement());
61972    }
61973    if (element.hasResource()) {
61974      composeReference("resource", element.getResource());
61975    }
61976  }
61977
61978  protected void composeTestScriptVariableComponent(String name, TestScript.TestScriptVariableComponent element) throws IOException {
61979    if (element != null) {
61980    composeElementAttributes(element);
61981      xml.enter(FHIR_NS, name);
61982      composeTestScriptVariableComponentElements(element);
61983      composeElementClose(element);
61984      xml.exit(FHIR_NS, name);
61985    }
61986  }
61987
61988  protected void composeTestScriptVariableComponentElements(TestScript.TestScriptVariableComponent element) throws IOException {
61989    composeBackboneElementElements(element);
61990    if (element.hasNameElement()) {
61991      composeString("name", element.getNameElement());
61992    }
61993    if (element.hasDefaultValueElement()) {
61994      composeString("defaultValue", element.getDefaultValueElement());
61995    }
61996    if (element.hasDescriptionElement()) {
61997      composeString("description", element.getDescriptionElement());
61998    }
61999    if (element.hasExpressionElement()) {
62000      composeString("expression", element.getExpressionElement());
62001    }
62002    if (element.hasHeaderFieldElement()) {
62003      composeString("headerField", element.getHeaderFieldElement());
62004    }
62005    if (element.hasHintElement()) {
62006      composeString("hint", element.getHintElement());
62007    }
62008    if (element.hasPathElement()) {
62009      composeString("path", element.getPathElement());
62010    }
62011    if (element.hasSourceIdElement()) {
62012      composeId("sourceId", element.getSourceIdElement());
62013    }
62014  }
62015
62016  protected void composeTestScriptSetupComponent(String name, TestScript.TestScriptSetupComponent element) throws IOException {
62017    if (element != null) {
62018    composeElementAttributes(element);
62019      xml.enter(FHIR_NS, name);
62020      composeTestScriptSetupComponentElements(element);
62021      composeElementClose(element);
62022      xml.exit(FHIR_NS, name);
62023    }
62024  }
62025
62026  protected void composeTestScriptSetupComponentElements(TestScript.TestScriptSetupComponent element) throws IOException {
62027    composeBackboneElementElements(element);
62028    if (element.hasAction()) { 
62029      for (TestScript.SetupActionComponent e : element.getAction()) 
62030          composeTestScriptSetupActionComponent("action", e);
62031    }
62032  }
62033
62034  protected void composeTestScriptSetupActionComponent(String name, TestScript.SetupActionComponent element) throws IOException {
62035    if (element != null) {
62036    composeElementAttributes(element);
62037      xml.enter(FHIR_NS, name);
62038      composeTestScriptSetupActionComponentElements(element);
62039      composeElementClose(element);
62040      xml.exit(FHIR_NS, name);
62041    }
62042  }
62043
62044  protected void composeTestScriptSetupActionComponentElements(TestScript.SetupActionComponent element) throws IOException {
62045    composeBackboneElementElements(element);
62046    if (element.hasOperation()) {
62047      composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
62048    }
62049    if (element.hasAssert()) {
62050      composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
62051    }
62052  }
62053
62054  protected void composeTestScriptSetupActionOperationComponent(String name, TestScript.SetupActionOperationComponent element) throws IOException {
62055    if (element != null) {
62056    composeElementAttributes(element);
62057      xml.enter(FHIR_NS, name);
62058      composeTestScriptSetupActionOperationComponentElements(element);
62059      composeElementClose(element);
62060      xml.exit(FHIR_NS, name);
62061    }
62062  }
62063
62064  protected void composeTestScriptSetupActionOperationComponentElements(TestScript.SetupActionOperationComponent element) throws IOException {
62065    composeBackboneElementElements(element);
62066    if (element.hasType()) {
62067      composeCoding("type", element.getType());
62068    }
62069    if (element.hasResourceElement()) {
62070      composeUri("resource", element.getResourceElement());
62071    }
62072    if (element.hasLabelElement()) {
62073      composeString("label", element.getLabelElement());
62074    }
62075    if (element.hasDescriptionElement()) {
62076      composeString("description", element.getDescriptionElement());
62077    }
62078    if (element.hasAcceptElement()) {
62079      composeCode("accept", element.getAcceptElement());
62080    }
62081    if (element.hasContentTypeElement()) {
62082      composeCode("contentType", element.getContentTypeElement());
62083    }
62084    if (element.hasDestinationElement()) {
62085      composeInteger("destination", element.getDestinationElement());
62086    }
62087    if (element.hasEncodeRequestUrlElement()) {
62088      composeBoolean("encodeRequestUrl", element.getEncodeRequestUrlElement());
62089    }
62090    if (element.hasMethodElement())
62091      composeEnumeration("method", element.getMethodElement(), new TestScript.TestScriptRequestMethodCodeEnumFactory());
62092    if (element.hasOriginElement()) {
62093      composeInteger("origin", element.getOriginElement());
62094    }
62095    if (element.hasParamsElement()) {
62096      composeString("params", element.getParamsElement());
62097    }
62098    if (element.hasRequestHeader()) { 
62099      for (TestScript.SetupActionOperationRequestHeaderComponent e : element.getRequestHeader()) 
62100          composeTestScriptSetupActionOperationRequestHeaderComponent("requestHeader", e);
62101    }
62102    if (element.hasRequestIdElement()) {
62103      composeId("requestId", element.getRequestIdElement());
62104    }
62105    if (element.hasResponseIdElement()) {
62106      composeId("responseId", element.getResponseIdElement());
62107    }
62108    if (element.hasSourceIdElement()) {
62109      composeId("sourceId", element.getSourceIdElement());
62110    }
62111    if (element.hasTargetIdElement()) {
62112      composeId("targetId", element.getTargetIdElement());
62113    }
62114    if (element.hasUrlElement()) {
62115      composeString("url", element.getUrlElement());
62116    }
62117  }
62118
62119  protected void composeTestScriptSetupActionOperationRequestHeaderComponent(String name, TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
62120    if (element != null) {
62121    composeElementAttributes(element);
62122      xml.enter(FHIR_NS, name);
62123      composeTestScriptSetupActionOperationRequestHeaderComponentElements(element);
62124      composeElementClose(element);
62125      xml.exit(FHIR_NS, name);
62126    }
62127  }
62128
62129  protected void composeTestScriptSetupActionOperationRequestHeaderComponentElements(TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
62130    composeBackboneElementElements(element);
62131    if (element.hasFieldElement()) {
62132      composeString("field", element.getFieldElement());
62133    }
62134    if (element.hasValueElement()) {
62135      composeString("value", element.getValueElement());
62136    }
62137  }
62138
62139  protected void composeTestScriptSetupActionAssertComponent(String name, TestScript.SetupActionAssertComponent element) throws IOException {
62140    if (element != null) {
62141    composeElementAttributes(element);
62142      xml.enter(FHIR_NS, name);
62143      composeTestScriptSetupActionAssertComponentElements(element);
62144      composeElementClose(element);
62145      xml.exit(FHIR_NS, name);
62146    }
62147  }
62148
62149  protected void composeTestScriptSetupActionAssertComponentElements(TestScript.SetupActionAssertComponent element) throws IOException {
62150    composeBackboneElementElements(element);
62151    if (element.hasLabelElement()) {
62152      composeString("label", element.getLabelElement());
62153    }
62154    if (element.hasDescriptionElement()) {
62155      composeString("description", element.getDescriptionElement());
62156    }
62157    if (element.hasDirectionElement())
62158      composeEnumeration("direction", element.getDirectionElement(), new TestScript.AssertionDirectionTypeEnumFactory());
62159    if (element.hasCompareToSourceIdElement()) {
62160      composeString("compareToSourceId", element.getCompareToSourceIdElement());
62161    }
62162    if (element.hasCompareToSourceExpressionElement()) {
62163      composeString("compareToSourceExpression", element.getCompareToSourceExpressionElement());
62164    }
62165    if (element.hasCompareToSourcePathElement()) {
62166      composeString("compareToSourcePath", element.getCompareToSourcePathElement());
62167    }
62168    if (element.hasContentTypeElement()) {
62169      composeCode("contentType", element.getContentTypeElement());
62170    }
62171    if (element.hasDefaultManualCompletionElement())
62172      composeEnumeration("defaultManualCompletion", element.getDefaultManualCompletionElement(), new TestScript.AssertionManualCompletionTypeEnumFactory());
62173    if (element.hasExpressionElement()) {
62174      composeString("expression", element.getExpressionElement());
62175    }
62176    if (element.hasHeaderFieldElement()) {
62177      composeString("headerField", element.getHeaderFieldElement());
62178    }
62179    if (element.hasMinimumIdElement()) {
62180      composeString("minimumId", element.getMinimumIdElement());
62181    }
62182    if (element.hasNavigationLinksElement()) {
62183      composeBoolean("navigationLinks", element.getNavigationLinksElement());
62184    }
62185    if (element.hasOperatorElement())
62186      composeEnumeration("operator", element.getOperatorElement(), new TestScript.AssertionOperatorTypeEnumFactory());
62187    if (element.hasPathElement()) {
62188      composeString("path", element.getPathElement());
62189    }
62190    if (element.hasRequestMethodElement())
62191      composeEnumeration("requestMethod", element.getRequestMethodElement(), new TestScript.TestScriptRequestMethodCodeEnumFactory());
62192    if (element.hasRequestURLElement()) {
62193      composeString("requestURL", element.getRequestURLElement());
62194    }
62195    if (element.hasResourceElement()) {
62196      composeUri("resource", element.getResourceElement());
62197    }
62198    if (element.hasResponseElement())
62199      composeEnumeration("response", element.getResponseElement(), new TestScript.AssertionResponseTypesEnumFactory());
62200    if (element.hasResponseCodeElement()) {
62201      composeString("responseCode", element.getResponseCodeElement());
62202    }
62203    if (element.hasSourceIdElement()) {
62204      composeId("sourceId", element.getSourceIdElement());
62205    }
62206    if (element.hasStopTestOnFailElement()) {
62207      composeBoolean("stopTestOnFail", element.getStopTestOnFailElement());
62208    }
62209    if (element.hasValidateProfileIdElement()) {
62210      composeId("validateProfileId", element.getValidateProfileIdElement());
62211    }
62212    if (element.hasValueElement()) {
62213      composeString("value", element.getValueElement());
62214    }
62215    if (element.hasWarningOnlyElement()) {
62216      composeBoolean("warningOnly", element.getWarningOnlyElement());
62217    }
62218    if (element.hasRequirement()) { 
62219      for (TestScript.SetupActionAssertRequirementComponent e : element.getRequirement()) 
62220          composeTestScriptSetupActionAssertRequirementComponent("requirement", e);
62221    }
62222  }
62223
62224  protected void composeTestScriptSetupActionAssertRequirementComponent(String name, TestScript.SetupActionAssertRequirementComponent element) throws IOException {
62225    if (element != null) {
62226    composeElementAttributes(element);
62227      xml.enter(FHIR_NS, name);
62228      composeTestScriptSetupActionAssertRequirementComponentElements(element);
62229      composeElementClose(element);
62230      xml.exit(FHIR_NS, name);
62231    }
62232  }
62233
62234  protected void composeTestScriptSetupActionAssertRequirementComponentElements(TestScript.SetupActionAssertRequirementComponent element) throws IOException {
62235    composeBackboneElementElements(element);
62236    if (element.hasLink()) {
62237      composeType("link", element.getLink());
62238    }  }
62239
62240  protected void composeTestScriptTestComponent(String name, TestScript.TestScriptTestComponent element) throws IOException {
62241    if (element != null) {
62242    composeElementAttributes(element);
62243      xml.enter(FHIR_NS, name);
62244      composeTestScriptTestComponentElements(element);
62245      composeElementClose(element);
62246      xml.exit(FHIR_NS, name);
62247    }
62248  }
62249
62250  protected void composeTestScriptTestComponentElements(TestScript.TestScriptTestComponent element) throws IOException {
62251    composeBackboneElementElements(element);
62252    if (element.hasNameElement()) {
62253      composeString("name", element.getNameElement());
62254    }
62255    if (element.hasDescriptionElement()) {
62256      composeString("description", element.getDescriptionElement());
62257    }
62258    if (element.hasAction()) { 
62259      for (TestScript.TestActionComponent e : element.getAction()) 
62260          composeTestScriptTestActionComponent("action", e);
62261    }
62262  }
62263
62264  protected void composeTestScriptTestActionComponent(String name, TestScript.TestActionComponent element) throws IOException {
62265    if (element != null) {
62266    composeElementAttributes(element);
62267      xml.enter(FHIR_NS, name);
62268      composeTestScriptTestActionComponentElements(element);
62269      composeElementClose(element);
62270      xml.exit(FHIR_NS, name);
62271    }
62272  }
62273
62274  protected void composeTestScriptTestActionComponentElements(TestScript.TestActionComponent element) throws IOException {
62275    composeBackboneElementElements(element);
62276    if (element.hasOperation()) {
62277      composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
62278    }
62279    if (element.hasAssert()) {
62280      composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
62281    }
62282  }
62283
62284  protected void composeTestScriptTeardownComponent(String name, TestScript.TestScriptTeardownComponent element) throws IOException {
62285    if (element != null) {
62286    composeElementAttributes(element);
62287      xml.enter(FHIR_NS, name);
62288      composeTestScriptTeardownComponentElements(element);
62289      composeElementClose(element);
62290      xml.exit(FHIR_NS, name);
62291    }
62292  }
62293
62294  protected void composeTestScriptTeardownComponentElements(TestScript.TestScriptTeardownComponent element) throws IOException {
62295    composeBackboneElementElements(element);
62296    if (element.hasAction()) { 
62297      for (TestScript.TeardownActionComponent e : element.getAction()) 
62298          composeTestScriptTeardownActionComponent("action", e);
62299    }
62300  }
62301
62302  protected void composeTestScriptTeardownActionComponent(String name, TestScript.TeardownActionComponent element) throws IOException {
62303    if (element != null) {
62304    composeElementAttributes(element);
62305      xml.enter(FHIR_NS, name);
62306      composeTestScriptTeardownActionComponentElements(element);
62307      composeElementClose(element);
62308      xml.exit(FHIR_NS, name);
62309    }
62310  }
62311
62312  protected void composeTestScriptTeardownActionComponentElements(TestScript.TeardownActionComponent element) throws IOException {
62313    composeBackboneElementElements(element);
62314    if (element.hasOperation()) {
62315      composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
62316    }
62317  }
62318
62319  protected void composeTransport(String name, Transport element) throws IOException {
62320    if (element != null) {
62321    composeResourceAttributes(element);
62322      xml.enter(FHIR_NS, name);
62323      composeTransportElements(element);
62324      composeElementClose(element);
62325      xml.exit(FHIR_NS, name);
62326    }
62327  }
62328
62329  protected void composeTransportElements(Transport element) throws IOException {
62330    composeDomainResourceElements(element);
62331    if (element.hasIdentifier()) { 
62332      for (Identifier e : element.getIdentifier()) 
62333          composeIdentifier("identifier", e);
62334    }
62335    if (element.hasInstantiatesCanonicalElement()) {
62336      composeCanonical("instantiatesCanonical", element.getInstantiatesCanonicalElement());
62337    }
62338    if (element.hasInstantiatesUriElement()) {
62339      composeUri("instantiatesUri", element.getInstantiatesUriElement());
62340    }
62341    if (element.hasBasedOn()) { 
62342      for (Reference e : element.getBasedOn()) 
62343          composeReference("basedOn", e);
62344    }
62345    if (element.hasGroupIdentifier()) {
62346      composeIdentifier("groupIdentifier", element.getGroupIdentifier());
62347    }
62348    if (element.hasPartOf()) { 
62349      for (Reference e : element.getPartOf()) 
62350          composeReference("partOf", e);
62351    }
62352    if (element.hasStatusElement())
62353      composeEnumeration("status", element.getStatusElement(), new Transport.TransportStatusEnumFactory());
62354    if (element.hasStatusReason()) {
62355      composeCodeableConcept("statusReason", element.getStatusReason());
62356    }
62357    if (element.hasIntentElement())
62358      composeEnumeration("intent", element.getIntentElement(), new Transport.TransportIntentEnumFactory());
62359    if (element.hasPriorityElement())
62360      composeEnumeration("priority", element.getPriorityElement(), new Enumerations.RequestPriorityEnumFactory());
62361    if (element.hasCode()) {
62362      composeCodeableConcept("code", element.getCode());
62363    }
62364    if (element.hasDescriptionElement()) {
62365      composeString("description", element.getDescriptionElement());
62366    }
62367    if (element.hasFocus()) {
62368      composeReference("focus", element.getFocus());
62369    }
62370    if (element.hasFor()) {
62371      composeReference("for", element.getFor());
62372    }
62373    if (element.hasEncounter()) {
62374      composeReference("encounter", element.getEncounter());
62375    }
62376    if (element.hasCompletionTimeElement()) {
62377      composeDateTime("completionTime", element.getCompletionTimeElement());
62378    }
62379    if (element.hasAuthoredOnElement()) {
62380      composeDateTime("authoredOn", element.getAuthoredOnElement());
62381    }
62382    if (element.hasLastModifiedElement()) {
62383      composeDateTime("lastModified", element.getLastModifiedElement());
62384    }
62385    if (element.hasRequester()) {
62386      composeReference("requester", element.getRequester());
62387    }
62388    if (element.hasPerformerType()) { 
62389      for (CodeableConcept e : element.getPerformerType()) 
62390          composeCodeableConcept("performerType", e);
62391    }
62392    if (element.hasOwner()) {
62393      composeReference("owner", element.getOwner());
62394    }
62395    if (element.hasLocation()) {
62396      composeReference("location", element.getLocation());
62397    }
62398    if (element.hasInsurance()) { 
62399      for (Reference e : element.getInsurance()) 
62400          composeReference("insurance", e);
62401    }
62402    if (element.hasNote()) { 
62403      for (Annotation e : element.getNote()) 
62404          composeAnnotation("note", e);
62405    }
62406    if (element.hasRelevantHistory()) { 
62407      for (Reference e : element.getRelevantHistory()) 
62408          composeReference("relevantHistory", e);
62409    }
62410    if (element.hasRestriction()) {
62411      composeTransportRestrictionComponent("restriction", element.getRestriction());
62412    }
62413    if (element.hasInput()) { 
62414      for (Transport.ParameterComponent e : element.getInput()) 
62415          composeTransportParameterComponent("input", e);
62416    }
62417    if (element.hasOutput()) { 
62418      for (Transport.TransportOutputComponent e : element.getOutput()) 
62419          composeTransportOutputComponent("output", e);
62420    }
62421    if (element.hasRequestedLocation()) {
62422      composeReference("requestedLocation", element.getRequestedLocation());
62423    }
62424    if (element.hasCurrentLocation()) {
62425      composeReference("currentLocation", element.getCurrentLocation());
62426    }
62427    if (element.hasReason()) {
62428      composeCodeableReference("reason", element.getReason());
62429    }
62430    if (element.hasHistory()) {
62431      composeReference("history", element.getHistory());
62432    }
62433  }
62434
62435  protected void composeTransportRestrictionComponent(String name, Transport.TransportRestrictionComponent element) throws IOException {
62436    if (element != null) {
62437    composeElementAttributes(element);
62438      xml.enter(FHIR_NS, name);
62439      composeTransportRestrictionComponentElements(element);
62440      composeElementClose(element);
62441      xml.exit(FHIR_NS, name);
62442    }
62443  }
62444
62445  protected void composeTransportRestrictionComponentElements(Transport.TransportRestrictionComponent element) throws IOException {
62446    composeBackboneElementElements(element);
62447    if (element.hasRepetitionsElement()) {
62448      composePositiveInt("repetitions", element.getRepetitionsElement());
62449    }
62450    if (element.hasPeriod()) {
62451      composePeriod("period", element.getPeriod());
62452    }
62453    if (element.hasRecipient()) { 
62454      for (Reference e : element.getRecipient()) 
62455          composeReference("recipient", e);
62456    }
62457  }
62458
62459  protected void composeTransportParameterComponent(String name, Transport.ParameterComponent element) throws IOException {
62460    if (element != null) {
62461    composeElementAttributes(element);
62462      xml.enter(FHIR_NS, name);
62463      composeTransportParameterComponentElements(element);
62464      composeElementClose(element);
62465      xml.exit(FHIR_NS, name);
62466    }
62467  }
62468
62469  protected void composeTransportParameterComponentElements(Transport.ParameterComponent element) throws IOException {
62470    composeBackboneElementElements(element);
62471    if (element.hasType()) {
62472      composeCodeableConcept("type", element.getType());
62473    }
62474    if (element.hasValue()) {
62475      composeType("value", element.getValue());
62476    }  }
62477
62478  protected void composeTransportOutputComponent(String name, Transport.TransportOutputComponent element) throws IOException {
62479    if (element != null) {
62480    composeElementAttributes(element);
62481      xml.enter(FHIR_NS, name);
62482      composeTransportOutputComponentElements(element);
62483      composeElementClose(element);
62484      xml.exit(FHIR_NS, name);
62485    }
62486  }
62487
62488  protected void composeTransportOutputComponentElements(Transport.TransportOutputComponent element) throws IOException {
62489    composeBackboneElementElements(element);
62490    if (element.hasType()) {
62491      composeCodeableConcept("type", element.getType());
62492    }
62493    if (element.hasValue()) {
62494      composeType("value", element.getValue());
62495    }  }
62496
62497  protected void composeValueSet(String name, ValueSet element) throws IOException {
62498    if (element != null) {
62499    composeResourceAttributes(element);
62500      xml.enter(FHIR_NS, name);
62501      composeValueSetElements(element);
62502      composeElementClose(element);
62503      xml.exit(FHIR_NS, name);
62504    }
62505  }
62506
62507  protected void composeValueSetElements(ValueSet element) throws IOException {
62508    composeMetadataResourceElements(element);
62509    if (element.hasUrlElement()) {
62510      composeUri("url", element.getUrlElement());
62511    }
62512    if (element.hasIdentifier()) { 
62513      for (Identifier e : element.getIdentifier()) 
62514          composeIdentifier("identifier", e);
62515    }
62516    if (element.hasVersionElement()) {
62517      composeString("version", element.getVersionElement());
62518    }
62519    if (element.hasVersionAlgorithm()) {
62520      composeType("versionAlgorithm", element.getVersionAlgorithm());
62521    }    if (element.hasNameElement()) {
62522      composeString("name", element.getNameElement());
62523    }
62524    if (element.hasTitleElement()) {
62525      composeString("title", element.getTitleElement());
62526    }
62527    if (element.hasStatusElement())
62528      composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
62529    if (element.hasExperimentalElement()) {
62530      composeBoolean("experimental", element.getExperimentalElement());
62531    }
62532    if (element.hasDateElement()) {
62533      composeDateTime("date", element.getDateElement());
62534    }
62535    if (element.hasPublisherElement()) {
62536      composeString("publisher", element.getPublisherElement());
62537    }
62538    if (element.hasContact()) { 
62539      for (ContactDetail e : element.getContact()) 
62540          composeContactDetail("contact", e);
62541    }
62542    if (element.hasDescriptionElement()) {
62543      composeMarkdown("description", element.getDescriptionElement());
62544    }
62545    if (element.hasUseContext()) { 
62546      for (UsageContext e : element.getUseContext()) 
62547          composeUsageContext("useContext", e);
62548    }
62549    if (element.hasJurisdiction()) { 
62550      for (CodeableConcept e : element.getJurisdiction()) 
62551          composeCodeableConcept("jurisdiction", e);
62552    }
62553    if (element.hasImmutableElement()) {
62554      composeBoolean("immutable", element.getImmutableElement());
62555    }
62556    if (element.hasPurposeElement()) {
62557      composeMarkdown("purpose", element.getPurposeElement());
62558    }
62559    if (element.hasCopyrightElement()) {
62560      composeMarkdown("copyright", element.getCopyrightElement());
62561    }
62562    if (element.hasCopyrightLabelElement()) {
62563      composeString("copyrightLabel", element.getCopyrightLabelElement());
62564    }
62565    if (element.hasApprovalDateElement()) {
62566      composeDate("approvalDate", element.getApprovalDateElement());
62567    }
62568    if (element.hasLastReviewDateElement()) {
62569      composeDate("lastReviewDate", element.getLastReviewDateElement());
62570    }
62571    if (element.hasEffectivePeriod()) {
62572      composePeriod("effectivePeriod", element.getEffectivePeriod());
62573    }
62574    if (element.hasTopic()) { 
62575      for (CodeableConcept e : element.getTopic()) 
62576          composeCodeableConcept("topic", e);
62577    }
62578    if (element.hasAuthor()) { 
62579      for (ContactDetail e : element.getAuthor()) 
62580          composeContactDetail("author", e);
62581    }
62582    if (element.hasEditor()) { 
62583      for (ContactDetail e : element.getEditor()) 
62584          composeContactDetail("editor", e);
62585    }
62586    if (element.hasReviewer()) { 
62587      for (ContactDetail e : element.getReviewer()) 
62588          composeContactDetail("reviewer", e);
62589    }
62590    if (element.hasEndorser()) { 
62591      for (ContactDetail e : element.getEndorser()) 
62592          composeContactDetail("endorser", e);
62593    }
62594    if (element.hasRelatedArtifact()) { 
62595      for (RelatedArtifact e : element.getRelatedArtifact()) 
62596          composeRelatedArtifact("relatedArtifact", e);
62597    }
62598    if (element.hasCompose()) {
62599      composeValueSetComposeComponent("compose", element.getCompose());
62600    }
62601    if (element.hasExpansion()) {
62602      composeValueSetExpansionComponent("expansion", element.getExpansion());
62603    }
62604    if (element.hasScope()) {
62605      composeValueSetScopeComponent("scope", element.getScope());
62606    }
62607  }
62608
62609  protected void composeValueSetComposeComponent(String name, ValueSet.ValueSetComposeComponent element) throws IOException {
62610    if (element != null) {
62611    composeElementAttributes(element);
62612      xml.enter(FHIR_NS, name);
62613      composeValueSetComposeComponentElements(element);
62614      composeElementClose(element);
62615      xml.exit(FHIR_NS, name);
62616    }
62617  }
62618
62619  protected void composeValueSetComposeComponentElements(ValueSet.ValueSetComposeComponent element) throws IOException {
62620    composeBackboneElementElements(element);
62621    if (element.hasLockedDateElement()) {
62622      composeDate("lockedDate", element.getLockedDateElement());
62623    }
62624    if (element.hasInactiveElement()) {
62625      composeBoolean("inactive", element.getInactiveElement());
62626    }
62627    if (element.hasInclude()) { 
62628      for (ValueSet.ConceptSetComponent e : element.getInclude()) 
62629          composeValueSetConceptSetComponent("include", e);
62630    }
62631    if (element.hasExclude()) { 
62632      for (ValueSet.ConceptSetComponent e : element.getExclude()) 
62633          composeValueSetConceptSetComponent("exclude", e);
62634    }
62635    if (element.hasProperty()) { 
62636      for (StringType e : element.getProperty()) 
62637          composeString("property", e);
62638    }
62639  }
62640
62641  protected void composeValueSetConceptSetComponent(String name, ValueSet.ConceptSetComponent element) throws IOException {
62642    if (element != null) {
62643    composeElementAttributes(element);
62644      xml.enter(FHIR_NS, name);
62645      composeValueSetConceptSetComponentElements(element);
62646      composeElementClose(element);
62647      xml.exit(FHIR_NS, name);
62648    }
62649  }
62650
62651  protected void composeValueSetConceptSetComponentElements(ValueSet.ConceptSetComponent element) throws IOException {
62652    composeBackboneElementElements(element);
62653    if (element.hasSystemElement()) {
62654      composeUri("system", element.getSystemElement());
62655    }
62656    if (element.hasVersionElement()) {
62657      composeString("version", element.getVersionElement());
62658    }
62659    if (element.hasConcept()) { 
62660      for (ValueSet.ConceptReferenceComponent e : element.getConcept()) 
62661          composeValueSetConceptReferenceComponent("concept", e);
62662    }
62663    if (element.hasFilter()) { 
62664      for (ValueSet.ConceptSetFilterComponent e : element.getFilter()) 
62665          composeValueSetConceptSetFilterComponent("filter", e);
62666    }
62667    if (element.hasValueSet()) { 
62668      for (CanonicalType e : element.getValueSet()) 
62669          composeCanonical("valueSet", e);
62670    }
62671    if (element.hasCopyrightElement()) {
62672      composeString("copyright", element.getCopyrightElement());
62673    }
62674  }
62675
62676  protected void composeValueSetConceptReferenceComponent(String name, ValueSet.ConceptReferenceComponent element) throws IOException {
62677    if (element != null) {
62678    composeElementAttributes(element);
62679      xml.enter(FHIR_NS, name);
62680      composeValueSetConceptReferenceComponentElements(element);
62681      composeElementClose(element);
62682      xml.exit(FHIR_NS, name);
62683    }
62684  }
62685
62686  protected void composeValueSetConceptReferenceComponentElements(ValueSet.ConceptReferenceComponent element) throws IOException {
62687    composeBackboneElementElements(element);
62688    if (element.hasCodeElement()) {
62689      composeCode("code", element.getCodeElement());
62690    }
62691    if (element.hasDisplayElement()) {
62692      composeString("display", element.getDisplayElement());
62693    }
62694    if (element.hasDesignation()) { 
62695      for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
62696          composeValueSetConceptReferenceDesignationComponent("designation", e);
62697    }
62698  }
62699
62700  protected void composeValueSetConceptReferenceDesignationComponent(String name, ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
62701    if (element != null) {
62702    composeElementAttributes(element);
62703      xml.enter(FHIR_NS, name);
62704      composeValueSetConceptReferenceDesignationComponentElements(element);
62705      composeElementClose(element);
62706      xml.exit(FHIR_NS, name);
62707    }
62708  }
62709
62710  protected void composeValueSetConceptReferenceDesignationComponentElements(ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
62711    composeBackboneElementElements(element);
62712    if (element.hasLanguageElement()) {
62713      composeCode("language", element.getLanguageElement());
62714    }
62715    if (element.hasUse()) {
62716      composeCoding("use", element.getUse());
62717    }
62718    if (element.hasAdditionalUse()) { 
62719      for (Coding e : element.getAdditionalUse()) 
62720          composeCoding("additionalUse", e);
62721    }
62722    if (element.hasValueElement()) {
62723      composeString("value", element.getValueElement());
62724    }
62725  }
62726
62727  protected void composeValueSetConceptSetFilterComponent(String name, ValueSet.ConceptSetFilterComponent element) throws IOException {
62728    if (element != null) {
62729    composeElementAttributes(element);
62730      xml.enter(FHIR_NS, name);
62731      composeValueSetConceptSetFilterComponentElements(element);
62732      composeElementClose(element);
62733      xml.exit(FHIR_NS, name);
62734    }
62735  }
62736
62737  protected void composeValueSetConceptSetFilterComponentElements(ValueSet.ConceptSetFilterComponent element) throws IOException {
62738    composeBackboneElementElements(element);
62739    if (element.hasPropertyElement()) {
62740      composeCode("property", element.getPropertyElement());
62741    }
62742    if (element.hasOpElement())
62743      composeEnumeration("op", element.getOpElement(), new Enumerations.FilterOperatorEnumFactory());
62744    if (element.hasValueElement()) {
62745      composeString("value", element.getValueElement());
62746    }
62747  }
62748
62749  protected void composeValueSetExpansionComponent(String name, ValueSet.ValueSetExpansionComponent element) throws IOException {
62750    if (element != null) {
62751    composeElementAttributes(element);
62752      xml.enter(FHIR_NS, name);
62753      composeValueSetExpansionComponentElements(element);
62754      composeElementClose(element);
62755      xml.exit(FHIR_NS, name);
62756    }
62757  }
62758
62759  protected void composeValueSetExpansionComponentElements(ValueSet.ValueSetExpansionComponent element) throws IOException {
62760    composeBackboneElementElements(element);
62761    if (element.hasIdentifierElement()) {
62762      composeUri("identifier", element.getIdentifierElement());
62763    }
62764    if (element.hasNextElement()) {
62765      composeUri("next", element.getNextElement());
62766    }
62767    if (element.hasTimestampElement()) {
62768      composeDateTime("timestamp", element.getTimestampElement());
62769    }
62770    if (element.hasTotalElement()) {
62771      composeInteger("total", element.getTotalElement());
62772    }
62773    if (element.hasOffsetElement()) {
62774      composeInteger("offset", element.getOffsetElement());
62775    }
62776    if (element.hasParameter()) { 
62777      for (ValueSet.ValueSetExpansionParameterComponent e : element.getParameter()) 
62778          composeValueSetExpansionParameterComponent("parameter", e);
62779    }
62780    if (element.hasProperty()) { 
62781      for (ValueSet.ValueSetExpansionPropertyComponent e : element.getProperty()) 
62782          composeValueSetExpansionPropertyComponent("property", e);
62783    }
62784    if (element.hasContains()) { 
62785      for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
62786          composeValueSetExpansionContainsComponent("contains", e);
62787    }
62788  }
62789
62790  protected void composeValueSetExpansionParameterComponent(String name, ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
62791    if (element != null) {
62792    composeElementAttributes(element);
62793      xml.enter(FHIR_NS, name);
62794      composeValueSetExpansionParameterComponentElements(element);
62795      composeElementClose(element);
62796      xml.exit(FHIR_NS, name);
62797    }
62798  }
62799
62800  protected void composeValueSetExpansionParameterComponentElements(ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
62801    composeBackboneElementElements(element);
62802    if (element.hasNameElement()) {
62803      composeString("name", element.getNameElement());
62804    }
62805    if (element.hasValue()) {
62806      composeType("value", element.getValue());
62807    }  }
62808
62809  protected void composeValueSetExpansionPropertyComponent(String name, ValueSet.ValueSetExpansionPropertyComponent element) throws IOException {
62810    if (element != null) {
62811    composeElementAttributes(element);
62812      xml.enter(FHIR_NS, name);
62813      composeValueSetExpansionPropertyComponentElements(element);
62814      composeElementClose(element);
62815      xml.exit(FHIR_NS, name);
62816    }
62817  }
62818
62819  protected void composeValueSetExpansionPropertyComponentElements(ValueSet.ValueSetExpansionPropertyComponent element) throws IOException {
62820    composeBackboneElementElements(element);
62821    if (element.hasCodeElement()) {
62822      composeCode("code", element.getCodeElement());
62823    }
62824    if (element.hasUriElement()) {
62825      composeUri("uri", element.getUriElement());
62826    }
62827  }
62828
62829  protected void composeValueSetExpansionContainsComponent(String name, ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
62830    if (element != null) {
62831    composeElementAttributes(element);
62832      xml.enter(FHIR_NS, name);
62833      composeValueSetExpansionContainsComponentElements(element);
62834      composeElementClose(element);
62835      xml.exit(FHIR_NS, name);
62836    }
62837  }
62838
62839  protected void composeValueSetExpansionContainsComponentElements(ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
62840    composeBackboneElementElements(element);
62841    if (element.hasSystemElement()) {
62842      composeUri("system", element.getSystemElement());
62843    }
62844    if (element.hasAbstractElement()) {
62845      composeBoolean("abstract", element.getAbstractElement());
62846    }
62847    if (element.hasInactiveElement()) {
62848      composeBoolean("inactive", element.getInactiveElement());
62849    }
62850    if (element.hasVersionElement()) {
62851      composeString("version", element.getVersionElement());
62852    }
62853    if (element.hasCodeElement()) {
62854      composeCode("code", element.getCodeElement());
62855    }
62856    if (element.hasDisplayElement()) {
62857      composeString("display", element.getDisplayElement());
62858    }
62859    if (element.hasDesignation()) { 
62860      for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
62861          composeValueSetConceptReferenceDesignationComponent("designation", e);
62862    }
62863    if (element.hasProperty()) { 
62864      for (ValueSet.ConceptPropertyComponent e : element.getProperty()) 
62865          composeValueSetConceptPropertyComponent("property", e);
62866    }
62867    if (element.hasContains()) { 
62868      for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
62869          composeValueSetExpansionContainsComponent("contains", e);
62870    }
62871  }
62872
62873  protected void composeValueSetConceptPropertyComponent(String name, ValueSet.ConceptPropertyComponent element) throws IOException {
62874    if (element != null) {
62875    composeElementAttributes(element);
62876      xml.enter(FHIR_NS, name);
62877      composeValueSetConceptPropertyComponentElements(element);
62878      composeElementClose(element);
62879      xml.exit(FHIR_NS, name);
62880    }
62881  }
62882
62883  protected void composeValueSetConceptPropertyComponentElements(ValueSet.ConceptPropertyComponent element) throws IOException {
62884    composeBackboneElementElements(element);
62885    if (element.hasCodeElement()) {
62886      composeCode("code", element.getCodeElement());
62887    }
62888    if (element.hasValue()) {
62889      composeType("value", element.getValue());
62890    }    if (element.hasSubProperty()) { 
62891      for (ValueSet.ConceptSubPropertyComponent e : element.getSubProperty()) 
62892          composeValueSetConceptSubPropertyComponent("subProperty", e);
62893    }
62894  }
62895
62896  protected void composeValueSetConceptSubPropertyComponent(String name, ValueSet.ConceptSubPropertyComponent element) throws IOException {
62897    if (element != null) {
62898    composeElementAttributes(element);
62899      xml.enter(FHIR_NS, name);
62900      composeValueSetConceptSubPropertyComponentElements(element);
62901      composeElementClose(element);
62902      xml.exit(FHIR_NS, name);
62903    }
62904  }
62905
62906  protected void composeValueSetConceptSubPropertyComponentElements(ValueSet.ConceptSubPropertyComponent element) throws IOException {
62907    composeBackboneElementElements(element);
62908    if (element.hasCodeElement()) {
62909      composeCode("code", element.getCodeElement());
62910    }
62911    if (element.hasValue()) {
62912      composeType("value", element.getValue());
62913    }  }
62914
62915  protected void composeValueSetScopeComponent(String name, ValueSet.ValueSetScopeComponent element) throws IOException {
62916    if (element != null) {
62917    composeElementAttributes(element);
62918      xml.enter(FHIR_NS, name);
62919      composeValueSetScopeComponentElements(element);
62920      composeElementClose(element);
62921      xml.exit(FHIR_NS, name);
62922    }
62923  }
62924
62925  protected void composeValueSetScopeComponentElements(ValueSet.ValueSetScopeComponent element) throws IOException {
62926    composeBackboneElementElements(element);
62927    if (element.hasInclusionCriteriaElement()) {
62928      composeString("inclusionCriteria", element.getInclusionCriteriaElement());
62929    }
62930    if (element.hasExclusionCriteriaElement()) {
62931      composeString("exclusionCriteria", element.getExclusionCriteriaElement());
62932    }
62933  }
62934
62935  protected void composeVerificationResult(String name, VerificationResult element) throws IOException {
62936    if (element != null) {
62937    composeResourceAttributes(element);
62938      xml.enter(FHIR_NS, name);
62939      composeVerificationResultElements(element);
62940      composeElementClose(element);
62941      xml.exit(FHIR_NS, name);
62942    }
62943  }
62944
62945  protected void composeVerificationResultElements(VerificationResult element) throws IOException {
62946    composeDomainResourceElements(element);
62947    if (element.hasTarget()) { 
62948      for (Reference e : element.getTarget()) 
62949          composeReference("target", e);
62950    }
62951    if (element.hasTargetLocation()) { 
62952      for (StringType e : element.getTargetLocation()) 
62953          composeString("targetLocation", e);
62954    }
62955    if (element.hasNeed()) {
62956      composeCodeableConcept("need", element.getNeed());
62957    }
62958    if (element.hasStatusElement())
62959      composeEnumeration("status", element.getStatusElement(), new VerificationResult.VerificationResultStatusEnumFactory());
62960    if (element.hasStatusDateElement()) {
62961      composeDateTime("statusDate", element.getStatusDateElement());
62962    }
62963    if (element.hasValidationType()) {
62964      composeCodeableConcept("validationType", element.getValidationType());
62965    }
62966    if (element.hasValidationProcess()) { 
62967      for (CodeableConcept e : element.getValidationProcess()) 
62968          composeCodeableConcept("validationProcess", e);
62969    }
62970    if (element.hasFrequency()) {
62971      composeTiming("frequency", element.getFrequency());
62972    }
62973    if (element.hasLastPerformedElement()) {
62974      composeDateTime("lastPerformed", element.getLastPerformedElement());
62975    }
62976    if (element.hasNextScheduledElement()) {
62977      composeDate("nextScheduled", element.getNextScheduledElement());
62978    }
62979    if (element.hasFailureAction()) {
62980      composeCodeableConcept("failureAction", element.getFailureAction());
62981    }
62982    if (element.hasPrimarySource()) { 
62983      for (VerificationResult.VerificationResultPrimarySourceComponent e : element.getPrimarySource()) 
62984          composeVerificationResultPrimarySourceComponent("primarySource", e);
62985    }
62986    if (element.hasAttestation()) {
62987      composeVerificationResultAttestationComponent("attestation", element.getAttestation());
62988    }
62989    if (element.hasValidator()) { 
62990      for (VerificationResult.VerificationResultValidatorComponent e : element.getValidator()) 
62991          composeVerificationResultValidatorComponent("validator", e);
62992    }
62993  }
62994
62995  protected void composeVerificationResultPrimarySourceComponent(String name, VerificationResult.VerificationResultPrimarySourceComponent element) throws IOException {
62996    if (element != null) {
62997    composeElementAttributes(element);
62998      xml.enter(FHIR_NS, name);
62999      composeVerificationResultPrimarySourceComponentElements(element);
63000      composeElementClose(element);
63001      xml.exit(FHIR_NS, name);
63002    }
63003  }
63004
63005  protected void composeVerificationResultPrimarySourceComponentElements(VerificationResult.VerificationResultPrimarySourceComponent element) throws IOException {
63006    composeBackboneElementElements(element);
63007    if (element.hasWho()) {
63008      composeReference("who", element.getWho());
63009    }
63010    if (element.hasType()) { 
63011      for (CodeableConcept e : element.getType()) 
63012          composeCodeableConcept("type", e);
63013    }
63014    if (element.hasCommunicationMethod()) { 
63015      for (CodeableConcept e : element.getCommunicationMethod()) 
63016          composeCodeableConcept("communicationMethod", e);
63017    }
63018    if (element.hasValidationStatus()) {
63019      composeCodeableConcept("validationStatus", element.getValidationStatus());
63020    }
63021    if (element.hasValidationDateElement()) {
63022      composeDateTime("validationDate", element.getValidationDateElement());
63023    }
63024    if (element.hasCanPushUpdates()) {
63025      composeCodeableConcept("canPushUpdates", element.getCanPushUpdates());
63026    }
63027    if (element.hasPushTypeAvailable()) { 
63028      for (CodeableConcept e : element.getPushTypeAvailable()) 
63029          composeCodeableConcept("pushTypeAvailable", e);
63030    }
63031  }
63032
63033  protected void composeVerificationResultAttestationComponent(String name, VerificationResult.VerificationResultAttestationComponent element) throws IOException {
63034    if (element != null) {
63035    composeElementAttributes(element);
63036      xml.enter(FHIR_NS, name);
63037      composeVerificationResultAttestationComponentElements(element);
63038      composeElementClose(element);
63039      xml.exit(FHIR_NS, name);
63040    }
63041  }
63042
63043  protected void composeVerificationResultAttestationComponentElements(VerificationResult.VerificationResultAttestationComponent element) throws IOException {
63044    composeBackboneElementElements(element);
63045    if (element.hasWho()) {
63046      composeReference("who", element.getWho());
63047    }
63048    if (element.hasOnBehalfOf()) {
63049      composeReference("onBehalfOf", element.getOnBehalfOf());
63050    }
63051    if (element.hasCommunicationMethod()) {
63052      composeCodeableConcept("communicationMethod", element.getCommunicationMethod());
63053    }
63054    if (element.hasDateElement()) {
63055      composeDate("date", element.getDateElement());
63056    }
63057    if (element.hasSourceIdentityCertificateElement()) {
63058      composeString("sourceIdentityCertificate", element.getSourceIdentityCertificateElement());
63059    }
63060    if (element.hasProxyIdentityCertificateElement()) {
63061      composeString("proxyIdentityCertificate", element.getProxyIdentityCertificateElement());
63062    }
63063    if (element.hasProxySignature()) {
63064      composeSignature("proxySignature", element.getProxySignature());
63065    }
63066    if (element.hasSourceSignature()) {
63067      composeSignature("sourceSignature", element.getSourceSignature());
63068    }
63069  }
63070
63071  protected void composeVerificationResultValidatorComponent(String name, VerificationResult.VerificationResultValidatorComponent element) throws IOException {
63072    if (element != null) {
63073    composeElementAttributes(element);
63074      xml.enter(FHIR_NS, name);
63075      composeVerificationResultValidatorComponentElements(element);
63076      composeElementClose(element);
63077      xml.exit(FHIR_NS, name);
63078    }
63079  }
63080
63081  protected void composeVerificationResultValidatorComponentElements(VerificationResult.VerificationResultValidatorComponent element) throws IOException {
63082    composeBackboneElementElements(element);
63083    if (element.hasOrganization()) {
63084      composeReference("organization", element.getOrganization());
63085    }
63086    if (element.hasIdentityCertificateElement()) {
63087      composeString("identityCertificate", element.getIdentityCertificateElement());
63088    }
63089    if (element.hasAttestationSignature()) {
63090      composeSignature("attestationSignature", element.getAttestationSignature());
63091    }
63092  }
63093
63094  protected void composeVisionPrescription(String name, VisionPrescription element) throws IOException {
63095    if (element != null) {
63096    composeResourceAttributes(element);
63097      xml.enter(FHIR_NS, name);
63098      composeVisionPrescriptionElements(element);
63099      composeElementClose(element);
63100      xml.exit(FHIR_NS, name);
63101    }
63102  }
63103
63104  protected void composeVisionPrescriptionElements(VisionPrescription element) throws IOException {
63105    composeDomainResourceElements(element);
63106    if (element.hasIdentifier()) { 
63107      for (Identifier e : element.getIdentifier()) 
63108          composeIdentifier("identifier", e);
63109    }
63110    if (element.hasStatusElement())
63111      composeEnumeration("status", element.getStatusElement(), new Enumerations.FinancialResourceStatusCodesEnumFactory());
63112    if (element.hasCreatedElement()) {
63113      composeDateTime("created", element.getCreatedElement());
63114    }
63115    if (element.hasPatient()) {
63116      composeReference("patient", element.getPatient());
63117    }
63118    if (element.hasEncounter()) {
63119      composeReference("encounter", element.getEncounter());
63120    }
63121    if (element.hasDateWrittenElement()) {
63122      composeDateTime("dateWritten", element.getDateWrittenElement());
63123    }
63124    if (element.hasPrescriber()) {
63125      composeReference("prescriber", element.getPrescriber());
63126    }
63127    if (element.hasLensSpecification()) { 
63128      for (VisionPrescription.VisionPrescriptionLensSpecificationComponent e : element.getLensSpecification()) 
63129          composeVisionPrescriptionLensSpecificationComponent("lensSpecification", e);
63130    }
63131  }
63132
63133  protected void composeVisionPrescriptionLensSpecificationComponent(String name, VisionPrescription.VisionPrescriptionLensSpecificationComponent element) throws IOException {
63134    if (element != null) {
63135    composeElementAttributes(element);
63136      xml.enter(FHIR_NS, name);
63137      composeVisionPrescriptionLensSpecificationComponentElements(element);
63138      composeElementClose(element);
63139      xml.exit(FHIR_NS, name);
63140    }
63141  }
63142
63143  protected void composeVisionPrescriptionLensSpecificationComponentElements(VisionPrescription.VisionPrescriptionLensSpecificationComponent element) throws IOException {
63144    composeBackboneElementElements(element);
63145    if (element.hasProduct()) {
63146      composeCodeableConcept("product", element.getProduct());
63147    }
63148    if (element.hasEyeElement())
63149      composeEnumeration("eye", element.getEyeElement(), new VisionPrescription.VisionEyesEnumFactory());
63150    if (element.hasSphereElement()) {
63151      composeDecimal("sphere", element.getSphereElement());
63152    }
63153    if (element.hasCylinderElement()) {
63154      composeDecimal("cylinder", element.getCylinderElement());
63155    }
63156    if (element.hasAxisElement()) {
63157      composeInteger("axis", element.getAxisElement());
63158    }
63159    if (element.hasPrism()) { 
63160      for (VisionPrescription.PrismComponent e : element.getPrism()) 
63161          composeVisionPrescriptionPrismComponent("prism", e);
63162    }
63163    if (element.hasAddElement()) {
63164      composeDecimal("add", element.getAddElement());
63165    }
63166    if (element.hasPowerElement()) {
63167      composeDecimal("power", element.getPowerElement());
63168    }
63169    if (element.hasBackCurveElement()) {
63170      composeDecimal("backCurve", element.getBackCurveElement());
63171    }
63172    if (element.hasDiameterElement()) {
63173      composeDecimal("diameter", element.getDiameterElement());
63174    }
63175    if (element.hasDuration()) {
63176      composeQuantity("duration", element.getDuration());
63177    }
63178    if (element.hasColorElement()) {
63179      composeString("color", element.getColorElement());
63180    }
63181    if (element.hasBrandElement()) {
63182      composeString("brand", element.getBrandElement());
63183    }
63184    if (element.hasNote()) { 
63185      for (Annotation e : element.getNote()) 
63186          composeAnnotation("note", e);
63187    }
63188  }
63189
63190  protected void composeVisionPrescriptionPrismComponent(String name, VisionPrescription.PrismComponent element) throws IOException {
63191    if (element != null) {
63192    composeElementAttributes(element);
63193      xml.enter(FHIR_NS, name);
63194      composeVisionPrescriptionPrismComponentElements(element);
63195      composeElementClose(element);
63196      xml.exit(FHIR_NS, name);
63197    }
63198  }
63199
63200  protected void composeVisionPrescriptionPrismComponentElements(VisionPrescription.PrismComponent element) throws IOException {
63201    composeBackboneElementElements(element);
63202    if (element.hasAmountElement()) {
63203      composeDecimal("amount", element.getAmountElement());
63204    }
63205    if (element.hasBaseElement())
63206      composeEnumeration("base", element.getBaseElement(), new VisionPrescription.VisionBaseEnumFactory());
63207  }
63208
63209
63210
63211  @Override
63212  protected void composeResource(Resource resource) throws IOException {
63213    if (resource == null) {
63214      throw new IOException("resource == null");
63215    } else if (resource instanceof Account) {
63216      composeAccount("Account", (Account)resource);
63217    } else if (resource instanceof ActivityDefinition) {
63218      composeActivityDefinition("ActivityDefinition", (ActivityDefinition)resource);
63219    } else if (resource instanceof ActorDefinition) {
63220      composeActorDefinition("ActorDefinition", (ActorDefinition)resource);
63221    } else if (resource instanceof AdministrableProductDefinition) {
63222      composeAdministrableProductDefinition("AdministrableProductDefinition", (AdministrableProductDefinition)resource);
63223    } else if (resource instanceof AdverseEvent) {
63224      composeAdverseEvent("AdverseEvent", (AdverseEvent)resource);
63225    } else if (resource instanceof AllergyIntolerance) {
63226      composeAllergyIntolerance("AllergyIntolerance", (AllergyIntolerance)resource);
63227    } else if (resource instanceof Appointment) {
63228      composeAppointment("Appointment", (Appointment)resource);
63229    } else if (resource instanceof AppointmentResponse) {
63230      composeAppointmentResponse("AppointmentResponse", (AppointmentResponse)resource);
63231    } else if (resource instanceof ArtifactAssessment) {
63232      composeArtifactAssessment("ArtifactAssessment", (ArtifactAssessment)resource);
63233    } else if (resource instanceof AuditEvent) {
63234      composeAuditEvent("AuditEvent", (AuditEvent)resource);
63235    } else if (resource instanceof Basic) {
63236      composeBasic("Basic", (Basic)resource);
63237    } else if (resource instanceof Binary) {
63238      composeBinary("Binary", (Binary)resource);
63239    } else if (resource instanceof BiologicallyDerivedProduct) {
63240      composeBiologicallyDerivedProduct("BiologicallyDerivedProduct", (BiologicallyDerivedProduct)resource);
63241    } else if (resource instanceof BiologicallyDerivedProductDispense) {
63242      composeBiologicallyDerivedProductDispense("BiologicallyDerivedProductDispense", (BiologicallyDerivedProductDispense)resource);
63243    } else if (resource instanceof BodyStructure) {
63244      composeBodyStructure("BodyStructure", (BodyStructure)resource);
63245    } else if (resource instanceof Bundle) {
63246      composeBundle("Bundle", (Bundle)resource);
63247    } else if (resource instanceof CapabilityStatement) {
63248      composeCapabilityStatement("CapabilityStatement", (CapabilityStatement)resource);
63249    } else if (resource instanceof CarePlan) {
63250      composeCarePlan("CarePlan", (CarePlan)resource);
63251    } else if (resource instanceof CareTeam) {
63252      composeCareTeam("CareTeam", (CareTeam)resource);
63253    } else if (resource instanceof ChargeItem) {
63254      composeChargeItem("ChargeItem", (ChargeItem)resource);
63255    } else if (resource instanceof ChargeItemDefinition) {
63256      composeChargeItemDefinition("ChargeItemDefinition", (ChargeItemDefinition)resource);
63257    } else if (resource instanceof Citation) {
63258      composeCitation("Citation", (Citation)resource);
63259    } else if (resource instanceof Claim) {
63260      composeClaim("Claim", (Claim)resource);
63261    } else if (resource instanceof ClaimResponse) {
63262      composeClaimResponse("ClaimResponse", (ClaimResponse)resource);
63263    } else if (resource instanceof ClinicalImpression) {
63264      composeClinicalImpression("ClinicalImpression", (ClinicalImpression)resource);
63265    } else if (resource instanceof ClinicalUseDefinition) {
63266      composeClinicalUseDefinition("ClinicalUseDefinition", (ClinicalUseDefinition)resource);
63267    } else if (resource instanceof CodeSystem) {
63268      composeCodeSystem("CodeSystem", (CodeSystem)resource);
63269    } else if (resource instanceof Communication) {
63270      composeCommunication("Communication", (Communication)resource);
63271    } else if (resource instanceof CommunicationRequest) {
63272      composeCommunicationRequest("CommunicationRequest", (CommunicationRequest)resource);
63273    } else if (resource instanceof CompartmentDefinition) {
63274      composeCompartmentDefinition("CompartmentDefinition", (CompartmentDefinition)resource);
63275    } else if (resource instanceof Composition) {
63276      composeComposition("Composition", (Composition)resource);
63277    } else if (resource instanceof ConceptMap) {
63278      composeConceptMap("ConceptMap", (ConceptMap)resource);
63279    } else if (resource instanceof Condition) {
63280      composeCondition("Condition", (Condition)resource);
63281    } else if (resource instanceof ConditionDefinition) {
63282      composeConditionDefinition("ConditionDefinition", (ConditionDefinition)resource);
63283    } else if (resource instanceof Consent) {
63284      composeConsent("Consent", (Consent)resource);
63285    } else if (resource instanceof Contract) {
63286      composeContract("Contract", (Contract)resource);
63287    } else if (resource instanceof Coverage) {
63288      composeCoverage("Coverage", (Coverage)resource);
63289    } else if (resource instanceof CoverageEligibilityRequest) {
63290      composeCoverageEligibilityRequest("CoverageEligibilityRequest", (CoverageEligibilityRequest)resource);
63291    } else if (resource instanceof CoverageEligibilityResponse) {
63292      composeCoverageEligibilityResponse("CoverageEligibilityResponse", (CoverageEligibilityResponse)resource);
63293    } else if (resource instanceof DetectedIssue) {
63294      composeDetectedIssue("DetectedIssue", (DetectedIssue)resource);
63295    } else if (resource instanceof Device) {
63296      composeDevice("Device", (Device)resource);
63297    } else if (resource instanceof DeviceAssociation) {
63298      composeDeviceAssociation("DeviceAssociation", (DeviceAssociation)resource);
63299    } else if (resource instanceof DeviceDefinition) {
63300      composeDeviceDefinition("DeviceDefinition", (DeviceDefinition)resource);
63301    } else if (resource instanceof DeviceDispense) {
63302      composeDeviceDispense("DeviceDispense", (DeviceDispense)resource);
63303    } else if (resource instanceof DeviceMetric) {
63304      composeDeviceMetric("DeviceMetric", (DeviceMetric)resource);
63305    } else if (resource instanceof DeviceRequest) {
63306      composeDeviceRequest("DeviceRequest", (DeviceRequest)resource);
63307    } else if (resource instanceof DeviceUsage) {
63308      composeDeviceUsage("DeviceUsage", (DeviceUsage)resource);
63309    } else if (resource instanceof DiagnosticReport) {
63310      composeDiagnosticReport("DiagnosticReport", (DiagnosticReport)resource);
63311    } else if (resource instanceof DocumentReference) {
63312      composeDocumentReference("DocumentReference", (DocumentReference)resource);
63313    } else if (resource instanceof Encounter) {
63314      composeEncounter("Encounter", (Encounter)resource);
63315    } else if (resource instanceof EncounterHistory) {
63316      composeEncounterHistory("EncounterHistory", (EncounterHistory)resource);
63317    } else if (resource instanceof Endpoint) {
63318      composeEndpoint("Endpoint", (Endpoint)resource);
63319    } else if (resource instanceof EnrollmentRequest) {
63320      composeEnrollmentRequest("EnrollmentRequest", (EnrollmentRequest)resource);
63321    } else if (resource instanceof EnrollmentResponse) {
63322      composeEnrollmentResponse("EnrollmentResponse", (EnrollmentResponse)resource);
63323    } else if (resource instanceof EpisodeOfCare) {
63324      composeEpisodeOfCare("EpisodeOfCare", (EpisodeOfCare)resource);
63325    } else if (resource instanceof EventDefinition) {
63326      composeEventDefinition("EventDefinition", (EventDefinition)resource);
63327    } else if (resource instanceof Evidence) {
63328      composeEvidence("Evidence", (Evidence)resource);
63329    } else if (resource instanceof EvidenceReport) {
63330      composeEvidenceReport("EvidenceReport", (EvidenceReport)resource);
63331    } else if (resource instanceof EvidenceVariable) {
63332      composeEvidenceVariable("EvidenceVariable", (EvidenceVariable)resource);
63333    } else if (resource instanceof ExampleScenario) {
63334      composeExampleScenario("ExampleScenario", (ExampleScenario)resource);
63335    } else if (resource instanceof ExplanationOfBenefit) {
63336      composeExplanationOfBenefit("ExplanationOfBenefit", (ExplanationOfBenefit)resource);
63337    } else if (resource instanceof FamilyMemberHistory) {
63338      composeFamilyMemberHistory("FamilyMemberHistory", (FamilyMemberHistory)resource);
63339    } else if (resource instanceof Flag) {
63340      composeFlag("Flag", (Flag)resource);
63341    } else if (resource instanceof FormularyItem) {
63342      composeFormularyItem("FormularyItem", (FormularyItem)resource);
63343    } else if (resource instanceof GenomicStudy) {
63344      composeGenomicStudy("GenomicStudy", (GenomicStudy)resource);
63345    } else if (resource instanceof Goal) {
63346      composeGoal("Goal", (Goal)resource);
63347    } else if (resource instanceof GraphDefinition) {
63348      composeGraphDefinition("GraphDefinition", (GraphDefinition)resource);
63349    } else if (resource instanceof Group) {
63350      composeGroup("Group", (Group)resource);
63351    } else if (resource instanceof GuidanceResponse) {
63352      composeGuidanceResponse("GuidanceResponse", (GuidanceResponse)resource);
63353    } else if (resource instanceof HealthcareService) {
63354      composeHealthcareService("HealthcareService", (HealthcareService)resource);
63355    } else if (resource instanceof ImagingSelection) {
63356      composeImagingSelection("ImagingSelection", (ImagingSelection)resource);
63357    } else if (resource instanceof ImagingStudy) {
63358      composeImagingStudy("ImagingStudy", (ImagingStudy)resource);
63359    } else if (resource instanceof Immunization) {
63360      composeImmunization("Immunization", (Immunization)resource);
63361    } else if (resource instanceof ImmunizationEvaluation) {
63362      composeImmunizationEvaluation("ImmunizationEvaluation", (ImmunizationEvaluation)resource);
63363    } else if (resource instanceof ImmunizationRecommendation) {
63364      composeImmunizationRecommendation("ImmunizationRecommendation", (ImmunizationRecommendation)resource);
63365    } else if (resource instanceof ImplementationGuide) {
63366      composeImplementationGuide("ImplementationGuide", (ImplementationGuide)resource);
63367    } else if (resource instanceof Ingredient) {
63368      composeIngredient("Ingredient", (Ingredient)resource);
63369    } else if (resource instanceof InsurancePlan) {
63370      composeInsurancePlan("InsurancePlan", (InsurancePlan)resource);
63371    } else if (resource instanceof InventoryItem) {
63372      composeInventoryItem("InventoryItem", (InventoryItem)resource);
63373    } else if (resource instanceof InventoryReport) {
63374      composeInventoryReport("InventoryReport", (InventoryReport)resource);
63375    } else if (resource instanceof Invoice) {
63376      composeInvoice("Invoice", (Invoice)resource);
63377    } else if (resource instanceof Library) {
63378      composeLibrary("Library", (Library)resource);
63379    } else if (resource instanceof Linkage) {
63380      composeLinkage("Linkage", (Linkage)resource);
63381    } else if (resource instanceof ListResource) {
63382      composeListResource("List", (ListResource)resource);
63383    } else if (resource instanceof Location) {
63384      composeLocation("Location", (Location)resource);
63385    } else if (resource instanceof ManufacturedItemDefinition) {
63386      composeManufacturedItemDefinition("ManufacturedItemDefinition", (ManufacturedItemDefinition)resource);
63387    } else if (resource instanceof Measure) {
63388      composeMeasure("Measure", (Measure)resource);
63389    } else if (resource instanceof MeasureReport) {
63390      composeMeasureReport("MeasureReport", (MeasureReport)resource);
63391    } else if (resource instanceof Medication) {
63392      composeMedication("Medication", (Medication)resource);
63393    } else if (resource instanceof MedicationAdministration) {
63394      composeMedicationAdministration("MedicationAdministration", (MedicationAdministration)resource);
63395    } else if (resource instanceof MedicationDispense) {
63396      composeMedicationDispense("MedicationDispense", (MedicationDispense)resource);
63397    } else if (resource instanceof MedicationKnowledge) {
63398      composeMedicationKnowledge("MedicationKnowledge", (MedicationKnowledge)resource);
63399    } else if (resource instanceof MedicationRequest) {
63400      composeMedicationRequest("MedicationRequest", (MedicationRequest)resource);
63401    } else if (resource instanceof MedicationStatement) {
63402      composeMedicationStatement("MedicationStatement", (MedicationStatement)resource);
63403    } else if (resource instanceof MedicinalProductDefinition) {
63404      composeMedicinalProductDefinition("MedicinalProductDefinition", (MedicinalProductDefinition)resource);
63405    } else if (resource instanceof MessageDefinition) {
63406      composeMessageDefinition("MessageDefinition", (MessageDefinition)resource);
63407    } else if (resource instanceof MessageHeader) {
63408      composeMessageHeader("MessageHeader", (MessageHeader)resource);
63409    } else if (resource instanceof MolecularSequence) {
63410      composeMolecularSequence("MolecularSequence", (MolecularSequence)resource);
63411    } else if (resource instanceof NamingSystem) {
63412      composeNamingSystem("NamingSystem", (NamingSystem)resource);
63413    } else if (resource instanceof NutritionIntake) {
63414      composeNutritionIntake("NutritionIntake", (NutritionIntake)resource);
63415    } else if (resource instanceof NutritionOrder) {
63416      composeNutritionOrder("NutritionOrder", (NutritionOrder)resource);
63417    } else if (resource instanceof NutritionProduct) {
63418      composeNutritionProduct("NutritionProduct", (NutritionProduct)resource);
63419    } else if (resource instanceof Observation) {
63420      composeObservation("Observation", (Observation)resource);
63421    } else if (resource instanceof ObservationDefinition) {
63422      composeObservationDefinition("ObservationDefinition", (ObservationDefinition)resource);
63423    } else if (resource instanceof OperationDefinition) {
63424      composeOperationDefinition("OperationDefinition", (OperationDefinition)resource);
63425    } else if (resource instanceof OperationOutcome) {
63426      composeOperationOutcome("OperationOutcome", (OperationOutcome)resource);
63427    } else if (resource instanceof Organization) {
63428      composeOrganization("Organization", (Organization)resource);
63429    } else if (resource instanceof OrganizationAffiliation) {
63430      composeOrganizationAffiliation("OrganizationAffiliation", (OrganizationAffiliation)resource);
63431    } else if (resource instanceof PackagedProductDefinition) {
63432      composePackagedProductDefinition("PackagedProductDefinition", (PackagedProductDefinition)resource);
63433    } else if (resource instanceof Parameters) {
63434      composeParameters("Parameters", (Parameters)resource);
63435    } else if (resource instanceof Patient) {
63436      composePatient("Patient", (Patient)resource);
63437    } else if (resource instanceof PaymentNotice) {
63438      composePaymentNotice("PaymentNotice", (PaymentNotice)resource);
63439    } else if (resource instanceof PaymentReconciliation) {
63440      composePaymentReconciliation("PaymentReconciliation", (PaymentReconciliation)resource);
63441    } else if (resource instanceof Permission) {
63442      composePermission("Permission", (Permission)resource);
63443    } else if (resource instanceof Person) {
63444      composePerson("Person", (Person)resource);
63445    } else if (resource instanceof PlanDefinition) {
63446      composePlanDefinition("PlanDefinition", (PlanDefinition)resource);
63447    } else if (resource instanceof Practitioner) {
63448      composePractitioner("Practitioner", (Practitioner)resource);
63449    } else if (resource instanceof PractitionerRole) {
63450      composePractitionerRole("PractitionerRole", (PractitionerRole)resource);
63451    } else if (resource instanceof Procedure) {
63452      composeProcedure("Procedure", (Procedure)resource);
63453    } else if (resource instanceof Provenance) {
63454      composeProvenance("Provenance", (Provenance)resource);
63455    } else if (resource instanceof Questionnaire) {
63456      composeQuestionnaire("Questionnaire", (Questionnaire)resource);
63457    } else if (resource instanceof QuestionnaireResponse) {
63458      composeQuestionnaireResponse("QuestionnaireResponse", (QuestionnaireResponse)resource);
63459    } else if (resource instanceof RegulatedAuthorization) {
63460      composeRegulatedAuthorization("RegulatedAuthorization", (RegulatedAuthorization)resource);
63461    } else if (resource instanceof RelatedPerson) {
63462      composeRelatedPerson("RelatedPerson", (RelatedPerson)resource);
63463    } else if (resource instanceof RequestOrchestration) {
63464      composeRequestOrchestration("RequestOrchestration", (RequestOrchestration)resource);
63465    } else if (resource instanceof Requirements) {
63466      composeRequirements("Requirements", (Requirements)resource);
63467    } else if (resource instanceof ResearchStudy) {
63468      composeResearchStudy("ResearchStudy", (ResearchStudy)resource);
63469    } else if (resource instanceof ResearchSubject) {
63470      composeResearchSubject("ResearchSubject", (ResearchSubject)resource);
63471    } else if (resource instanceof RiskAssessment) {
63472      composeRiskAssessment("RiskAssessment", (RiskAssessment)resource);
63473    } else if (resource instanceof Schedule) {
63474      composeSchedule("Schedule", (Schedule)resource);
63475    } else if (resource instanceof SearchParameter) {
63476      composeSearchParameter("SearchParameter", (SearchParameter)resource);
63477    } else if (resource instanceof ServiceRequest) {
63478      composeServiceRequest("ServiceRequest", (ServiceRequest)resource);
63479    } else if (resource instanceof Slot) {
63480      composeSlot("Slot", (Slot)resource);
63481    } else if (resource instanceof Specimen) {
63482      composeSpecimen("Specimen", (Specimen)resource);
63483    } else if (resource instanceof SpecimenDefinition) {
63484      composeSpecimenDefinition("SpecimenDefinition", (SpecimenDefinition)resource);
63485    } else if (resource instanceof StructureDefinition) {
63486      composeStructureDefinition("StructureDefinition", (StructureDefinition)resource);
63487    } else if (resource instanceof StructureMap) {
63488      composeStructureMap("StructureMap", (StructureMap)resource);
63489    } else if (resource instanceof Subscription) {
63490      composeSubscription("Subscription", (Subscription)resource);
63491    } else if (resource instanceof SubscriptionStatus) {
63492      composeSubscriptionStatus("SubscriptionStatus", (SubscriptionStatus)resource);
63493    } else if (resource instanceof SubscriptionTopic) {
63494      composeSubscriptionTopic("SubscriptionTopic", (SubscriptionTopic)resource);
63495    } else if (resource instanceof Substance) {
63496      composeSubstance("Substance", (Substance)resource);
63497    } else if (resource instanceof SubstanceDefinition) {
63498      composeSubstanceDefinition("SubstanceDefinition", (SubstanceDefinition)resource);
63499    } else if (resource instanceof SubstanceNucleicAcid) {
63500      composeSubstanceNucleicAcid("SubstanceNucleicAcid", (SubstanceNucleicAcid)resource);
63501    } else if (resource instanceof SubstancePolymer) {
63502      composeSubstancePolymer("SubstancePolymer", (SubstancePolymer)resource);
63503    } else if (resource instanceof SubstanceProtein) {
63504      composeSubstanceProtein("SubstanceProtein", (SubstanceProtein)resource);
63505    } else if (resource instanceof SubstanceReferenceInformation) {
63506      composeSubstanceReferenceInformation("SubstanceReferenceInformation", (SubstanceReferenceInformation)resource);
63507    } else if (resource instanceof SubstanceSourceMaterial) {
63508      composeSubstanceSourceMaterial("SubstanceSourceMaterial", (SubstanceSourceMaterial)resource);
63509    } else if (resource instanceof SupplyDelivery) {
63510      composeSupplyDelivery("SupplyDelivery", (SupplyDelivery)resource);
63511    } else if (resource instanceof SupplyRequest) {
63512      composeSupplyRequest("SupplyRequest", (SupplyRequest)resource);
63513    } else if (resource instanceof Task) {
63514      composeTask("Task", (Task)resource);
63515    } else if (resource instanceof TerminologyCapabilities) {
63516      composeTerminologyCapabilities("TerminologyCapabilities", (TerminologyCapabilities)resource);
63517    } else if (resource instanceof TestPlan) {
63518      composeTestPlan("TestPlan", (TestPlan)resource);
63519    } else if (resource instanceof TestReport) {
63520      composeTestReport("TestReport", (TestReport)resource);
63521    } else if (resource instanceof TestScript) {
63522      composeTestScript("TestScript", (TestScript)resource);
63523    } else if (resource instanceof Transport) {
63524      composeTransport("Transport", (Transport)resource);
63525    } else if (resource instanceof ValueSet) {
63526      composeValueSet("ValueSet", (ValueSet)resource);
63527    } else if (resource instanceof VerificationResult) {
63528      composeVerificationResult("VerificationResult", (VerificationResult)resource);
63529    } else if (resource instanceof VisionPrescription) {
63530      composeVisionPrescription("VisionPrescription", (VisionPrescription)resource);
63531      
63532    } else {
63533      throw new Error("Unhandled resource type "+resource.getClass().getName());
63534    }
63535  }
63536
63537  protected void composeResource(String name, Resource resource) throws IOException {
63538    if (name == null) {
63539      throw new IOException("name == null");
63540    } else if (resource == null) {
63541      throw new IOException("resource == null");
63542    } else if (resource instanceof Account) {
63543      composeAccount(name, (Account)resource);
63544    } else if (resource instanceof ActivityDefinition) {
63545      composeActivityDefinition(name, (ActivityDefinition)resource);
63546    } else if (resource instanceof ActorDefinition) {
63547      composeActorDefinition(name, (ActorDefinition)resource);
63548    } else if (resource instanceof AdministrableProductDefinition) {
63549      composeAdministrableProductDefinition(name, (AdministrableProductDefinition)resource);
63550    } else if (resource instanceof AdverseEvent) {
63551      composeAdverseEvent(name, (AdverseEvent)resource);
63552    } else if (resource instanceof AllergyIntolerance) {
63553      composeAllergyIntolerance(name, (AllergyIntolerance)resource);
63554    } else if (resource instanceof Appointment) {
63555      composeAppointment(name, (Appointment)resource);
63556    } else if (resource instanceof AppointmentResponse) {
63557      composeAppointmentResponse(name, (AppointmentResponse)resource);
63558    } else if (resource instanceof ArtifactAssessment) {
63559      composeArtifactAssessment(name, (ArtifactAssessment)resource);
63560    } else if (resource instanceof AuditEvent) {
63561      composeAuditEvent(name, (AuditEvent)resource);
63562    } else if (resource instanceof Basic) {
63563      composeBasic(name, (Basic)resource);
63564    } else if (resource instanceof Binary) {
63565      composeBinary(name, (Binary)resource);
63566    } else if (resource instanceof BiologicallyDerivedProduct) {
63567      composeBiologicallyDerivedProduct(name, (BiologicallyDerivedProduct)resource);
63568    } else if (resource instanceof BiologicallyDerivedProductDispense) {
63569      composeBiologicallyDerivedProductDispense(name, (BiologicallyDerivedProductDispense)resource);
63570    } else if (resource instanceof BodyStructure) {
63571      composeBodyStructure(name, (BodyStructure)resource);
63572    } else if (resource instanceof Bundle) {
63573      composeBundle(name, (Bundle)resource);
63574    } else if (resource instanceof CapabilityStatement) {
63575      composeCapabilityStatement(name, (CapabilityStatement)resource);
63576    } else if (resource instanceof CarePlan) {
63577      composeCarePlan(name, (CarePlan)resource);
63578    } else if (resource instanceof CareTeam) {
63579      composeCareTeam(name, (CareTeam)resource);
63580    } else if (resource instanceof ChargeItem) {
63581      composeChargeItem(name, (ChargeItem)resource);
63582    } else if (resource instanceof ChargeItemDefinition) {
63583      composeChargeItemDefinition(name, (ChargeItemDefinition)resource);
63584    } else if (resource instanceof Citation) {
63585      composeCitation(name, (Citation)resource);
63586    } else if (resource instanceof Claim) {
63587      composeClaim(name, (Claim)resource);
63588    } else if (resource instanceof ClaimResponse) {
63589      composeClaimResponse(name, (ClaimResponse)resource);
63590    } else if (resource instanceof ClinicalImpression) {
63591      composeClinicalImpression(name, (ClinicalImpression)resource);
63592    } else if (resource instanceof ClinicalUseDefinition) {
63593      composeClinicalUseDefinition(name, (ClinicalUseDefinition)resource);
63594    } else if (resource instanceof CodeSystem) {
63595      composeCodeSystem(name, (CodeSystem)resource);
63596    } else if (resource instanceof Communication) {
63597      composeCommunication(name, (Communication)resource);
63598    } else if (resource instanceof CommunicationRequest) {
63599      composeCommunicationRequest(name, (CommunicationRequest)resource);
63600    } else if (resource instanceof CompartmentDefinition) {
63601      composeCompartmentDefinition(name, (CompartmentDefinition)resource);
63602    } else if (resource instanceof Composition) {
63603      composeComposition(name, (Composition)resource);
63604    } else if (resource instanceof ConceptMap) {
63605      composeConceptMap(name, (ConceptMap)resource);
63606    } else if (resource instanceof Condition) {
63607      composeCondition(name, (Condition)resource);
63608    } else if (resource instanceof ConditionDefinition) {
63609      composeConditionDefinition(name, (ConditionDefinition)resource);
63610    } else if (resource instanceof Consent) {
63611      composeConsent(name, (Consent)resource);
63612    } else if (resource instanceof Contract) {
63613      composeContract(name, (Contract)resource);
63614    } else if (resource instanceof Coverage) {
63615      composeCoverage(name, (Coverage)resource);
63616    } else if (resource instanceof CoverageEligibilityRequest) {
63617      composeCoverageEligibilityRequest(name, (CoverageEligibilityRequest)resource);
63618    } else if (resource instanceof CoverageEligibilityResponse) {
63619      composeCoverageEligibilityResponse(name, (CoverageEligibilityResponse)resource);
63620    } else if (resource instanceof DetectedIssue) {
63621      composeDetectedIssue(name, (DetectedIssue)resource);
63622    } else if (resource instanceof Device) {
63623      composeDevice(name, (Device)resource);
63624    } else if (resource instanceof DeviceAssociation) {
63625      composeDeviceAssociation(name, (DeviceAssociation)resource);
63626    } else if (resource instanceof DeviceDefinition) {
63627      composeDeviceDefinition(name, (DeviceDefinition)resource);
63628    } else if (resource instanceof DeviceDispense) {
63629      composeDeviceDispense(name, (DeviceDispense)resource);
63630    } else if (resource instanceof DeviceMetric) {
63631      composeDeviceMetric(name, (DeviceMetric)resource);
63632    } else if (resource instanceof DeviceRequest) {
63633      composeDeviceRequest(name, (DeviceRequest)resource);
63634    } else if (resource instanceof DeviceUsage) {
63635      composeDeviceUsage(name, (DeviceUsage)resource);
63636    } else if (resource instanceof DiagnosticReport) {
63637      composeDiagnosticReport(name, (DiagnosticReport)resource);
63638    } else if (resource instanceof DocumentReference) {
63639      composeDocumentReference(name, (DocumentReference)resource);
63640    } else if (resource instanceof Encounter) {
63641      composeEncounter(name, (Encounter)resource);
63642    } else if (resource instanceof EncounterHistory) {
63643      composeEncounterHistory(name, (EncounterHistory)resource);
63644    } else if (resource instanceof Endpoint) {
63645      composeEndpoint(name, (Endpoint)resource);
63646    } else if (resource instanceof EnrollmentRequest) {
63647      composeEnrollmentRequest(name, (EnrollmentRequest)resource);
63648    } else if (resource instanceof EnrollmentResponse) {
63649      composeEnrollmentResponse(name, (EnrollmentResponse)resource);
63650    } else if (resource instanceof EpisodeOfCare) {
63651      composeEpisodeOfCare(name, (EpisodeOfCare)resource);
63652    } else if (resource instanceof EventDefinition) {
63653      composeEventDefinition(name, (EventDefinition)resource);
63654    } else if (resource instanceof Evidence) {
63655      composeEvidence(name, (Evidence)resource);
63656    } else if (resource instanceof EvidenceReport) {
63657      composeEvidenceReport(name, (EvidenceReport)resource);
63658    } else if (resource instanceof EvidenceVariable) {
63659      composeEvidenceVariable(name, (EvidenceVariable)resource);
63660    } else if (resource instanceof ExampleScenario) {
63661      composeExampleScenario(name, (ExampleScenario)resource);
63662    } else if (resource instanceof ExplanationOfBenefit) {
63663      composeExplanationOfBenefit(name, (ExplanationOfBenefit)resource);
63664    } else if (resource instanceof FamilyMemberHistory) {
63665      composeFamilyMemberHistory(name, (FamilyMemberHistory)resource);
63666    } else if (resource instanceof Flag) {
63667      composeFlag(name, (Flag)resource);
63668    } else if (resource instanceof FormularyItem) {
63669      composeFormularyItem(name, (FormularyItem)resource);
63670    } else if (resource instanceof GenomicStudy) {
63671      composeGenomicStudy(name, (GenomicStudy)resource);
63672    } else if (resource instanceof Goal) {
63673      composeGoal(name, (Goal)resource);
63674    } else if (resource instanceof GraphDefinition) {
63675      composeGraphDefinition(name, (GraphDefinition)resource);
63676    } else if (resource instanceof Group) {
63677      composeGroup(name, (Group)resource);
63678    } else if (resource instanceof GuidanceResponse) {
63679      composeGuidanceResponse(name, (GuidanceResponse)resource);
63680    } else if (resource instanceof HealthcareService) {
63681      composeHealthcareService(name, (HealthcareService)resource);
63682    } else if (resource instanceof ImagingSelection) {
63683      composeImagingSelection(name, (ImagingSelection)resource);
63684    } else if (resource instanceof ImagingStudy) {
63685      composeImagingStudy(name, (ImagingStudy)resource);
63686    } else if (resource instanceof Immunization) {
63687      composeImmunization(name, (Immunization)resource);
63688    } else if (resource instanceof ImmunizationEvaluation) {
63689      composeImmunizationEvaluation(name, (ImmunizationEvaluation)resource);
63690    } else if (resource instanceof ImmunizationRecommendation) {
63691      composeImmunizationRecommendation(name, (ImmunizationRecommendation)resource);
63692    } else if (resource instanceof ImplementationGuide) {
63693      composeImplementationGuide(name, (ImplementationGuide)resource);
63694    } else if (resource instanceof Ingredient) {
63695      composeIngredient(name, (Ingredient)resource);
63696    } else if (resource instanceof InsurancePlan) {
63697      composeInsurancePlan(name, (InsurancePlan)resource);
63698    } else if (resource instanceof InventoryItem) {
63699      composeInventoryItem(name, (InventoryItem)resource);
63700    } else if (resource instanceof InventoryReport) {
63701      composeInventoryReport(name, (InventoryReport)resource);
63702    } else if (resource instanceof Invoice) {
63703      composeInvoice(name, (Invoice)resource);
63704    } else if (resource instanceof Library) {
63705      composeLibrary(name, (Library)resource);
63706    } else if (resource instanceof Linkage) {
63707      composeLinkage(name, (Linkage)resource);
63708    } else if (resource instanceof ListResource) {
63709      composeListResource(name, (ListResource)resource);
63710    } else if (resource instanceof Location) {
63711      composeLocation(name, (Location)resource);
63712    } else if (resource instanceof ManufacturedItemDefinition) {
63713      composeManufacturedItemDefinition(name, (ManufacturedItemDefinition)resource);
63714    } else if (resource instanceof Measure) {
63715      composeMeasure(name, (Measure)resource);
63716    } else if (resource instanceof MeasureReport) {
63717      composeMeasureReport(name, (MeasureReport)resource);
63718    } else if (resource instanceof Medication) {
63719      composeMedication(name, (Medication)resource);
63720    } else if (resource instanceof MedicationAdministration) {
63721      composeMedicationAdministration(name, (MedicationAdministration)resource);
63722    } else if (resource instanceof MedicationDispense) {
63723      composeMedicationDispense(name, (MedicationDispense)resource);
63724    } else if (resource instanceof MedicationKnowledge) {
63725      composeMedicationKnowledge(name, (MedicationKnowledge)resource);
63726    } else if (resource instanceof MedicationRequest) {
63727      composeMedicationRequest(name, (MedicationRequest)resource);
63728    } else if (resource instanceof MedicationStatement) {
63729      composeMedicationStatement(name, (MedicationStatement)resource);
63730    } else if (resource instanceof MedicinalProductDefinition) {
63731      composeMedicinalProductDefinition(name, (MedicinalProductDefinition)resource);
63732    } else if (resource instanceof MessageDefinition) {
63733      composeMessageDefinition(name, (MessageDefinition)resource);
63734    } else if (resource instanceof MessageHeader) {
63735      composeMessageHeader(name, (MessageHeader)resource);
63736    } else if (resource instanceof MolecularSequence) {
63737      composeMolecularSequence(name, (MolecularSequence)resource);
63738    } else if (resource instanceof NamingSystem) {
63739      composeNamingSystem(name, (NamingSystem)resource);
63740    } else if (resource instanceof NutritionIntake) {
63741      composeNutritionIntake(name, (NutritionIntake)resource);
63742    } else if (resource instanceof NutritionOrder) {
63743      composeNutritionOrder(name, (NutritionOrder)resource);
63744    } else if (resource instanceof NutritionProduct) {
63745      composeNutritionProduct(name, (NutritionProduct)resource);
63746    } else if (resource instanceof Observation) {
63747      composeObservation(name, (Observation)resource);
63748    } else if (resource instanceof ObservationDefinition) {
63749      composeObservationDefinition(name, (ObservationDefinition)resource);
63750    } else if (resource instanceof OperationDefinition) {
63751      composeOperationDefinition(name, (OperationDefinition)resource);
63752    } else if (resource instanceof OperationOutcome) {
63753      composeOperationOutcome(name, (OperationOutcome)resource);
63754    } else if (resource instanceof Organization) {
63755      composeOrganization(name, (Organization)resource);
63756    } else if (resource instanceof OrganizationAffiliation) {
63757      composeOrganizationAffiliation(name, (OrganizationAffiliation)resource);
63758    } else if (resource instanceof PackagedProductDefinition) {
63759      composePackagedProductDefinition(name, (PackagedProductDefinition)resource);
63760    } else if (resource instanceof Parameters) {
63761      composeParameters(name, (Parameters)resource);
63762    } else if (resource instanceof Patient) {
63763      composePatient(name, (Patient)resource);
63764    } else if (resource instanceof PaymentNotice) {
63765      composePaymentNotice(name, (PaymentNotice)resource);
63766    } else if (resource instanceof PaymentReconciliation) {
63767      composePaymentReconciliation(name, (PaymentReconciliation)resource);
63768    } else if (resource instanceof Permission) {
63769      composePermission(name, (Permission)resource);
63770    } else if (resource instanceof Person) {
63771      composePerson(name, (Person)resource);
63772    } else if (resource instanceof PlanDefinition) {
63773      composePlanDefinition(name, (PlanDefinition)resource);
63774    } else if (resource instanceof Practitioner) {
63775      composePractitioner(name, (Practitioner)resource);
63776    } else if (resource instanceof PractitionerRole) {
63777      composePractitionerRole(name, (PractitionerRole)resource);
63778    } else if (resource instanceof Procedure) {
63779      composeProcedure(name, (Procedure)resource);
63780    } else if (resource instanceof Provenance) {
63781      composeProvenance(name, (Provenance)resource);
63782    } else if (resource instanceof Questionnaire) {
63783      composeQuestionnaire(name, (Questionnaire)resource);
63784    } else if (resource instanceof QuestionnaireResponse) {
63785      composeQuestionnaireResponse(name, (QuestionnaireResponse)resource);
63786    } else if (resource instanceof RegulatedAuthorization) {
63787      composeRegulatedAuthorization(name, (RegulatedAuthorization)resource);
63788    } else if (resource instanceof RelatedPerson) {
63789      composeRelatedPerson(name, (RelatedPerson)resource);
63790    } else if (resource instanceof RequestOrchestration) {
63791      composeRequestOrchestration(name, (RequestOrchestration)resource);
63792    } else if (resource instanceof Requirements) {
63793      composeRequirements(name, (Requirements)resource);
63794    } else if (resource instanceof ResearchStudy) {
63795      composeResearchStudy(name, (ResearchStudy)resource);
63796    } else if (resource instanceof ResearchSubject) {
63797      composeResearchSubject(name, (ResearchSubject)resource);
63798    } else if (resource instanceof RiskAssessment) {
63799      composeRiskAssessment(name, (RiskAssessment)resource);
63800    } else if (resource instanceof Schedule) {
63801      composeSchedule(name, (Schedule)resource);
63802    } else if (resource instanceof SearchParameter) {
63803      composeSearchParameter(name, (SearchParameter)resource);
63804    } else if (resource instanceof ServiceRequest) {
63805      composeServiceRequest(name, (ServiceRequest)resource);
63806    } else if (resource instanceof Slot) {
63807      composeSlot(name, (Slot)resource);
63808    } else if (resource instanceof Specimen) {
63809      composeSpecimen(name, (Specimen)resource);
63810    } else if (resource instanceof SpecimenDefinition) {
63811      composeSpecimenDefinition(name, (SpecimenDefinition)resource);
63812    } else if (resource instanceof StructureDefinition) {
63813      composeStructureDefinition(name, (StructureDefinition)resource);
63814    } else if (resource instanceof StructureMap) {
63815      composeStructureMap(name, (StructureMap)resource);
63816    } else if (resource instanceof Subscription) {
63817      composeSubscription(name, (Subscription)resource);
63818    } else if (resource instanceof SubscriptionStatus) {
63819      composeSubscriptionStatus(name, (SubscriptionStatus)resource);
63820    } else if (resource instanceof SubscriptionTopic) {
63821      composeSubscriptionTopic(name, (SubscriptionTopic)resource);
63822    } else if (resource instanceof Substance) {
63823      composeSubstance(name, (Substance)resource);
63824    } else if (resource instanceof SubstanceDefinition) {
63825      composeSubstanceDefinition(name, (SubstanceDefinition)resource);
63826    } else if (resource instanceof SubstanceNucleicAcid) {
63827      composeSubstanceNucleicAcid(name, (SubstanceNucleicAcid)resource);
63828    } else if (resource instanceof SubstancePolymer) {
63829      composeSubstancePolymer(name, (SubstancePolymer)resource);
63830    } else if (resource instanceof SubstanceProtein) {
63831      composeSubstanceProtein(name, (SubstanceProtein)resource);
63832    } else if (resource instanceof SubstanceReferenceInformation) {
63833      composeSubstanceReferenceInformation(name, (SubstanceReferenceInformation)resource);
63834    } else if (resource instanceof SubstanceSourceMaterial) {
63835      composeSubstanceSourceMaterial(name, (SubstanceSourceMaterial)resource);
63836    } else if (resource instanceof SupplyDelivery) {
63837      composeSupplyDelivery(name, (SupplyDelivery)resource);
63838    } else if (resource instanceof SupplyRequest) {
63839      composeSupplyRequest(name, (SupplyRequest)resource);
63840    } else if (resource instanceof Task) {
63841      composeTask(name, (Task)resource);
63842    } else if (resource instanceof TerminologyCapabilities) {
63843      composeTerminologyCapabilities(name, (TerminologyCapabilities)resource);
63844    } else if (resource instanceof TestPlan) {
63845      composeTestPlan(name, (TestPlan)resource);
63846    } else if (resource instanceof TestReport) {
63847      composeTestReport(name, (TestReport)resource);
63848    } else if (resource instanceof TestScript) {
63849      composeTestScript(name, (TestScript)resource);
63850    } else if (resource instanceof Transport) {
63851      composeTransport(name, (Transport)resource);
63852    } else if (resource instanceof ValueSet) {
63853      composeValueSet(name, (ValueSet)resource);
63854    } else if (resource instanceof VerificationResult) {
63855      composeVerificationResult(name, (VerificationResult)resource);
63856    } else if (resource instanceof VisionPrescription) {
63857      composeVisionPrescription(name, (VisionPrescription)resource);
63858      
63859    } else {
63860      throw new Error("Unhandled resource type "+resource.getClass().getName());
63861    }
63862  }
63863
63864  protected void composeType(String prefix, DataType type) throws IOException {
63865    if (prefix == null) {
63866      throw new IOException("prefix == null");
63867    } else if (type == null) {
63868      throw new IOException("type == null");
63869    } else if (type instanceof Address) {
63870       composeAddress(prefix+"Address", (Address) type);
63871    } else if (type instanceof Age) {
63872       composeAge(prefix+"Age", (Age) type);
63873    } else if (type instanceof Annotation) {
63874       composeAnnotation(prefix+"Annotation", (Annotation) type);
63875    } else if (type instanceof Attachment) {
63876       composeAttachment(prefix+"Attachment", (Attachment) type);
63877    } else if (type instanceof Availability) {
63878       composeAvailability(prefix+"Availability", (Availability) type);
63879    } else if (type instanceof CodeableConcept) {
63880       composeCodeableConcept(prefix+"CodeableConcept", (CodeableConcept) type);
63881    } else if (type instanceof CodeableReference) {
63882       composeCodeableReference(prefix+"CodeableReference", (CodeableReference) type);
63883    } else if (type instanceof Coding) {
63884       composeCoding(prefix+"Coding", (Coding) type);
63885    } else if (type instanceof ContactDetail) {
63886       composeContactDetail(prefix+"ContactDetail", (ContactDetail) type);
63887    } else if (type instanceof ContactPoint) {
63888       composeContactPoint(prefix+"ContactPoint", (ContactPoint) type);
63889    } else if (type instanceof Contributor) {
63890       composeContributor(prefix+"Contributor", (Contributor) type);
63891    } else if (type instanceof Count) {
63892       composeCount(prefix+"Count", (Count) type);
63893    } else if (type instanceof DataRequirement) {
63894       composeDataRequirement(prefix+"DataRequirement", (DataRequirement) type);
63895    } else if (type instanceof Distance) {
63896       composeDistance(prefix+"Distance", (Distance) type);
63897    } else if (type instanceof Dosage) {
63898       composeDosage(prefix+"Dosage", (Dosage) type);
63899    } else if (type instanceof Duration) {
63900       composeDuration(prefix+"Duration", (Duration) type);
63901    } else if (type instanceof ElementDefinition) {
63902       composeElementDefinition(prefix+"ElementDefinition", (ElementDefinition) type);
63903    } else if (type instanceof Expression) {
63904       composeExpression(prefix+"Expression", (Expression) type);
63905    } else if (type instanceof ExtendedContactDetail) {
63906       composeExtendedContactDetail(prefix+"ExtendedContactDetail", (ExtendedContactDetail) type);
63907    } else if (type instanceof Extension) {
63908       composeExtension(prefix+"Extension", (Extension) type);
63909    } else if (type instanceof HumanName) {
63910       composeHumanName(prefix+"HumanName", (HumanName) type);
63911    } else if (type instanceof Identifier) {
63912       composeIdentifier(prefix+"Identifier", (Identifier) type);
63913    } else if (type instanceof MarketingStatus) {
63914       composeMarketingStatus(prefix+"MarketingStatus", (MarketingStatus) type);
63915    } else if (type instanceof Meta) {
63916       composeMeta(prefix+"Meta", (Meta) type);
63917    } else if (type instanceof MonetaryComponent) {
63918       composeMonetaryComponent(prefix+"MonetaryComponent", (MonetaryComponent) type);
63919    } else if (type instanceof Money) {
63920       composeMoney(prefix+"Money", (Money) type);
63921    } else if (type instanceof Narrative) {
63922       composeNarrative(prefix+"Narrative", (Narrative) type);
63923    } else if (type instanceof ParameterDefinition) {
63924       composeParameterDefinition(prefix+"ParameterDefinition", (ParameterDefinition) type);
63925    } else if (type instanceof Period) {
63926       composePeriod(prefix+"Period", (Period) type);
63927    } else if (type instanceof ProductShelfLife) {
63928       composeProductShelfLife(prefix+"ProductShelfLife", (ProductShelfLife) type);
63929    } else if (type instanceof Quantity) {
63930       composeQuantity(prefix+"Quantity", (Quantity) type);
63931    } else if (type instanceof Range) {
63932       composeRange(prefix+"Range", (Range) type);
63933    } else if (type instanceof Ratio) {
63934       composeRatio(prefix+"Ratio", (Ratio) type);
63935    } else if (type instanceof RatioRange) {
63936       composeRatioRange(prefix+"RatioRange", (RatioRange) type);
63937    } else if (type instanceof Reference) {
63938       composeReference(prefix+"Reference", (Reference) type);
63939    } else if (type instanceof RelatedArtifact) {
63940       composeRelatedArtifact(prefix+"RelatedArtifact", (RelatedArtifact) type);
63941    } else if (type instanceof SampledData) {
63942       composeSampledData(prefix+"SampledData", (SampledData) type);
63943    } else if (type instanceof Signature) {
63944       composeSignature(prefix+"Signature", (Signature) type);
63945    } else if (type instanceof Timing) {
63946       composeTiming(prefix+"Timing", (Timing) type);
63947    } else if (type instanceof TriggerDefinition) {
63948       composeTriggerDefinition(prefix+"TriggerDefinition", (TriggerDefinition) type);
63949    } else if (type instanceof UsageContext) {
63950       composeUsageContext(prefix+"UsageContext", (UsageContext) type);
63951    } else if (type instanceof VirtualServiceDetail) {
63952       composeVirtualServiceDetail(prefix+"VirtualServiceDetail", (VirtualServiceDetail) type);
63953
63954    } else if (type instanceof CodeType) {
63955       composeCode(prefix+"Code", (CodeType) type);
63956    } else if (type instanceof OidType) {
63957       composeOid(prefix+"Oid", (OidType) type);
63958    } else if (type instanceof CanonicalType) {
63959       composeCanonical(prefix+"Canonical", (CanonicalType) type);
63960    } else if (type instanceof UuidType) {
63961       composeUuid(prefix+"Uuid", (UuidType) type);
63962    } else if (type instanceof UrlType) {
63963       composeUrl(prefix+"Url", (UrlType) type);
63964    } else if (type instanceof UnsignedIntType) {
63965       composeUnsignedInt(prefix+"UnsignedInt", (UnsignedIntType) type);
63966    } else if (type instanceof MarkdownType) {
63967       composeMarkdown(prefix+"Markdown", (MarkdownType) type);
63968    } else if (type instanceof IdType) {
63969       composeId(prefix+"Id", (IdType) type);
63970    } else if (type instanceof PositiveIntType) {
63971       composePositiveInt(prefix+"PositiveInt", (PositiveIntType) type);
63972    } else if (type instanceof DateType) {
63973       composeDate(prefix+"Date", (DateType) type);
63974    } else if (type instanceof DateTimeType) {
63975       composeDateTime(prefix+"DateTime", (DateTimeType) type);
63976    } else if (type instanceof StringType) {
63977       composeString(prefix+"String", (StringType) type);
63978    } else if (type instanceof IntegerType) {
63979      composeInteger(prefix+"Integer", (IntegerType) type);
63980    } else if (type instanceof Integer64Type) {
63981      composeInteger64(prefix+"Integer64", (Integer64Type) type);
63982    } else if (type instanceof UriType) {
63983       composeUri(prefix+"Uri", (UriType) type);
63984    } else if (type instanceof InstantType) {
63985       composeInstant(prefix+"Instant", (InstantType) type);
63986    } else if (type instanceof BooleanType) {
63987       composeBoolean(prefix+"Boolean", (BooleanType) type);
63988    } else if (type instanceof Base64BinaryType) {
63989       composeBase64Binary(prefix+"Base64Binary", (Base64BinaryType) type);
63990    } else if (type instanceof TimeType) {
63991       composeTime(prefix+"Time", (TimeType) type);
63992    } else if (type instanceof DecimalType) {
63993       composeDecimal(prefix+"Decimal", (DecimalType) type);
63994    } else {
63995      throw new Error("Unhandled type "+type.fhirType());
63996    }
63997  }
63998
63999}